@ckeditor/ckeditor5-image 48.3.1 → 48.4.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/image/utils.ts","../src/imageutils.ts","../src/autoimage.ts","../src/imagetextalternative/imagetextalternativecommand.ts","../src/imagetextalternative/imagetextalternativeediting.ts","../src/imagetextalternative/ui/textalternativeformview.ts","../src/image/ui/utils.ts","../src/imagetextalternative/imagetextalternativeui.ts","../src/imagetextalternative.ts","../src/image/converters.ts","../src/image/imageloadobserver.ts","../src/image/insertimagecommand.ts","../src/image/replaceimagesourcecommand.ts","../src/image/imageediting.ts","../src/imagesizeattributes.ts","../src/image/imagetypecommand.ts","../src/image/imageplaceholder.ts","../src/image/imageblockediting.ts","../src/imageinsert/ui/imageinsertformview.ts","../src/imageinsert/imageinsertui.ts","../src/imageblock.ts","../src/image/imageinlineediting.ts","../src/imageinline.ts","../src/image.ts","../src/imagecaption/imagecaptionutils.ts","../src/imagecaption/toggleimagecaptioncommand.ts","../src/imagecaption/imagecaptionediting.ts","../src/imagecaption/imagecaptionui.ts","../src/imagecaption.ts","../src/imageupload/utils.ts","../src/imageupload/imageuploadui.ts","../src/imageupload/imageuploadprogress.ts","../src/imageupload/uploadimagecommand.ts","../src/imageupload/imageuploadediting.ts","../src/imageupload.ts","../src/imageinsert/ui/imageinserturlview.ts","../src/imageinsert/imageinsertviaurlui.ts","../src/imageinsertviaurl.ts","../src/imageinsert.ts","../src/imageresize/resizeimagecommand.ts","../src/imageresize/imageresizeediting.ts","../src/imageresize/imageresizebuttons.ts","../src/imageresize/imageresizehandles.ts","../src/imageresize/utils/getselectedimageeditornodes.ts","../src/imageresize/utils/getselectedimagewidthinunits.ts","../src/imageresize/ui/imagecustomresizeformview.ts","../src/imageresize/utils/getselectedimagepossibleresizerange.ts","../src/imageresize/imagecustomresizeui.ts","../src/imageresize.ts","../src/imagestyle/imagestylecommand.ts","../src/imagestyle/utils.ts","../src/imagestyle/converters.ts","../src/imagestyle/imagestyleediting.ts","../src/imagestyle/imagestyleui.ts","../src/imagestyle.ts","../src/imagetoolbar.ts","../src/pictureediting.ts"],"names":["isParagraphable"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from \"@ckeditor/ckeditor5-core\";\nimport { Clipboard, ClipboardPipeline } from \"@ckeditor/ckeditor5-clipboard\";\nimport { ModelElement, ModelLivePosition, ModelLiveRange, Observer, ViewUpcastWriter, _isParagraphableModelNode, enableViewPlaceholder } from \"@ckeditor/ckeditor5-engine\";\nimport { Undo } from \"@ckeditor/ckeditor5-undo\";\nimport { Delete } from \"@ckeditor/ckeditor5-typing\";\nimport { CKEditorError, Collection, DomEmitterMixin, FocusTracker, KeystrokeHandler, Rect, _tryCastDimensionsToUnit, _tryParseDimensionWithUnit, env, first, global, logWarning, toArray } from \"@ckeditor/ckeditor5-utils\";\nimport { Widget, WidgetResize, WidgetToolbarRepository, calculateResizeHostAncestorWidth, findOptimalInsertionRange, isWidget, toWidget, toWidgetEditable } from \"@ckeditor/ckeditor5-widget\";\nimport { BalloonPanelView, ButtonView, CollapsibleView, ContextualBalloon, CssTransitionDisablerMixin, Dialog, DropdownButtonView, FileDialogButtonView, FocusCycler, FormHeaderView, FormRowView, LabeledFieldView, MenuBarMenuListItemButtonView, MenuBarMenuListItemFileDialogButtonView, MenuBarMenuListItemView, MenuBarMenuListView, MenuBarMenuView, Notification, SplitButtonView, UIModel, View, ViewCollection, addListToDropdown, addToolbarToDropdown, clickOutsideHandler, createDropdown, createLabeledInputNumber, createLabeledInputText, submitHandler } from \"@ckeditor/ckeditor5-ui\";\nimport { IconCaption, IconImage, IconImageUpload, IconImageUrl, IconObjectCenter, IconObjectFullWidth, IconObjectInline, IconObjectInlineLeft, IconObjectInlineRight, IconObjectLeft, IconObjectRight, IconObjectSizeCustom, IconObjectSizeFull, IconObjectSizeLarge, IconObjectSizeMedium, IconObjectSizeSmall, IconPreviousArrow, IconTextAlternative } from \"@ckeditor/ckeditor5-icons\";\nimport { FileRepository } from \"@ckeditor/ckeditor5-upload\";\nimport { identity, isEqual, isObject } from \"es-toolkit/compat\";\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/utils\n*/\n/**\n* Creates a view element representing the inline image.\n*\n* ```html\n* <span class=\"image-inline\"><img></img></span>\n* ```\n*\n* Note that `alt` and `src` attributes are converted separately, so they are not included.\n*\n* @internal\n*/\nfunction createInlineImageViewElement(writer) {\n\treturn writer.createContainerElement(\"span\", { class: \"image-inline\" }, writer.createEmptyElement(\"img\"));\n}\n/**\n* Creates a view element representing the block image.\n*\n* ```html\n* <figure class=\"image\"><img></img></figure>\n* ```\n*\n* Note that `alt` and `src` attributes are converted separately, so they are not included.\n*\n* @internal\n*/\nfunction createBlockImageViewElement(writer) {\n\treturn writer.createContainerElement(\"figure\", { class: \"image\" }, [writer.createEmptyElement(\"img\"), writer.createSlot(\"children\")]);\n}\n/**\n* A function returning a `MatcherPattern` for a particular type of View images.\n*\n* @deprecated\n* @internal\n* @param matchImageType The type of created image.\n*/\nfunction getImgViewElementMatcher(editor, matchImageType) {\n\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\tconst areBothImagePluginsLoaded = editor.plugins.has(\"ImageInlineEditing\") && editor.plugins.has(\"ImageBlockEditing\");\n\treturn (element) => {\n\t\tif (!imageUtils.isInlineImageView(element)) return null;\n\t\tif (!areBothImagePluginsLoaded) return getPositiveMatchPattern(element);\n\t\tif (getViewImageType(element, imageUtils) !== matchImageType) return null;\n\t\treturn getPositiveMatchPattern(element);\n\t};\n\tfunction getPositiveMatchPattern(element) {\n\t\tconst pattern = { name: true };\n\t\tif (element.hasAttribute(\"src\")) pattern.attributes = [\"src\"];\n\t\treturn pattern;\n\t}\n}\n/**\n* Resolves the model image type (`'imageBlock'` or `'imageInline'`) that a given `<img>` view element represents,\n* based purely on its view structure.\n*\n* An `<img>` is treated as a block image when it has a `display: block` style or is wrapped in a block image figure\n* (`<figure class=\"image\">`, also `<figure class=\"image\"><a>...</a></figure>` added by the `LinkImage` plugin).\n* Otherwise it is treated as an inline image.\n*\n* Note that this only reflects the view representation - it does not check whether the resolved type is allowed by the\n* schema at the insertion position.\n*\n* @internal\n* @param element The `<img>` view element to resolve the type for.\n* @param imageUtils The `ImageUtils` plugin instance.\n*/\nfunction getViewImageType(element, imageUtils) {\n\treturn element.getStyle(\"display\") == \"block\" || element.findAncestor(imageUtils.isBlockImageView) ? \"imageBlock\" : \"imageInline\";\n}\n/**\n* Checks whether the given image type can be placed at the specified position - either directly (or after hoisting\n* to an allowed ancestor) or, for inline images, wrapped in an auto-created paragraph.\n*\n* This is the predicate that decides whether a block image may land at a position or must degrade to an inline image\n* (for example, inside an `$inlineRoot` that disallows block content) and, symmetrically, whether an inline image may\n* become a block image. `isParagraphable()` is always `false` for `imageBlock` (a block object never fits in a\n* paragraph), so the auto-paragraph relaxation only applies to the inline target.\n*\n* @internal\n* @param schema The model schema to check against.\n* @param position The position at which the image type should be placed.\n* @param imageType The image type to check.\n*/\nfunction isImageTypePlaceable(schema, position, imageType) {\n\treturn !!schema.findAllowedParent(position, imageType) || _isParagraphableModelNode(position, imageType, schema);\n}\n/**\n* Considering the current model selection, it returns the name of the model image element\n* (`'imageBlock'` or `'imageInline'`) that will make most sense from the UX perspective if a new\n* image was inserted (also: uploaded, dropped, pasted) at that selection.\n*\n* The assumption is that inserting images into empty blocks or on other block widgets should\n* produce block images. Inline images should be inserted in other cases, e.g. in paragraphs\n* that already contain some text.\n*\n* @internal\n*/\nfunction determineImageTypeForInsertionAtSelection(schema, selection) {\n\tconst firstBlock = first(selection.getSelectedBlocks());\n\tif (!firstBlock || schema.isObject(firstBlock)) return \"imageBlock\";\n\tif (firstBlock.isEmpty && firstBlock.name != \"listItem\") return \"imageBlock\";\n\treturn \"imageInline\";\n}\n/**\n* Returns parsed value of the size, but only if it contains unit: px.\n*\n* @internal\n*/\nfunction getSizeValueIfInPx(size) {\n\tif (size && size.endsWith(\"px\")) return parseInt(size);\n\treturn null;\n}\n/**\n* Returns true if both styles (width and height) are set.\n*\n* If both image styles: width & height are set, they will override the image width & height attributes in the\n* browser. In this case, the image looks the same as if these styles were applied to attributes instead of styles.\n* That's why we can upcast these styles to width & height attributes instead of resizedWidth and resizedHeight.\n*\n* @internal\n*/\nfunction widthAndHeightStylesAreBothSet(viewElement) {\n\tconst widthStyle = getSizeValueIfInPx(viewElement.getStyle(\"width\"));\n\tconst heightStyle = getSizeValueIfInPx(viewElement.getStyle(\"height\"));\n\treturn !!(widthStyle && heightStyle);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\nconst IMAGE_WIDGETS_CLASSES_MATCH_REGEXP = /^(image|image-inline)$/;\n/**\n* A set of helpers related to images.\n*/\nvar ImageUtils = class extends Plugin {\n\t/**\n\t* DOM Emitter.\n\t*/\n\t_domEmitter = new (DomEmitterMixin())();\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUtils\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* Checks if the provided model element is an `image` or `imageInline`.\n\t*/\n\tisImage(modelElement) {\n\t\treturn this.isInlineImage(modelElement) || this.isBlockImage(modelElement);\n\t}\n\t/**\n\t* Checks if the provided view element represents an inline image.\n\t*\n\t* Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t*/\n\tisInlineImageView(element) {\n\t\treturn !!element && element.is(\"element\", \"img\");\n\t}\n\t/**\n\t* Checks if the provided view element represents a block image.\n\t*\n\t* Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t*/\n\tisBlockImageView(element) {\n\t\treturn !!element && element.is(\"element\", \"figure\") && element.hasClass(\"image\");\n\t}\n\t/**\n\t* Handles inserting single file. This method unifies image insertion using {@link module:widget/utils~findOptimalInsertionRange}\n\t* method.\n\t*\n\t* ```ts\n\t* const imageUtils = editor.plugins.get( 'ImageUtils' );\n\t*\n\t* imageUtils.insertImage( { src: 'path/to/image.jpg' } );\n\t* ```\n\t*\n\t* @param attributes Attributes of the inserted image.\n\t* This method filters out the attributes which are disallowed by the {@link module:engine/model/schema~ModelSchema}.\n\t* @param selectable Place to insert the image. If not specified,\n\t* the {@link module:widget/utils~findOptimalInsertionRange} logic will be applied for the block images\n\t* and `model.document.selection` for the inline images.\n\t*\n\t* **Note**: If `selectable` is passed, this helper will not be able to set selection attributes (such as `linkHref`)\n\t* and apply them to the new image. In this case, make sure all selection attributes are passed in `attributes`.\n\t*\n\t* @param imageType Image type of inserted image. If not specified,\n\t* it will be determined automatically depending of editor config or place of the insertion.\n\t* @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t* The default is `true`.\n\t* @return The inserted model image element.\n\t*/\n\tinsertImage(attributes = {}, selectable = null, imageType = null, options = {}) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst determinedImageType = determineImageTypeForInsertion(editor, selectable || selection, imageType);\n\t\tattributes = {\n\t\t\t...Object.fromEntries(selection.getAttributes()),\n\t\t\t...attributes\n\t\t};\n\t\tfor (const attributeName in attributes) if (!model.schema.checkAttribute(determinedImageType, attributeName)) delete attributes[attributeName];\n\t\treturn model.change((writer) => {\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tconst imageElement = writer.createElement(determinedImageType, attributes);\n\t\t\tmodel.insertObject(imageElement, selectable, null, {\n\t\t\t\tsetSelection: \"on\",\n\t\t\t\tfindOptimalPosition: !selectable && determinedImageType != \"imageInline\" ? \"auto\" : void 0\n\t\t\t});\n\t\t\tif (imageElement.parent) {\n\t\t\t\tif (setImageSizes) this.setImageNaturalSizeAttributes(imageElement);\n\t\t\t\treturn imageElement;\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\t/**\n\t* Reads original image sizes and sets them as `width` and `height`.\n\t*\n\t* The `src` attribute may not be available if the user is using an upload adapter. In such a case,\n\t* this method is called again after the upload process is complete and the `src` attribute is available.\n\t*/\n\tsetImageNaturalSizeAttributes(imageElement) {\n\t\tconst src = imageElement.getAttribute(\"src\");\n\t\tif (!src) return;\n\t\tif (imageElement.getAttribute(\"width\") || imageElement.getAttribute(\"height\")) return;\n\t\tthis.editor.model.change((writer) => {\n\t\t\tconst img = new global.window.Image();\n\t\t\tthis._domEmitter.listenTo(img, \"load\", () => {\n\t\t\t\tif (!imageElement.getAttribute(\"width\") && !imageElement.getAttribute(\"height\")) this.editor.model.enqueueChange(writer.batch, (writer) => {\n\t\t\t\t\twriter.setAttribute(\"width\", img.naturalWidth, imageElement);\n\t\t\t\t\twriter.setAttribute(\"height\", img.naturalHeight, imageElement);\n\t\t\t\t});\n\t\t\t\tthis._domEmitter.stopListening(img, \"load\");\n\t\t\t});\n\t\t\timg.src = src;\n\t\t});\n\t}\n\t/**\n\t* Returns an image widget editing view element if one is selected or is among the selection's ancestors.\n\t*/\n\tgetClosestSelectedImageWidget(selection) {\n\t\tconst selectionPosition = selection.getFirstPosition();\n\t\tif (!selectionPosition) return null;\n\t\tconst viewElement = selection.getSelectedElement();\n\t\tif (viewElement && this.isImageWidget(viewElement)) return viewElement;\n\t\tlet parent = selectionPosition.parent;\n\t\twhile (parent) {\n\t\t\tif (parent.is(\"element\") && this.isImageWidget(parent)) return parent;\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn null;\n\t}\n\t/**\n\t* Returns a image model element if one is selected or is among the selection's ancestors.\n\t*/\n\tgetClosestSelectedImageElement(selection) {\n\t\tconst selectedElement = selection.getSelectedElement();\n\t\treturn this.isImage(selectedElement) ? selectedElement : selection.getFirstPosition().findAncestor(\"imageBlock\");\n\t}\n\t/**\n\t* Returns an image widget editing view based on the passed image view.\n\t*/\n\tgetImageWidgetFromImageView(imageView) {\n\t\treturn imageView.findAncestor({ classes: IMAGE_WIDGETS_CLASSES_MATCH_REGEXP });\n\t}\n\t/**\n\t* Checks if image can be inserted at current model selection.\n\t*\n\t* @internal\n\t*/\n\tisImageAllowed() {\n\t\tconst selection = this.editor.model.document.selection;\n\t\treturn isImageAllowedInParent(this.editor, selection) && isNotInsideImage(selection);\n\t}\n\t/**\n\t* Converts a given {@link module:engine/view/element~ViewElement} to an image widget:\n\t* * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to recognize the image widget\n\t* element.\n\t* * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n\t*\n\t* @param writer An instance of the view writer.\n\t* @param label The element's label. It will be concatenated with the image `alt` attribute if one is present.\n\t*/\n\ttoImageWidget(viewElement, writer, label) {\n\t\twriter.setCustomProperty(\"image\", true, viewElement);\n\t\tconst labelCreator = () => {\n\t\t\tconst altText = this.findViewImgElement(viewElement).getAttribute(\"alt\");\n\t\t\treturn altText ? `${altText} ${label}` : label;\n\t\t};\n\t\treturn toWidget(viewElement, writer, { label: labelCreator });\n\t}\n\t/**\n\t* Checks if a given view element is an image widget.\n\t*/\n\tisImageWidget(viewElement) {\n\t\treturn !!viewElement.getCustomProperty(\"image\") && isWidget(viewElement);\n\t}\n\t/**\n\t* Checks if the provided model element is an `image`.\n\t*/\n\tisBlockImage(modelElement) {\n\t\treturn !!modelElement && modelElement.is(\"element\", \"imageBlock\");\n\t}\n\t/**\n\t* Checks if the provided model element is an `imageInline`.\n\t*/\n\tisInlineImage(modelElement) {\n\t\treturn !!modelElement && modelElement.is(\"element\", \"imageInline\");\n\t}\n\t/**\n\t* Get the view `<img>` from another view element, e.g. a widget (`<figure class=\"image\">`), a link (`<a>`).\n\t*\n\t* The `<img>` can be located deep in other elements, so this helper performs a deep tree search.\n\t*/\n\tfindViewImgElement(figureView) {\n\t\tif (this.isInlineImageView(figureView)) return figureView;\n\t\tconst editingView = this.editor.editing.view;\n\t\tfor (const { item } of editingView.createRangeIn(figureView)) if (this.isInlineImageView(item)) return item;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tthis._domEmitter.stopListening();\n\t\treturn super.destroy();\n\t}\n};\n/**\n* Checks if image is allowed by schema in optimal insertion parent.\n*/\nfunction isImageAllowedInParent(editor, selection) {\n\tif (determineImageTypeForInsertion(editor, selection, null) == \"imageBlock\") return isBlockImageAllowedAtInsertion(editor.model, selection);\n\treturn editor.model.schema.checkChild(selection.focus, \"imageInline\");\n}\n/**\n* Checks if selection is not placed inside an image (e.g. its caption).\n*/\nfunction isNotInsideImage(selection) {\n\treturn [...selection.focus.getAncestors()].every((ancestor) => !ancestor.is(\"element\", \"imageBlock\"));\n}\n/**\n* Returns a node that will be used to insert image with `model.insertContent`.\n*/\nfunction getInsertImageParent(selection, model) {\n\tconst parent = findOptimalInsertionRange(selection, model).start.parent;\n\tif (parent.isEmpty && !parent.is(\"rootElement\")) return parent.parent;\n\treturn parent;\n}\n/**\n* Checks whether a block image is allowed by the schema at the optimal insertion point for the given selectable\n* (e.g. it is not allowed inside `$inlineRoot` or any other inline-only container).\n*/\nfunction isBlockImageAllowedAtInsertion(model, selectable) {\n\tconst insertionParent = getInsertImageParent(selectable.is(\"position\") ? model.createSelection(selectable) : selectable, model);\n\treturn model.schema.checkChild(insertionParent, \"imageBlock\");\n}\n/**\n* Determine image element type name depending on editor config or place of insertion.\n*\n* @param imageType Image element type name. Used to force return of provided element name,\n* but only if there is proper plugin enabled.\n*/\nfunction determineImageTypeForInsertion(editor, selectable, imageType) {\n\tconst schema = editor.model.schema;\n\tconst configImageInsertType = editor.config.get(\"image.insert.type\");\n\tif (!editor.plugins.has(\"ImageBlockEditing\")) return \"imageInline\";\n\tif (!editor.plugins.has(\"ImageInlineEditing\")) return \"imageBlock\";\n\tif (imageType) return imageType;\n\tif (!isBlockImageAllowedAtInsertion(editor.model, selectable)) return \"imageInline\";\n\tif (configImageInsertType === \"inline\") return \"imageInline\";\n\tif (configImageInsertType !== \"auto\") return \"imageBlock\";\n\tif (selectable.is(\"selection\")) return determineImageTypeForInsertionAtSelection(schema, selectable);\n\treturn schema.checkChild(selectable, \"imageInline\") ? \"imageInline\" : \"imageBlock\";\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/autoimage\n*/\nconst IMAGE_URL_REGEXP = 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));\n/**\n* The auto-image plugin. It recognizes image links in the pasted content and embeds\n* them shortly after they are injected into the document.\n*/\nvar AutoImage = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tClipboard,\n\t\t\tImageUtils,\n\t\t\tUndo,\n\t\t\tDelete\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"AutoImage\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* The paste–to–embed `setTimeout` ID. Stored as a property to allow\n\t* cleaning of the timeout.\n\t*/\n\t_timeoutId;\n\t/**\n\t* The position where the `<imageBlock>` element will be inserted after the timeout,\n\t* determined each time a new content is pasted into the document.\n\t*/\n\t_positionToInsert;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis._timeoutId = null;\n\t\tthis._positionToInsert = null;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", () => {\n\t\t\tconst firstRange = modelDocument.selection.getFirstRange();\n\t\t\tconst leftLivePosition = ModelLivePosition.fromPosition(firstRange.start);\n\t\t\tleftLivePosition.stickiness = \"toPrevious\";\n\t\t\tconst rightLivePosition = ModelLivePosition.fromPosition(firstRange.end);\n\t\t\trightLivePosition.stickiness = \"toNext\";\n\t\t\tmodelDocument.once(\"change:data\", () => {\n\t\t\t\tthis._embedImageBetweenPositions(leftLivePosition, rightLivePosition);\n\t\t\t\tleftLivePosition.detach();\n\t\t\t\trightLivePosition.detach();\n\t\t\t}, { priority: \"high\" });\n\t\t});\n\t\teditor.commands.get(\"undo\").on(\"execute\", () => {\n\t\t\tif (this._timeoutId) {\n\t\t\t\tglobal.window.clearTimeout(this._timeoutId);\n\t\t\t\tthis._positionToInsert.detach();\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t}\n\t\t}, { priority: \"high\" });\n\t}\n\t/**\n\t* Analyzes the part of the document between provided positions in search for a URL representing an image.\n\t* When the URL is found, it is automatically converted into an image.\n\t*\n\t* @param leftPosition Left position of the selection.\n\t* @param rightPosition Right position of the selection.\n\t*/\n\t_embedImageBetweenPositions(leftPosition, rightPosition) {\n\t\tconst editor = this.editor;\n\t\tconst urlRange = new ModelLiveRange(leftPosition, rightPosition);\n\t\tconst walker = urlRange.getWalker({ ignoreElementEnd: true });\n\t\tconst selectionAttributes = Object.fromEntries(editor.model.document.selection.getAttributes());\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tlet src = \"\";\n\t\tfor (const node of walker) if (node.item.is(\"$textProxy\")) src += node.item.data;\n\t\tsrc = src.trim();\n\t\tif (!src.match(IMAGE_URL_REGEXP)) {\n\t\t\turlRange.detach();\n\t\t\treturn;\n\t\t}\n\t\tthis._positionToInsert = ModelLivePosition.fromPosition(leftPosition);\n\t\tthis._timeoutId = setTimeout(() => {\n\t\t\tif (!editor.commands.get(\"insertImage\").isEnabled) {\n\t\t\t\turlRange.detach();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\teditor.model.change((writer) => {\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\twriter.remove(urlRange);\n\t\t\t\turlRange.detach();\n\t\t\t\tlet insertionPosition;\n\t\t\t\tif (this._positionToInsert.root.rootName !== \"$graveyard\") insertionPosition = this._positionToInsert.toPosition();\n\t\t\t\timageUtils.insertImage({\n\t\t\t\t\t...selectionAttributes,\n\t\t\t\t\tsrc\n\t\t\t\t}, insertionPosition);\n\t\t\t\tthis._positionToInsert.detach();\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t});\n\t\t\teditor.plugins.get(\"Delete\").requestUndoOnBackspace();\n\t\t}, 100);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/imagetextalternativecommand\n*/\n/**\n* The image text alternative command. It is used to change the `alt` attribute of `<imageBlock>` and `<imageInline>` model elements.\n*/\nvar ImageTextAlternativeCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst element = this.editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(this.editor.model.document.selection);\n\t\tthis.isEnabled = !!element;\n\t\tif (this.isEnabled && element.hasAttribute(\"alt\")) this.value = element.getAttribute(\"alt\");\n\t\telse this.value = false;\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options\n\t* @param options.newValue The new value of the `alt` attribute to set.\n\t*/\n\texecute(options) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst model = editor.model;\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tmodel.change((writer) => {\n\t\t\twriter.setAttribute(\"alt\", options.newValue, imageElement);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/imagetextalternativeediting\n*/\n/**\n* The image text alternative editing plugin.\n*\n* Registers the `'imageTextAlternative'` command.\n*/\nvar ImageTextAlternativeEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageTextAlternativeEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tthis.editor.commands.add(\"imageTextAlternative\", new ImageTextAlternativeCommand(this.editor));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/ui/textalternativeformview\n*/\n/**\n* The TextAlternativeFormView class.\n*\n* @internal\n*/\nvar TextAlternativeFormView = class extends View {\n\t/**\n\t* Tracks information about the DOM focus in the form.\n\t*/\n\tfocusTracker;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* An input with a label.\n\t*/\n\tlabeledInput;\n\t/**\n\t* The Back button view displayed in the header.\n\t*/\n\tbackButtonView;\n\t/**\n\t* A button used to submit the form.\n\t*/\n\tsaveButtonView;\n\t/**\n\t* A collection of child views.\n\t*/\n\tchildren;\n\t/**\n\t* A collection of views which can be focused in the form.\n\t*/\n\t_focusables;\n\t/**\n\t* Helps cycling over {@link #_focusables} in the form.\n\t*/\n\t_focusCycler;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(locale) {\n\t\tsuper(locale);\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\t\tthis.labeledInput = this._createLabeledInputView();\n\t\tthis.children = this.createCollection([this._createHeaderView()]);\n\t\tthis.children.add(new FormRowView(locale, {\n\t\t\tchildren: [this.labeledInput, this.saveButtonView],\n\t\t\tclass: [\"ck-form__row_with-submit\", \"ck-form__row_large-top-padding\"]\n\t\t}));\n\t\tthis._focusables = new ViewCollection();\n\t\tthis.keystrokes.set(\"Esc\", (data, cancel) => {\n\t\t\tthis.fire(\"cancel\");\n\t\t\tcancel();\n\t\t});\n\t\tthis._focusCycler = new FocusCycler({\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\tfocusPrevious: \"shift + tab\",\n\t\t\t\tfocusNext: \"tab\"\n\t\t\t}\n\t\t});\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t\"ck\",\n\t\t\t\t\t\"ck-form\",\n\t\t\t\t\t\"ck-text-alternative-form\",\n\t\t\t\t\t\"ck-responsive-form\"\n\t\t\t\t],\n\t\t\t\ttabindex: \"-1\"\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\t[\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t].forEach((v) => {\n\t\t\tthis._focusables.add(v);\n\t\t\tthis.focusTracker.add(v.element);\n\t\t});\n\t\tthis.keystrokes.listenTo(this.element);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Creates a back button view that cancels the form.\n\t*/\n\t_createBackButton() {\n\t\tconst t = this.locale.t;\n\t\tconst backButton = new ButtonView(this.locale);\n\t\tbackButton.set({\n\t\t\tclass: \"ck-button-back\",\n\t\t\tlabel: t(\"Back\"),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t});\n\t\tbackButton.delegate(\"execute\").to(this, \"cancel\");\n\t\treturn backButton;\n\t}\n\t/**\n\t* Creates a save button view that text alternative the image.\n\t*/\n\t_createSaveButton() {\n\t\tconst t = this.locale.t;\n\t\tconst saveButton = new ButtonView(this.locale);\n\t\tsaveButton.set({\n\t\t\tlabel: t(\"Save\"),\n\t\t\twithText: true,\n\t\t\ttype: \"submit\",\n\t\t\tclass: \"ck-button-action ck-button-bold\"\n\t\t});\n\t\treturn saveButton;\n\t}\n\t/**\n\t* Creates a header view for the form.\n\t*/\n\t_createHeaderView() {\n\t\tconst t = this.locale.t;\n\t\tconst header = new FormHeaderView(this.locale, { label: t(\"Text Alternative\") });\n\t\theader.children.add(this.backButtonView, 0);\n\t\treturn header;\n\t}\n\t/**\n\t* Creates an input with a label.\n\t*\n\t* @returns Labeled field view instance.\n\t*/\n\t_createLabeledInputView() {\n\t\tconst t = this.locale.t;\n\t\tconst labeledInput = new LabeledFieldView(this.locale, createLabeledInputText);\n\t\tlabeledInput.label = t(\"Text alternative\");\n\t\tlabeledInput.class = \"ck-labeled-field-view_full-width\";\n\t\treturn labeledInput;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* A helper utility that positions the\n* {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} instance\n* with respect to the image in the editor content, if one is selected.\n*\n* @param editor The editor instance.\n* @internal\n*/\nfunction repositionContextualBalloon(editor) {\n\tconst balloon = editor.plugins.get(\"ContextualBalloon\");\n\tif (editor.plugins.get(\"ImageUtils\").getClosestSelectedImageWidget(editor.editing.view.document.selection)) {\n\t\tconst position = getBalloonPositionData(editor);\n\t\tballoon.updatePosition(position);\n\t}\n}\n/**\n* Returns the positioning options that control the geometry of the\n* {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} with respect\n* to the selected element in the editor content.\n*\n* @param editor The editor instance.\n* @internal\n*/\nfunction getBalloonPositionData(editor) {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom(imageUtils.getClosestSelectedImageWidget(editingView.document.selection)),\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/imagetextalternativeui\n*/\n/**\n* The image text alternative UI plugin.\n*\n* The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n*/\nvar ImageTextAlternativeUI = class extends Plugin {\n\t/**\n\t* The contextual balloon plugin instance.\n\t*/\n\t_balloon;\n\t/**\n\t* A form containing a textarea and buttons, used to change the `alt` text value.\n\t*/\n\t_form;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ContextualBalloon];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageTextAlternativeUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tthis._createButton();\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tif (this._form) this._form.destroy();\n\t}\n\t/**\n\t* Creates a button showing the balloon panel for changing the image text alternative and\n\t* registers it in the editor {@link module:ui/componentfactory~ComponentFactory ComponentFactory}.\n\t*/\n\t_createButton() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\teditor.ui.componentFactory.add(\"imageTextAlternative\", (locale) => {\n\t\t\tconst command = editor.commands.get(\"imageTextAlternative\");\n\t\t\tconst view = new ButtonView(locale);\n\t\t\tview.set({\n\t\t\t\tlabel: t(\"Change image text alternative\"),\n\t\t\t\ticon: IconTextAlternative,\n\t\t\t\ttooltip: true\n\t\t\t});\n\t\t\tview.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\t\tview.bind(\"isOn\").to(command, \"value\", (value) => !!value);\n\t\t\tthis.listenTo(view, \"execute\", () => {\n\t\t\t\tthis._showForm();\n\t\t\t});\n\t\t\treturn view;\n\t\t});\n\t}\n\t/**\n\t* Creates the {@link module:image/imagetextalternative/ui/textalternativeformview~TextAlternativeFormView}\n\t* form.\n\t*/\n\t_createForm() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tthis._balloon = this.editor.plugins.get(\"ContextualBalloon\");\n\t\tthis._form = new (CssTransitionDisablerMixin(TextAlternativeFormView))(editor.locale);\n\t\tthis._form.render();\n\t\tthis.listenTo(this._form, \"submit\", () => {\n\t\t\teditor.execute(\"imageTextAlternative\", { newValue: this._form.labeledInput.fieldView.element.value });\n\t\t\tthis._hideForm(true);\n\t\t});\n\t\tthis.listenTo(this._form, \"cancel\", () => {\n\t\t\tthis._hideForm(true);\n\t\t});\n\t\tthis.listenTo(editor.ui, \"update\", () => {\n\t\t\tif (!imageUtils.getClosestSelectedImageWidget(viewDocument.selection)) this._hideForm(true);\n\t\t\telse if (this._isVisible) repositionContextualBalloon(editor);\n\t\t});\n\t\tclickOutsideHandler({\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [this._balloon.view.element],\n\t\t\tcallback: () => this._hideForm()\n\t\t});\n\t}\n\t/**\n\t* Shows the {@link #_form} in the {@link #_balloon}.\n\t*/\n\t_showForm() {\n\t\tif (this._isVisible) return;\n\t\tif (!this._form) this._createForm();\n\t\tconst editor = this.editor;\n\t\tconst command = editor.commands.get(\"imageTextAlternative\");\n\t\tconst labeledInput = this._form.labeledInput;\n\t\tthis._form.disableCssTransitions();\n\t\tif (!this._isInBalloon) this._balloon.add({\n\t\t\tview: this._form,\n\t\t\tposition: getBalloonPositionData(editor)\n\t\t});\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element.value = command.value || \"\";\n\t\tthis._form.labeledInput.fieldView.select();\n\t\tthis._form.enableCssTransitions();\n\t}\n\t/**\n\t* Removes the {@link #_form} from the {@link #_balloon}.\n\t*\n\t* @param focusEditable Controls whether the editing view is focused afterwards.\n\t*/\n\t_hideForm(focusEditable = false) {\n\t\tif (!this._isInBalloon) return;\n\t\tif (this._form.focusTracker.isFocused) this._form.saveButtonView.focus();\n\t\tthis._balloon.remove(this._form);\n\t\tif (focusEditable) this.editor.editing.view.focus();\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t*/\n\tget _isVisible() {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t*/\n\tget _isInBalloon() {\n\t\treturn !!this._balloon && this._balloon.hasView(this._form);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative\n*/\n/**\n* The image text alternative plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-styles image styles} documentation.\n*\n* This is a \"glue\" plugin which loads the\n* {@link module:image/imagetextalternative/imagetextalternativeediting~ImageTextAlternativeEditing}\n* and {@link module:image/imagetextalternative/imagetextalternativeui~ImageTextAlternativeUI} plugins.\n*/\nvar ImageTextAlternative = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageTextAlternativeEditing, ImageTextAlternativeUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageTextAlternative\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Returns a function that converts the image view representation:\n*\n* ```html\n* <figure class=\"image\"><img src=\"...\" alt=\"...\"></img></figure>\n* ```\n*\n* to the model representation:\n*\n* ```html\n* <imageBlock src=\"...\" alt=\"...\"></imageBlock>\n* ```\n*\n* The entire content of the `<figure>` element except the first `<img>` is being converted as children\n* of the `<imageBlock>` model element.\n*\n* @internal\n*/\nfunction upcastImageFigure(imageUtils) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.test(data.viewItem, {\n\t\t\tname: true,\n\t\t\tclasses: \"image\"\n\t\t})) return;\n\t\tconst viewImage = imageUtils.findViewImgElement(data.viewItem);\n\t\tif (!viewImage || !conversionApi.consumable.test(viewImage, { name: true })) return;\n\t\tif (!isImageTypePlaceable(conversionApi.schema, data.modelCursor, \"imageBlock\")) return;\n\t\tconversionApi.consumable.consume(data.viewItem, {\n\t\t\tname: true,\n\t\t\tclasses: \"image\"\n\t\t});\n\t\tconst conversionResult = conversionApi.convertItem(viewImage, data.modelCursor);\n\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\tif (!conversionResult.modelRange) {\n\t\t\tconversionApi.consumable.revert(data.viewItem, {\n\t\t\t\tname: true,\n\t\t\t\tclasses: \"image\"\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst modelImage = first(conversionResult.modelRange.getItems());\n\t\tif (!modelImage) {\n\t\t\tconversionApi.consumable.revert(data.viewItem, {\n\t\t\t\tname: true,\n\t\t\t\tclasses: \"image\"\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconversionApi.convertChildren(data.viewItem, modelImage);\n\t\tconversionApi.updateConversionResult(modelImage, data);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"element:figure\", converter);\n\t};\n}\n/**\n* Returns a function that upcasts an `<img>` element to either an `imageBlock` or an `imageInline` model element.\n*\n* The image type is first determined from the view structure (see {@link module:image/image/utils~getViewImageType}):\n* an `<img>` wrapped in a `<figure class=\"image\">` or styled with `display: block` becomes an `imageBlock`, otherwise\n* an `imageInline`.\n*\n* That structural type is then verified against the schema at the insertion position. If it cannot be placed there -\n* neither directly (or after hoisting to an allowed ancestor) nor wrapped in an auto-created paragraph - the converter\n* falls back to `matchImageType`. This is what allows a block image to degrade to an inline image inside an inline root\n* (and, symmetrically, an inline image to become a block image in a context that only accepts block images) instead of\n* being dropped.\n*\n* Both `ImageBlockEditing` and `ImageInlineEditing` register this converter, each passing the type it falls back to.\n* When only one of them is loaded, that single type is always produced.\n*\n* @internal\n* @param matchImageType The image type to fall back to when the type resolved from the view cannot be placed at the\n* insertion position.\n* @param imageUtils The `ImageUtils` plugin instance.\n*/\nfunction upcastImg(matchImageType, imageUtils) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tlet imageType = getViewImageType(data.viewItem, imageUtils);\n\t\tconst attributes = data.viewItem.hasAttribute(\"src\") ? { src: data.viewItem.getAttribute(\"src\") } : void 0;\n\t\tconst consumables = {\n\t\t\tname: true,\n\t\t\tattributes: Object.keys(attributes || {})\n\t\t};\n\t\tif (!conversionApi.consumable.test(data.viewItem, consumables)) return;\n\t\tif (imageType != matchImageType && !isImageTypePlaceable(conversionApi.schema, data.modelCursor, imageType)) imageType = matchImageType;\n\t\tconst modelElement = conversionApi.writer.createElement(imageType, attributes);\n\t\tif (!conversionApi.safeInsert(modelElement, data.modelCursor)) return;\n\t\tconversionApi.consumable.consume(data.viewItem, consumables);\n\t\tconversionApi.convertChildren(data.viewItem, modelElement);\n\t\tconversionApi.updateConversionResult(modelElement, data);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"element:img\", converter);\n\t};\n}\n/**\n* Returns a function that converts the image view representation:\n*\n* ```html\n* <picture><source ... /><source ... />...<img ... /></picture>\n* ```\n*\n* to the model representation as the `sources` attribute:\n*\n* ```html\n* <image[Block|Inline] ... sources=\"...\"></image[Block|Inline]>\n* ```\n*\n* @internal\n*/\nfunction upcastPicture(imageUtils) {\n\tconst sourceAttributeNames = [\n\t\t\"srcset\",\n\t\t\"media\",\n\t\t\"type\",\n\t\t\"sizes\"\n\t];\n\tconst converter = (evt, data, conversionApi) => {\n\t\tconst pictureViewElement = data.viewItem;\n\t\tif (!conversionApi.consumable.test(pictureViewElement, { name: true })) return;\n\t\tconst sources = /* @__PURE__ */ new Map();\n\t\tfor (const childSourceElement of pictureViewElement.getChildren()) if (childSourceElement.is(\"element\", \"source\")) {\n\t\t\tconst attributes = {};\n\t\t\tfor (const name of sourceAttributeNames) if (childSourceElement.hasAttribute(name)) {\n\t\t\t\tif (conversionApi.consumable.test(childSourceElement, { attributes: name })) attributes[name] = childSourceElement.getAttribute(name);\n\t\t\t}\n\t\t\tif (Object.keys(attributes).length) sources.set(childSourceElement, attributes);\n\t\t}\n\t\tconst imgViewElement = imageUtils.findViewImgElement(pictureViewElement);\n\t\tif (!imgViewElement) return;\n\t\tlet modelImage = data.modelCursor.parent;\n\t\tif (!modelImage.is(\"element\", \"imageBlock\")) {\n\t\t\tconst conversionResult = conversionApi.convertItem(imgViewElement, data.modelCursor);\n\t\t\tdata.modelRange = conversionResult.modelRange;\n\t\t\tdata.modelCursor = conversionResult.modelCursor;\n\t\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\t\tif (!conversionResult.modelRange) return;\n\t\t\tmodelImage = first(conversionResult.modelRange.getItems());\n\t\t\tif (!modelImage) return;\n\t\t}\n\t\tconversionApi.consumable.consume(pictureViewElement, { name: true });\n\t\tfor (const [sourceElement, attributes] of sources) conversionApi.consumable.consume(sourceElement, { attributes: Object.keys(attributes) });\n\t\tif (sources.size) conversionApi.writer.setAttribute(\"sources\", Array.from(sources.values()), modelImage);\n\t\tconversionApi.convertChildren(pictureViewElement, modelImage);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"element:picture\", converter);\n\t};\n}\n/**\n* Converter used to convert the `srcset` model image attribute to the `srcset` and `sizes` attributes in the view.\n*\n* @internal\n* @param imageType The type of the image.\n*/\nfunction downcastSrcsetAttribute(imageUtils, imageType) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst writer = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\tconst img = imageUtils.findViewImgElement(element);\n\t\tif (data.attributeNewValue === null) {\n\t\t\twriter.removeAttribute(\"srcset\", img);\n\t\t\twriter.removeAttribute(\"sizes\", img);\n\t\t} else if (data.attributeNewValue) {\n\t\t\twriter.setAttribute(\"srcset\", data.attributeNewValue, img);\n\t\t\twriter.setAttribute(\"sizes\", \"100vw\", img);\n\t\t}\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(`attribute:srcset:${imageType}`, converter);\n\t};\n}\n/**\n* Converts the `source` model attribute to the `<picture><source /><source />...<img /></picture>`\n* view structure.\n*\n* @internal\n*/\nfunction downcastSourcesAttribute(imageUtils) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\tconst imgElement = imageUtils.findViewImgElement(element);\n\t\tconst attributeNewValue = data.attributeNewValue;\n\t\tif (attributeNewValue && attributeNewValue.length) {\n\t\t\tconst attributeElements = [];\n\t\t\tlet viewElement = imgElement.parent;\n\t\t\twhile (viewElement && viewElement.is(\"attributeElement\")) {\n\t\t\t\tconst parentElement = viewElement.parent;\n\t\t\t\tviewWriter.unwrap(viewWriter.createRangeOn(imgElement), viewElement);\n\t\t\t\tattributeElements.unshift(viewElement);\n\t\t\t\tviewElement = parentElement;\n\t\t\t}\n\t\t\tconst hasPictureElement = imgElement.parent.is(\"element\", \"picture\");\n\t\t\tconst pictureElement = hasPictureElement ? imgElement.parent : viewWriter.createContainerElement(\"picture\", null);\n\t\t\tif (!hasPictureElement) viewWriter.insert(viewWriter.createPositionBefore(imgElement), pictureElement);\n\t\t\tviewWriter.remove(viewWriter.createRangeIn(pictureElement));\n\t\t\tviewWriter.insert(viewWriter.createPositionAt(pictureElement, \"end\"), attributeNewValue.map((sourceAttributes) => {\n\t\t\t\treturn viewWriter.createEmptyElement(\"source\", sourceAttributes);\n\t\t\t}));\n\t\t\tviewWriter.move(viewWriter.createRangeOn(imgElement), viewWriter.createPositionAt(pictureElement, \"end\"));\n\t\t\tfor (const attributeElement of attributeElements) viewWriter.wrap(viewWriter.createRangeOn(pictureElement), attributeElement);\n\t\t} else if (imgElement.parent.is(\"element\", \"picture\")) {\n\t\t\tconst pictureElement = imgElement.parent;\n\t\t\tviewWriter.move(viewWriter.createRangeOn(imgElement), viewWriter.createPositionBefore(pictureElement));\n\t\t\tviewWriter.remove(pictureElement);\n\t\t}\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"attribute:sources:imageBlock\", converter);\n\t\tdispatcher.on(\"attribute:sources:imageInline\", converter);\n\t};\n}\n/**\n* Converter used to convert a given image attribute from the model to the view.\n*\n* @internal\n* @param imageType The type of the image.\n* @param attributeKey The name of the attribute to convert.\n*/\nfunction downcastImageAttribute(imageUtils, imageType, attributeKey) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\tconst img = imageUtils.findViewImgElement(element);\n\t\tviewWriter.setAttribute(data.attributeKey, data.attributeNewValue || \"\", img);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(`attribute:${attributeKey}:${imageType}`, converter);\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageloadobserver\n*/\n/**\n* Observes all new images added to the {@link module:engine/view/document~ViewDocument},\n* fires {@link module:engine/view/document~ViewDocument#event:imageLoaded} and\n* {@link module:engine/view/document~ViewDocument#event:layoutChanged} event every time when the new image\n* has been loaded.\n*\n* **Note:** This event is not fired for images that has been added to the document and rendered as `complete` (already loaded).\n*/\nvar ImageLoadObserver = class extends Observer {\n\t/**\n\t* @inheritDoc\n\t*/\n\tobserve(domRoot) {\n\t\tthis.listenTo(domRoot, \"load\", (event, domEvent) => {\n\t\t\tconst domElement = domEvent.target;\n\t\t\tif (this.checkShouldIgnoreEventFromTarget(domElement)) return;\n\t\t\tif (domElement.tagName == \"IMG\") this._fireEvents(domEvent);\n\t\t}, { useCapture: true });\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstopObserving(domRoot) {\n\t\tthis.stopListening(domRoot);\n\t}\n\t/**\n\t* Fires {@link module:engine/view/document~ViewDocument#event:layoutChanged} and\n\t* {@link module:engine/view/document~ViewDocument#event:imageLoaded}\n\t* if observer {@link #isEnabled is enabled}.\n\t*\n\t* @param domEvent The DOM event.\n\t*/\n\t_fireEvents(domEvent) {\n\t\tif (this.isEnabled) {\n\t\t\tthis.document.fire(\"layoutChanged\");\n\t\t\tthis.document.fire(\"imageLoaded\", domEvent);\n\t\t}\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/insertimagecommand\n*/\n/**\n* Insert image command.\n*\n* The command is registered by the {@link module:image/image/imageediting~ImageEditing} plugin as `insertImage`\n* and it is also available via aliased `imageInsert` name.\n*\n* In order to insert an image at the current selection position\n* (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n* execute the command and specify the image source:\n*\n* ```ts\n* editor.execute( 'insertImage', { source: 'http://url.to.the/image' } );\n* ```\n*\n* It is also possible to insert multiple images at once:\n*\n* ```ts\n* editor.execute( 'insertImage', {\n* \tsource: [\n* \t\t'path/to/image.jpg',\n* \t\t'path/to/other-image.jpg'\n* \t]\n* } );\n* ```\n*\n* If you want to take the full control over the process, you can specify individual model attributes:\n*\n* ```ts\n* editor.execute( 'insertImage', {\n* \tsource: [\n* \t\t{ src: 'path/to/image.jpg', alt: 'First alt text' },\n* \t\t{ src: 'path/to/other-image.jpg', alt: 'Second alt text', customAttribute: 'My attribute value' }\n* \t]\n* } );\n* ```\n*/\nvar InsertImageCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tconst configImageInsertType = editor.config.get(\"image.insert.type\");\n\t\tif (!editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\tif (configImageInsertType === \"block\")\n /**\n\t\t\t* The {@link module:image/imageblock~ImageBlock} plugin must be enabled to allow inserting block images. See\n\t\t\t* {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t*\n\t\t\t* @error image-block-plugin-required\n\t\t\t*/\n\t\t\tlogWarning(\"image-block-plugin-required\");\n\t\t}\n\t\tif (!editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\tif (configImageInsertType === \"inline\")\n /**\n\t\t\t* The {@link module:image/imageinline~ImageInline} plugin must be enabled to allow inserting inline images. See\n\t\t\t* {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t*\n\t\t\t* @error image-inline-plugin-required\n\t\t\t*/\n\t\t\tlogWarning(\"image-inline-plugin-required\");\n\t\t}\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tthis.isEnabled = imageUtils.isImageAllowed();\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options Options for the executed command.\n\t* @param options.imageType The type of the image to insert. If not specified, the type will be determined automatically.\n\t* @param options.source The image source or an array of image sources to insert.\n\t* @param options.breakBlock If set to `true`, the block at the selection start will be broken before inserting the image.\n\t* See the documentation of the command to learn more about accepted formats.\n\t*/\n\texecute(options) {\n\t\tconst sourceDefinitions = toArray(options.source);\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst selectionAttributes = Object.fromEntries(selection.getAttributes());\n\t\tsourceDefinitions.forEach((sourceDefinition, index) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\t\t\tif (typeof sourceDefinition === \"string\") sourceDefinition = { src: sourceDefinition };\n\t\t\tif (index && selectedElement && imageUtils.isImage(selectedElement)) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter(selectedElement);\n\t\t\t\timageUtils.insertImage({\n\t\t\t\t\t...sourceDefinition,\n\t\t\t\t\t...selectionAttributes\n\t\t\t\t}, position, options.imageType);\n\t\t\t} else if (options.breakBlock) imageUtils.insertImage({\n\t\t\t\t...sourceDefinition,\n\t\t\t\t...selectionAttributes\n\t\t\t}, selection.getFirstPosition(), options.imageType);\n\t\t\telse imageUtils.insertImage({\n\t\t\t\t...sourceDefinition,\n\t\t\t\t...selectionAttributes\n\t\t\t}, null, options.imageType);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/replaceimagesourcecommand\n*/\n/**\n* Replace image source command.\n*\n* Changes image source to the one provided. Can be executed as follows:\n*\n* ```ts\n* editor.execute( 'replaceImageSource', { source: 'http://url.to.the/image' } );\n* ```\n*/\nvar ReplaceImageSourceCommand = class extends Command {\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis.decorate(\"cleanupImage\");\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst element = this.editor.model.document.selection.getSelectedElement();\n\t\tthis.isEnabled = imageUtils.isImage(element);\n\t\tthis.value = this.isEnabled ? element.getAttribute(\"src\") : null;\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options Options for the executed command.\n\t* @param options.source The image source to replace.\n\t*/\n\texecute(options) {\n\t\tconst image = this.editor.model.document.selection.getSelectedElement();\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tthis.editor.model.change((writer) => {\n\t\t\twriter.setAttribute(\"src\", options.source, image);\n\t\t\tthis.cleanupImage(writer, image);\n\t\t\timageUtils.setImageNaturalSizeAttributes(image);\n\t\t});\n\t}\n\t/**\n\t* Cleanup image attributes that are not relevant to the new source.\n\t*\n\t* Removed attributes are: 'srcset', 'sizes', 'sources', 'width', 'height', 'alt'.\n\t*\n\t* This method is decorated, to allow custom cleanup logic.\n\t* For example, to remove 'myImageId' attribute after 'src' has changed:\n\t*\n\t* ```ts\n\t* replaceImageSourceCommand.on( 'cleanupImage', ( eventInfo, [ writer, image ] ) => {\n\t* \twriter.removeAttribute( 'myImageId', image );\n\t* } );\n\t* ```\n\t*/\n\tcleanupImage(writer, image) {\n\t\twriter.removeAttribute(\"srcset\", image);\n\t\twriter.removeAttribute(\"sizes\", image);\n\t\t/**\n\t\t* In case responsive images some attributes should be cleaned up.\n\t\t* Check: https://github.com/ckeditor/ckeditor5/issues/15093\n\t\t*/\n\t\twriter.removeAttribute(\"sources\", image);\n\t\twriter.removeAttribute(\"width\", image);\n\t\twriter.removeAttribute(\"height\", image);\n\t\twriter.removeAttribute(\"alt\", image);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageediting\n*/\n/**\n* The image engine plugin. This module loads common code shared between\n* {@link module:image/image/imageinlineediting~ImageInlineEditing} and\n* {@link module:image/image/imageblockediting~ImageBlockEditing} plugins.\n*\n* This plugin registers the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command.\n*/\nvar ImageEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\teditor.editing.view.addObserver(ImageLoadObserver);\n\t\tconversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: \"img\",\n\t\t\t\tkey: \"alt\"\n\t\t\t},\n\t\t\tmodel: \"alt\"\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: \"img\",\n\t\t\t\tkey: \"srcset\"\n\t\t\t},\n\t\t\tmodel: \"srcset\"\n\t\t});\n\t\tconst insertImageCommand = new InsertImageCommand(editor);\n\t\tconst replaceImageSourceCommand = new ReplaceImageSourceCommand(editor);\n\t\teditor.commands.add(\"insertImage\", insertImageCommand);\n\t\teditor.commands.add(\"replaceImageSource\", replaceImageSourceCommand);\n\t\teditor.commands.add(\"imageInsert\", insertImageCommand);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagesizeattributes\n*/\n/**\n* This plugin enables `width` and `height` attributes in inline and block image elements.\n*/\nvar ImageSizeAttributes = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageSizeAttributes\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._registerSchema();\n\t\tthis._registerConverters(\"imageBlock\");\n\t\tthis._registerConverters(\"imageInline\");\n\t}\n\t/**\n\t* Registers the `width` and `height` attributes for inline and block images.\n\t*/\n\t_registerSchema() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (this.editor.plugins.has(\"ImageBlockEditing\")) schema.extend(\"imageBlock\", { allowAttributes: [\"width\", \"height\"] });\n\t\tif (this.editor.plugins.has(\"ImageInlineEditing\")) schema.extend(\"imageInline\", { allowAttributes: [\"width\", \"height\"] });\n\t}\n\t/**\n\t* Registers converters for `width` and `height` attributes.\n\t*/\n\t_registerConverters(imageType) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst viewElementName = imageType === \"imageBlock\" ? \"figure\" : \"img\";\n\t\teditor.conversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tstyles: { width: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"width\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return getSizeValueIfInPx(viewElement.getStyle(\"width\"));\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tkey: \"width\"\n\t\t\t},\n\t\t\tmodel: \"width\"\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tstyles: { height: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"height\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return getSizeValueIfInPx(viewElement.getStyle(\"height\"));\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tkey: \"height\"\n\t\t\t},\n\t\t\tmodel: \"height\"\n\t\t});\n\t\teditor.conversion.for(\"editingDowncast\").add((dispatcher) => {\n\t\t\tattachDowncastConverter(dispatcher, \"width\", \"width\", true, true);\n\t\t\tattachDowncastConverter(dispatcher, \"height\", \"height\", true, true);\n\t\t});\n\t\teditor.conversion.for(\"dataDowncast\").add((dispatcher) => {\n\t\t\tattachDowncastConverter(dispatcher, \"width\", \"width\", false);\n\t\t\tattachDowncastConverter(dispatcher, \"height\", \"height\", false);\n\t\t});\n\t\teditor.conversion.for(\"upcast\").add((dispatcher) => {\n\t\t\tdispatcher.on(\"element:img\", (evt, data, conversionApi) => {\n\t\t\t\tconst width = data.viewItem.getAttribute(\"width\");\n\t\t\t\tconst height = data.viewItem.getAttribute(\"height\");\n\t\t\t\tif (width && height) conversionApi.consumable.consume(data.viewItem, { styles: [\"aspect-ratio\"] });\n\t\t\t});\n\t\t});\n\t\tfunction attachDowncastConverter(dispatcher, modelAttributeName, viewAttributeName, setRatioForInlineImage, isEditingDowncast = false) {\n\t\t\tdispatcher.on(`attribute:${modelAttributeName}:${imageType}`, (evt, data, conversionApi) => {\n\t\t\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement(data.item);\n\t\t\t\tconst img = imageUtils.findViewImgElement(viewElement);\n\t\t\t\tif (data.attributeNewValue !== null) viewWriter.setAttribute(viewAttributeName, data.attributeNewValue, img);\n\t\t\t\telse viewWriter.removeAttribute(viewAttributeName, img);\n\t\t\t\tconst width = data.item.getAttribute(\"width\");\n\t\t\t\tconst height = data.item.getAttribute(\"height\");\n\t\t\t\tconst hasSizes = width && height;\n\t\t\t\tif (hasSizes && isEditingDowncast) viewWriter.setAttribute(\"loading\", \"lazy\", img);\n\t\t\t\tif (data.item.hasAttribute(\"sources\")) return;\n\t\t\t\tconst isResized = data.item.hasAttribute(\"resizedWidth\");\n\t\t\t\tif (imageType === \"imageInline\" && !isResized && !setRatioForInlineImage) return;\n\t\t\t\tif (hasSizes) viewWriter.setStyle(\"aspect-ratio\", `${width}/${height}`, img);\n\t\t\t});\n\t\t}\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image type command. It changes the type of a selected image, depending on the configuration.\n*/\nvar ImageTypeCommand = class extends Command {\n\t/**\n\t* Model element name the command converts to.\n\t*/\n\t_modelElementName;\n\t/**\n\t* @inheritDoc\n\t*\n\t* @param modelElementName Model element name the command converts to.\n\t*/\n\tconstructor(editor, modelElementName) {\n\t\tsuper(editor);\n\t\tthis._modelElementName = modelElementName;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst element = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tif (!(this._modelElementName === \"imageBlock\" ? imageUtils.isInlineImage(element) : imageUtils.isBlockImage(element))) {\n\t\t\tthis.isEnabled = false;\n\t\t\treturn;\n\t\t}\n\t\tconst position = model.createPositionBefore(element);\n\t\tthis.isEnabled = isImageTypePlaceable(schema, position, this._modelElementName);\n\t}\n\t/**\n\t* Executes the command and changes the type of a selected image.\n\t*\n\t* @fires execute\n\t* @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t* The default is `true`.\n\t* @returns An object containing references to old and new model image elements\n\t* (for before and after the change) so external integrations can hook into the decorated\n\t* `execute` event and handle this change. `null` if the type change failed.\n\t*/\n\texecute(options = {}) {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst oldElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tconst attributes = Object.fromEntries(oldElement.getAttributes());\n\t\tif (!attributes.src && !attributes.uploadId) return null;\n\t\treturn model.change((writer) => {\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tconst markers = Array.from(model.markers).filter((marker) => marker.getRange().containsItem(oldElement));\n\t\t\tconst newElement = imageUtils.insertImage(attributes, model.createSelection(oldElement, \"on\"), this._modelElementName, { setImageSizes });\n\t\t\tif (!newElement) return null;\n\t\t\tconst newElementRange = writer.createRangeOn(newElement);\n\t\t\tfor (const marker of markers) {\n\t\t\t\tconst markerRange = marker.getRange();\n\t\t\t\tconst range = markerRange.root.rootName != \"$graveyard\" ? markerRange.getJoined(newElementRange, true) : newElementRange;\n\t\t\t\twriter.updateMarker(marker, { range });\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toldElement,\n\t\t\t\tnewElement\n\t\t\t};\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageplaceholder\n*/\n/**\n* Adds support for image placeholder that is automatically removed when the image is loaded.\n*/\nvar ImagePlaceholder = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImagePlaceholder\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._setupSchema();\n\t\tthis._setupConversion();\n\t\tthis._setupLoadListener();\n\t}\n\t/**\n\t* Extends model schema.\n\t*/\n\t_setupSchema() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (schema.isRegistered(\"imageBlock\")) schema.extend(\"imageBlock\", { allowAttributes: [\"placeholder\"] });\n\t\tif (schema.isRegistered(\"imageInline\")) schema.extend(\"imageInline\", { allowAttributes: [\"placeholder\"] });\n\t}\n\t/**\n\t* Registers converters.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"editingDowncast\").add((dispatcher) => {\n\t\t\tdispatcher.on(\"attribute:placeholder\", (evt, data, conversionApi) => {\n\t\t\t\tif (!conversionApi.consumable.test(data.item, evt.name)) return;\n\t\t\t\tif (!data.item.is(\"element\", \"imageBlock\") && !data.item.is(\"element\", \"imageInline\")) return;\n\t\t\t\tconversionApi.consumable.consume(data.item, evt.name);\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\t\t\tconst img = imageUtils.findViewImgElement(element);\n\t\t\t\tif (data.attributeNewValue) {\n\t\t\t\t\tviewWriter.addClass(\"image_placeholder\", img);\n\t\t\t\t\tviewWriter.setStyle(\"background-image\", `url(${data.attributeNewValue})`, img);\n\t\t\t\t\tviewWriter.setCustomProperty(\"editingPipeline:doNotReuseOnce\", true, img);\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeClass(\"image_placeholder\", img);\n\t\t\t\t\tviewWriter.removeStyle(\"background-image\", img);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Prepares listener for image load.\n\t*/\n\t_setupLoadListener() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editing = editor.editing;\n\t\tconst editingView = editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\teditingView.addObserver(ImageLoadObserver);\n\t\tthis.listenTo(editingView.document, \"imageLoaded\", (evt, domEvent) => {\n\t\t\tconst imgViewElement = editingView.domConverter.mapDomToView(domEvent.target);\n\t\t\tif (!imgViewElement) return;\n\t\t\tconst viewElement = imageUtils.getImageWidgetFromImageView(imgViewElement);\n\t\t\tif (!viewElement) return;\n\t\t\tconst modelElement = editing.mapper.toModelElement(viewElement);\n\t\t\tif (!modelElement || !modelElement.hasAttribute(\"placeholder\")) return;\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\twriter.removeAttribute(\"placeholder\", modelElement);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageblockediting\n*/\n/**\n* The image block plugin.\n*\n* It registers:\n*\n* * `<imageBlock>` as a block element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n* * converters for editing and data pipelines.,\n* * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeBlock'`} command that converts inline images into\n* block images.\n*/\nvar ImageBlockEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageBlockEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.model.schema.register(\"imageBlock\", {\n\t\t\tinheritAllFrom: \"$blockObject\",\n\t\t\tallowAttributes: [\n\t\t\t\t\"alt\",\n\t\t\t\t\"src\",\n\t\t\t\t\"srcset\"\n\t\t\t]\n\t\t});\n\t\tthis._setupConversion();\n\t\tif (editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\teditor.commands.add(\"imageTypeBlock\", new ImageTypeCommand(this.editor, \"imageBlock\"));\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting\n\t* block images (block image widgets) and their attributes.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"dataDowncast\").elementToStructure({\n\t\t\tmodel: \"imageBlock\",\n\t\t\tview: (modelElement, { writer }) => createBlockImageViewElement(writer)\n\t\t});\n\t\tconversion.for(\"editingDowncast\").elementToStructure({\n\t\t\tmodel: \"imageBlock\",\n\t\t\tview: (modelElement, { writer }) => imageUtils.toImageWidget(createBlockImageViewElement(writer), writer, t(\"image widget\"))\n\t\t});\n\t\tconversion.for(\"downcast\").add(downcastImageAttribute(imageUtils, \"imageBlock\", \"src\")).add(downcastImageAttribute(imageUtils, \"imageBlock\", \"alt\")).add(downcastSrcsetAttribute(imageUtils, \"imageBlock\"));\n\t\tconversion.for(\"upcast\").add(upcastImg(\"imageBlock\", imageUtils)).add(upcastImageFigure(imageUtils));\n\t}\n\t/**\n\t* Integrates the plugin with the clipboard pipeline.\n\t*\n\t* Idea is that the feature should recognize the user's intent when an **inline** image is\n\t* pasted or dropped. If such an image is pasted/dropped:\n\t*\n\t* * into an empty block (e.g. an empty paragraph),\n\t* * on another object (e.g. some block widget).\n\t*\n\t* it gets converted into a block image on the fly. We assume this is the user's intent\n\t* if they decided to put their image there.\n\t*\n\t* See the `ImageInlineEditing` for the similar integration that works in the opposite direction.\n\t*\n\t* The feature also sets image `width` and `height` attributes on paste.\n\t*/\n\t_setupClipboardIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", (evt, data) => {\n\t\t\tconst docFragmentChildren = Array.from(data.content.getChildren());\n\t\t\tlet modelRange;\n\t\t\tif (!docFragmentChildren.every(imageUtils.isInlineImageView)) return;\n\t\t\tif (data.targetRanges) modelRange = editor.editing.mapper.toModelRange(data.targetRanges[0]);\n\t\t\telse modelRange = model.document.selection.getFirstRange();\n\t\t\tconst selection = model.createSelection(modelRange);\n\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\tif (!!selectionPosition && isImageTypePlaceable(model.schema, selectionPosition, \"imageBlock\") && determineImageTypeForInsertionAtSelection(model.schema, selection) === \"imageBlock\") {\n\t\t\t\tconst writer = new ViewUpcastWriter(editingView.document);\n\t\t\t\tconst blockViewImages = docFragmentChildren.map((inlineViewImage) => writer.createElement(\"figure\", { class: \"image\" }, inlineViewImage));\n\t\t\t\tdata.content = writer.createDocumentFragment(blockViewImages);\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(clipboardPipeline, \"contentInsertion\", (evt, data) => {\n\t\t\tif (data.method !== \"paste\") return;\n\t\t\tmodel.change((writer) => {\n\t\t\t\tconst range = writer.createRangeIn(data.content);\n\t\t\t\tfor (const item of range.getItems()) if (item.is(\"element\", \"imageBlock\")) imageUtils.setImageNaturalSizeAttributes(item);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/ui/imageinsertformview\n*/\n/**\n* The view displayed in the insert image dropdown.\n*\n* See {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n*\n* @internal\n*/\nvar ImageInsertFormView = class extends View {\n\t/**\n\t* Tracks information about DOM focus in the form.\n\t*/\n\tfocusTracker;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* A collection of views that can be focused in the form.\n\t*/\n\t_focusables;\n\t/**\n\t* Helps cycling over {@link #_focusables} in the form.\n\t*/\n\t_focusCycler;\n\t/**\n\t* A collection of the defined integrations for inserting the images.\n\t*/\n\tchildren;\n\t/**\n\t* Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t*\n\t* @param locale The localization services instance.\n\t* @param integrations An integrations object that contains components (or tokens for components) to be shown in the panel view.\n\t*/\n\tconstructor(locale, integrations = []) {\n\t\tsuper(locale);\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis._focusables = new ViewCollection();\n\t\tthis.children = this.createCollection();\n\t\tthis._focusCycler = new FocusCycler({\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\tfocusPrevious: \"shift + tab\",\n\t\t\t\tfocusNext: \"tab\"\n\t\t\t}\n\t\t});\n\t\tfor (const view of integrations) {\n\t\t\tthis.children.add(view);\n\t\t\tthis._focusables.add(view);\n\t\t\tif (view instanceof CollapsibleView) this._focusables.addMany(view.children);\n\t\t}\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\"ck\", \"ck-image-insert-form\"],\n\t\t\t\ttabindex: -1\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\tfor (const view of this._focusables) this.focusTracker.add(view.element);\n\t\tthis.keystrokes.listenTo(this.element);\n\t\tconst stopPropagation = (data) => data.stopPropagation();\n\t\tthis.keystrokes.set(\"arrowright\", stopPropagation);\n\t\tthis.keystrokes.set(\"arrowleft\", stopPropagation);\n\t\tthis.keystrokes.set(\"arrowup\", stopPropagation);\n\t\tthis.keystrokes.set(\"arrowdown\", stopPropagation);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Focuses the first {@link #_focusables focusable} in the form.\n\t*/\n\tfocus() {\n\t\tthis._focusCycler.focusFirst();\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/imageinsertui\n*/\n/**\n* The image insert dropdown plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n* and {@glink features/images/images-inserting Insert images via source URL} documentation.\n*\n* Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n* and also the `imageInsert` dropdown as an alias for backward compatibility.\n*\n* Adds the `'menuBar:insertImage'` sub-menu to the {@link module:ui/componentfactory~ComponentFactory UI component factory}, which is\n* by default added to the `'Insert'` menu.\n*/\nvar ImageInsertUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsertUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* The dropdown view responsible for displaying the image insert UI.\n\t*/\n\tdropdownView;\n\t/**\n\t* Registered integrations map.\n\t*/\n\t_integrations = /* @__PURE__ */ new Map();\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\teditor.config.define(\"image.insert.integrations\", [\n\t\t\t\"upload\",\n\t\t\t\"assetManager\",\n\t\t\t\"url\"\n\t\t]);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tthis.set(\"isImageSelected\", false);\n\t\tthis.listenTo(editor.model.document, \"change\", () => {\n\t\t\tthis.isImageSelected = imageUtils.isImage(selection.getSelectedElement());\n\t\t});\n\t\tconst componentCreator = (locale) => this._createToolbarComponent(locale);\n\t\tconst menuBarComponentCreator = (locale) => this._createMenuBarComponent(locale);\n\t\teditor.ui.componentFactory.add(\"insertImage\", componentCreator);\n\t\teditor.ui.componentFactory.add(\"imageInsert\", componentCreator);\n\t\teditor.ui.componentFactory.add(\"menuBar:insertImage\", menuBarComponentCreator);\n\t}\n\t/**\n\t* Registers the insert image dropdown integration.\n\t*/\n\tregisterIntegration({ name, observable, buttonViewCreator, formViewCreator, menuBarButtonViewCreator, requiresForm = false, override = false }) {\n\t\tif (this._integrations.has(name) && !override)\n /**\n\t\t* There are two insert-image integrations registered with the same name.\n\t\t*\n\t\t* Make sure that you do not load multiple asset manager plugins.\n\t\t*\n\t\t* @error image-insert-integration-exists\n\t\t*/\n\t\tlogWarning(\"image-insert-integration-exists\", { name });\n\t\tthis._integrations.set(name, {\n\t\t\tobservable,\n\t\t\tbuttonViewCreator,\n\t\t\tmenuBarButtonViewCreator,\n\t\t\tformViewCreator,\n\t\t\trequiresForm\n\t\t});\n\t}\n\t/**\n\t* Creates the toolbar component.\n\t*/\n\t_createToolbarComponent(locale) {\n\t\tconst editor = this.editor;\n\t\tconst t = locale.t;\n\t\tconst integrations = this._prepareIntegrations();\n\t\tif (!integrations.length) return null;\n\t\tlet dropdownButton;\n\t\tconst firstIntegration = integrations[0];\n\t\tif (integrations.length == 1) {\n\t\t\tif (!firstIntegration.requiresForm) return firstIntegration.buttonViewCreator(true);\n\t\t\tdropdownButton = firstIntegration.buttonViewCreator(true);\n\t\t} else {\n\t\t\tdropdownButton = new SplitButtonView(locale, firstIntegration.buttonViewCreator(false));\n\t\t\tdropdownButton.tooltip = true;\n\t\t\tdropdownButton.bind(\"label\").to(this, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Replace image\") : t(\"Insert image\"));\n\t\t}\n\t\tconst dropdownView = this.dropdownView = createDropdown(locale, dropdownButton);\n\t\tconst observables = integrations.map(({ observable }) => typeof observable == \"function\" ? observable() : observable);\n\t\tdropdownView.bind(\"isEnabled\").toMany(observables, \"isEnabled\", (...isEnabled) => isEnabled.some((isEnabled) => isEnabled));\n\t\tdropdownView.once(\"change:isOpen\", () => {\n\t\t\tconst integrationViews = integrations.flatMap(({ formViewCreator }) => formViewCreator(integrations.length == 1));\n\t\t\tconst imageInsertFormView = new ImageInsertFormView(editor.locale, integrationViews);\n\t\t\tdropdownView.panelView.children.add(imageInsertFormView);\n\t\t});\n\t\treturn dropdownView;\n\t}\n\t/**\n\t* Creates the menu bar component.\n\t*/\n\t_createMenuBarComponent(locale) {\n\t\tconst t = locale.t;\n\t\tconst integrations = this._prepareIntegrations();\n\t\tif (!integrations.length) return null;\n\t\tconst integrationViews = integrations.flatMap(({ menuBarButtonViewCreator }) => menuBarButtonViewCreator(integrations.length == 1));\n\t\tconst resultView = new MenuBarMenuView(locale);\n\t\tconst listView = new MenuBarMenuListView(locale);\n\t\tresultView.panelView.children.add(listView);\n\t\tresultView.buttonView.set({\n\t\t\ticon: IconImage,\n\t\t\tlabel: t(\"Image\")\n\t\t});\n\t\tfor (const integrationView of integrationViews) {\n\t\t\tconst listItemView = new MenuBarMenuListItemView(locale, resultView);\n\t\t\tlistItemView.children.add(integrationView);\n\t\t\tlistView.items.add(listItemView);\n\t\t\tintegrationView.delegate(\"execute\").to(resultView);\n\t\t}\n\t\treturn resultView;\n\t}\n\t/**\n\t* Validates the integrations list.\n\t*/\n\t_prepareIntegrations() {\n\t\tconst items = this.editor.config.get(\"image.insert.integrations\");\n\t\tconst result = [];\n\t\tif (!items.length) {\n\t\t\t/**\n\t\t\t* The insert image feature requires a list of integrations to be provided in the editor configuration.\n\t\t\t*\n\t\t\t* The default list of integrations is `upload`, `assetManager`, `url`. Those integrations are included\n\t\t\t* in the insert image dropdown if the given feature plugin is loaded. You should omit the `integrations`\n\t\t\t* configuration key to use the default set or provide a selected list of integrations that should be used.\n\t\t\t*\n\t\t\t* @error image-insert-integrations-not-specified\n\t\t\t*/\n\t\t\tlogWarning(\"image-insert-integrations-not-specified\");\n\t\t\treturn result;\n\t\t}\n\t\tfor (const item of items) {\n\t\t\tif (!this._integrations.has(item)) {\n\t\t\t\tif (![\n\t\t\t\t\t\"upload\",\n\t\t\t\t\t\"assetManager\",\n\t\t\t\t\t\"url\"\n\t\t\t\t].includes(item))\n /**\n\t\t\t\t* The specified insert image integration name is unknown or the providing plugin is not loaded in the editor.\n\t\t\t\t*\n\t\t\t\t* @error image-insert-unknown-integration\n\t\t\t\t*/\n\t\t\t\tlogWarning(\"image-insert-unknown-integration\", { item });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult.push(this._integrations.get(item));\n\t\t}\n\t\tif (!result.length)\n /**\n\t\t* The image insert feature requires integrations to be registered by separate features.\n\t\t*\n\t\t* The `insertImage` toolbar button requires integrations to be registered by other features.\n\t\t* For example {@link module:image/imageupload~ImageUpload ImageUpload},\n\t\t* {@link module:image/imageinsert~ImageInsert ImageInsert},\n\t\t* {@link module:image/imageinsertviaurl~ImageInsertViaUrl ImageInsertViaUrl},\n\t\t* {@link module:ckbox/ckbox~CKBox CKBox}\n\t\t*\n\t\t* @error image-insert-integrations-not-registered\n\t\t*/\n\t\tlogWarning(\"image-insert-integrations-not-registered\");\n\t\treturn result;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageblock\n*/\n/**\n* The image block plugin.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n*\n* * {@link module:image/image/imageblockediting~ImageBlockEditing},\n* * {@link module:image/imagetextalternative~ImageTextAlternative}.\n*\n* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n* for more information.\n*/\nvar ImageBlock = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageBlockEditing,\n\t\t\tWidget,\n\t\t\tImageTextAlternative,\n\t\t\tImageInsertUI\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageBlock\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageinlineediting\n*/\n/**\n* The image inline plugin.\n*\n* It registers:\n*\n* * `<imageInline>` as an inline element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n* * converters for editing and data pipelines.\n* * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeInline'`} command that converts block images into\n* inline images.\n*/\nvar ImageInlineEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInlineEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.model.schema.register(\"imageInline\", {\n\t\t\tinheritAllFrom: \"$inlineObject\",\n\t\t\tallowAttributes: [\n\t\t\t\t\"alt\",\n\t\t\t\t\"src\",\n\t\t\t\t\"srcset\"\n\t\t\t],\n\t\t\tdisallowIn: [\"caption\"]\n\t\t});\n\t\tthis._setupConversion();\n\t\tif (editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\teditor.commands.add(\"imageTypeInline\", new ImageTypeCommand(this.editor, \"imageInline\"));\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting\n\t* inline images (inline image widgets) and their attributes.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"dataDowncast\").elementToElement({\n\t\t\tmodel: \"imageInline\",\n\t\t\tview: (modelElement, { writer }) => writer.createEmptyElement(\"img\")\n\t\t});\n\t\tconversion.for(\"editingDowncast\").elementToStructure({\n\t\t\tmodel: \"imageInline\",\n\t\t\tview: (modelElement, { writer }) => imageUtils.toImageWidget(createInlineImageViewElement(writer), writer, t(\"image widget\"))\n\t\t});\n\t\tconversion.for(\"downcast\").add(downcastImageAttribute(imageUtils, \"imageInline\", \"src\")).add(downcastImageAttribute(imageUtils, \"imageInline\", \"alt\")).add(downcastSrcsetAttribute(imageUtils, \"imageInline\"));\n\t\tconversion.for(\"upcast\").add(upcastImg(\"imageInline\", imageUtils));\n\t}\n\t/**\n\t* Integrates the plugin with the clipboard pipeline.\n\t*\n\t* Idea is that the feature should recognize the user's intent when an **block** image is\n\t* pasted or dropped. If such an image is pasted/dropped into a non-empty block\n\t* (e.g. a paragraph with some text) it gets converted into an inline image on the fly.\n\t*\n\t* We assume this is the user's intent if they decided to put their image there.\n\t*\n\t* **Note**: If a block image has a caption, it will not be converted to an inline image\n\t* to avoid the confusion. Captions are added on purpose and they should never be lost\n\t* in the clipboard pipeline.\n\t*\n\t* See the `ImageBlockEditing` for the similar integration that works in the opposite direction.\n\t*\n\t* The feature also sets image `width` and `height` attributes when pasting.\n\t*/\n\t_setupClipboardIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", (evt, data) => {\n\t\t\tconst docFragmentChildren = Array.from(data.content.getChildren());\n\t\t\tlet modelRange;\n\t\t\tif (!docFragmentChildren.every(imageUtils.isBlockImageView)) return;\n\t\t\tif (data.targetRanges) modelRange = editor.editing.mapper.toModelRange(data.targetRanges[0]);\n\t\t\telse modelRange = model.document.selection.getFirstRange();\n\t\t\tconst selection = model.createSelection(modelRange);\n\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\tif (!(!!selectionPosition && isImageTypePlaceable(model.schema, selectionPosition, \"imageBlock\")) || determineImageTypeForInsertionAtSelection(model.schema, selection) === \"imageInline\") {\n\t\t\t\tconst writer = new ViewUpcastWriter(editingView.document);\n\t\t\t\tconst inlineViewImages = docFragmentChildren.map((blockViewImage) => {\n\t\t\t\t\tif (blockViewImage.childCount === 1) {\n\t\t\t\t\t\tArray.from(blockViewImage.getAttributes()).forEach((attribute) => writer.setAttribute(...attribute, imageUtils.findViewImgElement(blockViewImage)));\n\t\t\t\t\t\treturn blockViewImage.getChild(0);\n\t\t\t\t\t} else return blockViewImage;\n\t\t\t\t});\n\t\t\t\tdata.content = writer.createDocumentFragment(inlineViewImages);\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(clipboardPipeline, \"contentInsertion\", (evt, data) => {\n\t\t\tif (data.method !== \"paste\") return;\n\t\t\tmodel.change((writer) => {\n\t\t\t\tconst range = writer.createRangeIn(data.content);\n\t\t\t\tfor (const item of range.getItems()) if (item.is(\"element\", \"imageInline\")) imageUtils.setImageNaturalSizeAttributes(item);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinline\n*/\n/**\n* The image inline plugin.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n*\n* * {@link module:image/image/imageinlineediting~ImageInlineEditing},\n* * {@link module:image/imagetextalternative~ImageTextAlternative}.\n*\n* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n* for more information.\n*/\nvar ImageInline = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageInlineEditing,\n\t\t\tWidget,\n\t\t\tImageTextAlternative,\n\t\t\tImageInsertUI\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInline\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image\n*/\n/**\n* The image plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-overview image feature} documentation.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n*\n* * {@link module:image/imageblock~ImageBlock},\n* * {@link module:image/imageinline~ImageInline},\n*\n* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n* for more information.\n*/\nvar Image = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageBlock, ImageInline];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Image\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image caption utilities plugin.\n*/\nvar ImageCaptionUtils = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaptionUtils\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* Returns the caption model element from a given image element. Returns `null` if no caption is found.\n\t*/\n\tgetCaptionFromImageModelElement(imageModelElement) {\n\t\tfor (const node of imageModelElement.getChildren()) if (!!node && node.is(\"element\", \"caption\")) return node;\n\t\treturn null;\n\t}\n\t/**\n\t* Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.\n\t*/\n\tgetCaptionFromModelSelection(selection) {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst captionElement = selection.getFirstPosition().findAncestor(\"caption\");\n\t\tif (!captionElement) return null;\n\t\tif (imageUtils.isBlockImage(captionElement.parent)) return captionElement;\n\t\treturn null;\n\t}\n\t/**\n\t* {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a `<figcaption>` element that is placed\n\t* inside the image `<figure>` element.\n\t* @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element\n\t* cannot be matched.\n\t*/\n\tmatchImageCaptionViewElement(element) {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tif (element.name == \"figcaption\" && imageUtils.isBlockImageView(element.parent)) return { name: true };\n\t\treturn null;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The toggle image caption command.\n*\n* This command is registered by {@link module:image/imagecaption/imagecaptionediting~ImageCaptionEditing} as the\n* `'toggleImageCaption'` editor command.\n*\n* Executing this command:\n*\n* * either adds or removes the image caption of a selected image (depending on whether the caption is present or not),\n* * removes the image caption if the selection is anchored in one.\n*\n* ```ts\n* // Toggle the presence of the caption.\n* editor.execute( 'toggleImageCaption' );\n* ```\n*\n* **Note**: Upon executing this command, the selection will be set on the image if previously anchored in the caption element.\n*\n* **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using\n* the `focusCaptionOnShow` option:\n*\n* ```ts\n* editor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n* ```\n*/\nvar ToggleImageCaptionCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tif (!editor.plugins.has(ImageBlockEditing)) {\n\t\t\tthis.isEnabled = false;\n\t\t\tthis.value = false;\n\t\t\treturn;\n\t\t}\n\t\tconst selection = editor.model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\t\tif (!selectedElement) {\n\t\t\tconst ancestorCaptionElement = imageCaptionUtils.getCaptionFromModelSelection(selection);\n\t\t\tthis.isEnabled = !!ancestorCaptionElement;\n\t\t\tthis.value = !!ancestorCaptionElement;\n\t\t\treturn;\n\t\t}\n\t\tthis.isEnabled = imageUtils.isImage(selectedElement);\n\t\tif (this.isEnabled && imageUtils.isInlineImage(selectedElement)) {\n\t\t\tconst position = editor.model.createPositionBefore(selectedElement);\n\t\t\tthis.isEnabled = isImageTypePlaceable(editor.model.schema, position, \"imageBlock\");\n\t\t}\n\t\tif (!this.isEnabled) this.value = false;\n\t\telse this.value = !!imageCaptionUtils.getCaptionFromImageModelElement(selectedElement);\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* ```ts\n\t* editor.execute( 'toggleImageCaption' );\n\t* ```\n\t*\n\t* @param options Options for the executed command.\n\t* @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.\n\t* @fires execute\n\t*/\n\texecute(options = {}) {\n\t\tconst { focusCaptionOnShow } = options;\n\t\tthis.editor.model.change((writer) => {\n\t\t\tif (this.value) this._hideImageCaption(writer);\n\t\t\telse this._showImageCaption(writer, focusCaptionOnShow);\n\t\t});\n\t}\n\t/**\n\t* Shows the caption of the `<imageBlock>` or `<imageInline>`. Also:\n\t*\n\t* * it converts `<imageInline>` to `<imageBlock>` to show the caption,\n\t* * it attempts to restore the caption content from the `ImageCaptionEditing` caption registry,\n\t* * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.\n\t*/\n\t_showImageCaption(writer, focusCaptionOnShow) {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageCaptionEditing = this.editor.plugins.get(\"ImageCaptionEditing\");\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tlet selectedImage = selection.getSelectedElement();\n\t\tconst savedCaption = imageCaptionEditing._getSavedCaption(selectedImage);\n\t\tif (imageUtils.isInlineImage(selectedImage)) {\n\t\t\tthis.editor.execute(\"imageTypeBlock\");\n\t\t\tselectedImage = selection.getSelectedElement();\n\t\t}\n\t\tconst newCaptionElement = savedCaption || writer.createElement(\"caption\");\n\t\twriter.append(newCaptionElement, selectedImage);\n\t\tif (focusCaptionOnShow) writer.setSelection(newCaptionElement, \"in\");\n\t}\n\t/**\n\t* Hides the caption of a selected image (or an image caption the selection is anchored to).\n\t*\n\t* The content of the caption is stored in the `ImageCaptionEditing` caption registry to make this\n\t* a reversible action.\n\t*/\n\t_hideImageCaption(writer) {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageCaptionEditing = editor.plugins.get(\"ImageCaptionEditing\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tlet selectedImage = selection.getSelectedElement();\n\t\tlet captionElement;\n\t\tif (selectedImage) captionElement = imageCaptionUtils.getCaptionFromImageModelElement(selectedImage);\n\t\telse {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromModelSelection(selection);\n\t\t\tselectedImage = captionElement.parent;\n\t\t}\n\t\timageCaptionEditing._saveCaption(selectedImage, captionElement);\n\t\twriter.setSelection(selectedImage, \"on\");\n\t\twriter.remove(captionElement);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagecaption/imagecaptionediting\n*/\n/**\n* The image caption engine plugin. It is responsible for:\n*\n* * registering converters for the caption element,\n* * registering converters for the caption model attribute,\n* * registering the {@link module:image/imagecaption/toggleimagecaptioncommand~ToggleImageCaptionCommand `toggleImageCaption`} command.\n*/\nvar ImageCaptionEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils, ImageCaptionUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaptionEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* A map that keeps saved JSONified image captions and image model elements they are\n\t* associated with.\n\t*\n\t* To learn more about this system, see {@link #_saveCaption}.\n\t*/\n\t_savedCaptionsMap;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis._savedCaptionsMap = /* @__PURE__ */ new WeakMap();\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tif (!schema.isRegistered(\"caption\")) schema.register(\"caption\", {\n\t\t\tallowIn: \"imageBlock\",\n\t\t\tallowContentOf: \"$block\",\n\t\t\tisLimit: true\n\t\t});\n\t\telse schema.extend(\"caption\", { allowIn: \"imageBlock\" });\n\t\teditor.commands.add(\"toggleImageCaption\", new ToggleImageCaptionCommand(this.editor));\n\t\tthis._setupConversion();\n\t\tthis._setupImageTypeCommandsIntegration();\n\t\tthis._registerCaptionReconversion();\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting\n\t* image captions.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst t = editor.t;\n\t\teditor.conversion.for(\"upcast\").elementToElement({\n\t\t\tview: (element) => imageCaptionUtils.matchImageCaptionViewElement(element),\n\t\t\tmodel: \"caption\"\n\t\t});\n\t\teditor.conversion.for(\"dataDowncast\").elementToElement({\n\t\t\tmodel: \"caption\",\n\t\t\tview: (modelElement, { writer }) => {\n\t\t\t\tif (!imageUtils.isBlockImage(modelElement.parent)) return null;\n\t\t\t\treturn writer.createContainerElement(\"figcaption\");\n\t\t\t}\n\t\t});\n\t\teditor.conversion.for(\"editingDowncast\").elementToElement({\n\t\t\tmodel: \"caption\",\n\t\t\tview: (modelElement, { writer }) => {\n\t\t\t\tif (!imageUtils.isBlockImage(modelElement.parent)) return null;\n\t\t\t\tconst figcaptionElement = writer.createEditableElement(\"figcaption\");\n\t\t\t\twriter.setCustomProperty(\"imageCaption\", true, figcaptionElement);\n\t\t\t\tfigcaptionElement.placeholder = t(\"Enter image caption\");\n\t\t\t\tenableViewPlaceholder({\n\t\t\t\t\tview,\n\t\t\t\t\telement: figcaptionElement,\n\t\t\t\t\tkeepOnFocus: true\n\t\t\t\t});\n\t\t\t\tconst imageAlt = modelElement.parent.getAttribute(\"alt\");\n\t\t\t\treturn toWidgetEditable(figcaptionElement, writer, { label: imageAlt ? t(\"Caption for image: %0\", [imageAlt]) : t(\"Caption for the image\") });\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Integrates with {@link module:image/image/imagetypecommand~ImageTypeCommand image type commands}\n\t* to make sure the caption is preserved when the type of an image changes so it can be restored\n\t* in the future if the user decides they want their caption back.\n\t*/\n\t_setupImageTypeCommandsIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst imageTypeInlineCommand = editor.commands.get(\"imageTypeInline\");\n\t\tconst imageTypeBlockCommand = editor.commands.get(\"imageTypeBlock\");\n\t\tconst handleImageTypeChange = (evt) => {\n\t\t\tif (!evt.return) return;\n\t\t\tconst { oldElement, newElement } = evt.return;\n\t\t\t/* istanbul ignore if: paranoid check -- @preserve */\n\t\t\tif (!oldElement) return;\n\t\t\tif (imageUtils.isBlockImage(oldElement)) {\n\t\t\t\tconst oldCaptionElement = imageCaptionUtils.getCaptionFromImageModelElement(oldElement);\n\t\t\t\tif (oldCaptionElement) {\n\t\t\t\t\tthis._saveCaption(newElement, oldCaptionElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst savedOldElementCaption = this._getSavedCaption(oldElement);\n\t\t\tif (savedOldElementCaption) this._saveCaption(newElement, savedOldElementCaption);\n\t\t};\n\t\tif (imageTypeInlineCommand) this.listenTo(imageTypeInlineCommand, \"execute\", handleImageTypeChange, { priority: \"low\" });\n\t\tif (imageTypeBlockCommand) this.listenTo(imageTypeBlockCommand, \"execute\", handleImageTypeChange, { priority: \"low\" });\n\t}\n\t/**\n\t* Returns the saved {@link module:engine/model/element~ModelElement#toJSON JSONified} caption\n\t* of an image model element.\n\t*\n\t* See {@link #_saveCaption}.\n\t*\n\t* @internal\n\t* @param imageModelElement The model element the caption should be returned for.\n\t* @returns The model caption element or `null` if there is none.\n\t*/\n\t_getSavedCaption(imageModelElement) {\n\t\tconst jsonObject = this._savedCaptionsMap.get(imageModelElement);\n\t\treturn jsonObject ? ModelElement.fromJSON(jsonObject) : null;\n\t}\n\t/**\n\t* Saves a {@link module:engine/model/element~ModelElement#toJSON JSONified} caption for\n\t* an image element to allow restoring it in the future.\n\t*\n\t* A caption is saved every time it gets hidden and/or the type of an image changes. The\n\t* user should be able to restore it on demand.\n\t*\n\t* **Note**: The caption cannot be stored in the image model element attribute because,\n\t* for instance, when the model state propagates to collaborators, the attribute would get\n\t* lost (mainly because it does not convert to anything when the caption is hidden) and\n\t* the states of collaborators' models would de-synchronize causing numerous issues.\n\t*\n\t* See {@link #_getSavedCaption}.\n\t*\n\t* @internal\n\t* @param imageModelElement The model element the caption is saved for.\n\t* @param caption The caption model element to be saved.\n\t*/\n\t_saveCaption(imageModelElement, caption) {\n\t\tthis._savedCaptionsMap.set(imageModelElement, caption.toJSON());\n\t}\n\t/**\n\t* Reconverts image caption when image alt attribute changes.\n\t* The change of alt attribute is reflected in caption's aria-label attribute.\n\t*/\n\t_registerCaptionReconversion() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tmodel.document.on(\"change:data\", () => {\n\t\t\tconst changes = model.document.differ.getChanges();\n\t\t\tfor (const change of changes) {\n\t\t\t\tif (change.attributeKey !== \"alt\") continue;\n\t\t\t\tconst image = change.range.start.nodeAfter;\n\t\t\t\tif (imageUtils.isBlockImage(image)) {\n\t\t\t\t\tconst caption = imageCaptionUtils.getCaptionFromImageModelElement(image);\n\t\t\t\t\tif (!caption) return;\n\t\t\t\t\teditor.editing.reconvertItem(caption);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagecaption/imagecaptionui\n*/\n/**\n* The image caption UI plugin. It introduces the `'toggleImageCaption'` UI button.\n*/\nvar ImageCaptionUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageCaptionUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaptionUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst t = editor.t;\n\t\teditor.ui.componentFactory.add(\"toggleImageCaption\", (locale) => {\n\t\t\tconst command = editor.commands.get(\"toggleImageCaption\");\n\t\t\tconst view = new ButtonView(locale);\n\t\t\tview.set({\n\t\t\t\ticon: IconCaption,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t});\n\t\t\tview.bind(\"isOn\", \"isEnabled\").to(command, \"value\", \"isEnabled\");\n\t\t\tview.bind(\"label\").to(command, \"value\", (value) => value ? t(\"Toggle caption off\") : t(\"Toggle caption on\"));\n\t\t\tthis.listenTo(view, \"execute\", () => {\n\t\t\t\teditor.execute(\"toggleImageCaption\", { focusCaptionOnShow: true });\n\t\t\t\tconst modelCaptionElement = imageCaptionUtils.getCaptionFromModelSelection(editor.model.document.selection);\n\t\t\t\tif (modelCaptionElement) {\n\t\t\t\t\tconst figcaptionElement = editor.editing.mapper.toViewElement(modelCaptionElement);\n\t\t\t\t\teditingView.scrollToTheSelection();\n\t\t\t\t\teditingView.change((writer) => {\n\t\t\t\t\t\twriter.addClass(\"image__caption_highlighted\", figcaptionElement);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\teditor.editing.view.focus();\n\t\t\t});\n\t\t\treturn view;\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagecaption\n*/\n/**\n* The image caption plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-captions image caption} documentation.\n*/\nvar ImageCaption = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageCaptionEditing, ImageCaptionUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaption\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Creates a regular expression used to test for image files.\n*\n* ```ts\n* const imageType = createImageTypeRegExp( [ 'png', 'jpeg', 'svg+xml', 'vnd.microsoft.icon' ] );\n*\n* console.log( 'is supported image', imageType.test( file.type ) );\n* ```\n*/\nfunction createImageTypeRegExp(types) {\n\tconst regExpSafeNames = types.map((type) => type.replace(\"+\", \"\\\\+\"));\n\treturn new RegExp(`^image\\\\/(${regExpSafeNames.join(\"|\")})$`);\n}\n/**\n* Creates a promise that fetches the image local source (Base64 or blob) and resolves with a `File` object.\n*\n* @internal\n* @param image Image whose source to fetch.\n* @returns A promise which resolves when an image source is fetched and converted to a `File` instance.\n* It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n*/\nfunction fetchLocalImage(image) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst imageSrc = image.getAttribute(\"src\");\n\t\tfetch(imageSrc).then((resource) => resource.blob()).then((blob) => {\n\t\t\tconst mimeType = getImageMimeType(blob, imageSrc);\n\t\t\tconst filename = `image.${mimeType.replace(\"image/\", \"\")}`;\n\t\t\tresolve(new File([blob], filename, { type: mimeType }));\n\t\t}).catch((err) => {\n\t\t\treturn err && err.name === \"TypeError\" ? convertLocalImageOnCanvas(imageSrc).then(resolve).catch(reject) : reject(err);\n\t\t});\n\t});\n}\n/**\n* Checks whether a given node is an image element with a local source (Base64 or blob).\n*\n* @param node The node to check.\n* @internal\n*/\nfunction isLocalImage(imageUtils, node) {\n\tif (!imageUtils.isInlineImageView(node) || !node.getAttribute(\"src\")) return false;\n\treturn !!node.getAttribute(\"src\").match(/^data:image\\/\\w+;base64,/g) || !!node.getAttribute(\"src\").match(/^blob:/g);\n}\n/**\n* Extracts an image type based on its blob representation or its source.\n* @param blob Image blob representation.\n* @param src Image `src` attribute value.\n*/\nfunction getImageMimeType(blob, src) {\n\tif (blob.type) return blob.type;\n\telse if (src.match(/data:(image\\/\\w+);base64/)) return src.match(/data:(image\\/\\w+);base64/)[1].toLowerCase();\n\telse return \"image/jpeg\";\n}\n/**\n* Creates a promise that converts the image local source (Base64 or blob) to a blob using canvas and resolves\n* with a `File` object.\n* @param imageSrc Image `src` attribute value.\n* @returns A promise which resolves when an image source is converted to a `File` instance.\n* It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n*/\nfunction convertLocalImageOnCanvas(imageSrc) {\n\treturn getBlobFromCanvas(imageSrc).then((blob) => {\n\t\tconst mimeType = getImageMimeType(blob, imageSrc);\n\t\tconst filename = `image.${mimeType.replace(\"image/\", \"\")}`;\n\t\treturn new File([blob], filename, { type: mimeType });\n\t});\n}\n/**\n* Creates a promise that resolves with a `Blob` object converted from the image source (Base64 or blob).\n* @param imageSrc Image `src` attribute value.\n*/\nfunction getBlobFromCanvas(imageSrc) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst image = global.document.createElement(\"img\");\n\t\timage.addEventListener(\"load\", () => {\n\t\t\tconst canvas = global.document.createElement(\"canvas\");\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\t\t\tcanvas.getContext(\"2d\").drawImage(image, 0, 0);\n\t\t\tcanvas.toBlob((blob) => blob ? resolve(blob) : reject());\n\t\t});\n\t\timage.addEventListener(\"error\", () => reject());\n\t\timage.src = imageSrc;\n\t});\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/imageuploadui\n*/\n/**\n* The image upload button plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature} documentation.\n*\n* Adds the `'uploadImage'` button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n* and also the `imageUpload` button as an alias for backward compatibility.\n*\n* Adds the `'menuBar:uploadImage'` menu button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}.\n*\n* It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are the default components\n* through which image upload is available.\n*/\nvar ImageUploadUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUploadUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.ui.componentFactory.add(\"uploadImage\", () => this._createToolbarButton());\n\t\teditor.ui.componentFactory.add(\"imageUpload\", () => this._createToolbarButton());\n\t\teditor.ui.componentFactory.add(\"menuBar:uploadImage\", () => this._createMenuBarButton(\"standalone\"));\n\t\tif (editor.plugins.has(\"ImageInsertUI\")) editor.plugins.get(\"ImageInsertUI\").registerIntegration({\n\t\t\tname: \"upload\",\n\t\t\tobservable: () => editor.commands.get(\"uploadImage\"),\n\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\tmenuBarButtonViewCreator: (isOnly) => this._createMenuBarButton(isOnly ? \"insertOnly\" : \"insertNested\")\n\t\t});\n\t}\n\t/**\n\t* Creates the base for various kinds of the button component provided by this feature.\n\t*/\n\t_createButton(ButtonClass) {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command = editor.commands.get(\"uploadImage\");\n\t\tconst imageTypes = editor.config.get(\"image.upload.types\");\n\t\tconst imageTypesRegExp = createImageTypeRegExp(imageTypes);\n\t\tconst view = new ButtonClass(editor.locale);\n\t\tconst t = locale.t;\n\t\tview.set({\n\t\t\tacceptedType: imageTypes.map((type) => `image/${type}`).join(\",\"),\n\t\t\tallowMultipleFiles: true,\n\t\t\tlabel: t(\"Upload from computer\"),\n\t\t\ticon: IconImageUpload\n\t\t});\n\t\tview.bind(\"isEnabled\").to(command);\n\t\tview.on(\"done\", (evt, files) => {\n\t\t\tconst imagesToUpload = Array.from(files).filter((file) => imageTypesRegExp.test(file.type));\n\t\t\tif (imagesToUpload.length) {\n\t\t\t\teditor.execute(\"uploadImage\", { file: imagesToUpload });\n\t\t\t\teditor.editing.view.focus();\n\t\t\t}\n\t\t});\n\t\treturn view;\n\t}\n\t/**\n\t* Creates a simple toolbar button, with an icon and a tooltip.\n\t*/\n\t_createToolbarButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI = this.editor.plugins.get(\"ImageInsertUI\");\n\t\tconst uploadImageCommand = this.editor.commands.get(\"uploadImage\");\n\t\tconst button = this._createButton(FileDialogButtonView);\n\t\tbutton.tooltip = true;\n\t\tbutton.bind(\"label\").to(imageInsertUI, \"isImageSelected\", uploadImageCommand, \"isAccessAllowed\", (isImageSelected, isAccessAllowed) => {\n\t\t\tif (!isAccessAllowed) return t(\"You have no image upload permissions.\");\n\t\t\treturn isImageSelected ? t(\"Replace image from computer\") : t(\"Upload image from computer\");\n\t\t});\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t*/\n\t_createDropdownButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI = this.editor.plugins.get(\"ImageInsertUI\");\n\t\tconst button = this._createButton(FileDialogButtonView);\n\t\tbutton.withText = true;\n\t\tbutton.bind(\"label\").to(imageInsertUI, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Replace from computer\") : t(\"Upload from computer\"));\n\t\tbutton.on(\"execute\", () => {\n\t\t\timageInsertUI.dropdownView.isOpen = false;\n\t\t});\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the menu bar.\n\t*/\n\t_createMenuBarButton(type) {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createButton(MenuBarMenuListItemFileDialogButtonView);\n\t\tbutton.withText = true;\n\t\tswitch (type) {\n\t\t\tcase \"standalone\":\n\t\t\t\tbutton.label = t(\"Image from computer\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertOnly\":\n\t\t\t\tbutton.label = t(\"Image\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertNested\":\n\t\t\t\tbutton.label = t(\"From computer\");\n\t\t\t\tbreak;\n\t\t}\n\t\treturn button;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/imageuploadprogress\n*/\n/**\n* The image upload progress plugin.\n* It shows a placeholder when the image is read from the disk and a progress bar while the image is uploading.\n*/\nvar ImageUploadProgress = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUploadProgress\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* The image placeholder that is displayed before real image data can be accessed.\n\t*\n\t* For the record, this image is a 1x1 px GIF with an aspect ratio set by CSS.\n\t*/\n\tplaceholder;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis.placeholder = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tif (editor.plugins.has(\"ImageBlockEditing\")) editor.editing.downcastDispatcher.on(\"attribute:uploadStatus:imageBlock\", this.uploadStatusChange);\n\t\tif (editor.plugins.has(\"ImageInlineEditing\")) editor.editing.downcastDispatcher.on(\"attribute:uploadStatus:imageInline\", this.uploadStatusChange);\n\t}\n\t/**\n\t* This method is called each time the image `uploadStatus` attribute is changed.\n\t*\n\t* @param evt An object containing information about the fired event.\n\t* @param data Additional information about the change.\n\t*/\n\tuploadStatusChange = (evt, data, conversionApi) => {\n\t\tconst editor = this.editor;\n\t\tconst modelImage = data.item;\n\t\tconst uploadId = modelImage.getAttribute(\"uploadId\");\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst fileRepository = editor.plugins.get(FileRepository);\n\t\tconst status = uploadId ? data.attributeNewValue : null;\n\t\tconst placeholder = this.placeholder;\n\t\tconst viewFigure = editor.editing.mapper.toViewElement(modelImage);\n\t\tconst viewWriter = conversionApi.writer;\n\t\tif (status == \"reading\") {\n\t\t\t_startAppearEffect(viewFigure, viewWriter);\n\t\t\t_showPlaceholder(imageUtils, placeholder, viewFigure, viewWriter);\n\t\t\treturn;\n\t\t}\n\t\tif (status == \"uploading\") {\n\t\t\tconst loader = fileRepository.loaders.get(uploadId);\n\t\t\t_startAppearEffect(viewFigure, viewWriter);\n\t\t\tif (!loader) _showPlaceholder(imageUtils, placeholder, viewFigure, viewWriter);\n\t\t\telse {\n\t\t\t\t_hidePlaceholder(viewFigure, viewWriter);\n\t\t\t\t_showProgressBar(viewFigure, viewWriter, loader, editor.editing.view);\n\t\t\t\t_displayLocalImage(imageUtils, viewFigure, viewWriter, loader);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (status == \"complete\" && fileRepository.loaders.get(uploadId)) _showCompleteIcon(viewFigure, viewWriter, editor.editing.view);\n\t\t_hideProgressBar(viewFigure, viewWriter);\n\t\t_hidePlaceholder(viewFigure, viewWriter);\n\t\t_stopAppearEffect(viewFigure, viewWriter);\n\t};\n};\n/**\n* Adds ck-appear class to the image figure if one is not already applied.\n*/\nfunction _startAppearEffect(viewFigure, writer) {\n\tif (!viewFigure.hasClass(\"ck-appear\")) writer.addClass(\"ck-appear\", viewFigure);\n}\n/**\n* Removes ck-appear class to the image figure if one is not already removed.\n*/\nfunction _stopAppearEffect(viewFigure, writer) {\n\twriter.removeClass(\"ck-appear\", viewFigure);\n}\n/**\n* Shows placeholder together with infinite progress bar on given image figure.\n*/\nfunction _showPlaceholder(imageUtils, placeholder, viewFigure, writer) {\n\tif (!viewFigure.hasClass(\"ck-image-upload-placeholder\")) writer.addClass(\"ck-image-upload-placeholder\", viewFigure);\n\tconst viewImg = imageUtils.findViewImgElement(viewFigure);\n\tif (viewImg.getAttribute(\"src\") !== placeholder) writer.setAttribute(\"src\", placeholder, viewImg);\n\tif (!_getUIElement(viewFigure, \"placeholder\")) writer.insert(writer.createPositionAfter(viewImg), _createPlaceholder(writer));\n}\n/**\n* Removes placeholder together with infinite progress bar on given image figure.\n*/\nfunction _hidePlaceholder(viewFigure, writer) {\n\tif (viewFigure.hasClass(\"ck-image-upload-placeholder\")) writer.removeClass(\"ck-image-upload-placeholder\", viewFigure);\n\t_removeUIElement(viewFigure, writer, \"placeholder\");\n}\n/**\n* Shows progress bar displaying upload progress.\n* Attaches it to the file loader to update when upload percentace is changed.\n*/\nfunction _showProgressBar(viewFigure, writer, loader, view) {\n\tconst progressBar = _createProgressBar(writer);\n\twriter.insert(writer.createPositionAt(viewFigure, \"end\"), progressBar);\n\tloader.on(\"change:uploadedPercent\", (evt, name, value) => {\n\t\tview.change((writer) => {\n\t\t\twriter.setStyle(\"width\", value + \"%\", progressBar);\n\t\t});\n\t});\n}\n/**\n* Hides upload progress bar.\n*/\nfunction _hideProgressBar(viewFigure, writer) {\n\t_removeUIElement(viewFigure, writer, \"progressBar\");\n}\n/**\n* Shows complete icon and hides after a certain amount of time.\n*/\nfunction _showCompleteIcon(viewFigure, writer, view) {\n\tconst completeIcon = writer.createUIElement(\"div\", { class: \"ck-image-upload-complete-icon\" });\n\twriter.insert(writer.createPositionAt(viewFigure, \"end\"), completeIcon);\n\tsetTimeout(() => {\n\t\tview.change((writer) => writer.remove(writer.createRangeOn(completeIcon)));\n\t}, 3e3);\n}\n/**\n* Create progress bar element using {@link module:engine/view/uielement~ViewUIElement}.\n*/\nfunction _createProgressBar(writer) {\n\tconst progressBar = writer.createUIElement(\"div\", { class: \"ck-progress-bar\" });\n\twriter.setCustomProperty(\"progressBar\", true, progressBar);\n\treturn progressBar;\n}\n/**\n* Create placeholder element using {@link module:engine/view/uielement~ViewUIElement}.\n*/\nfunction _createPlaceholder(writer) {\n\tconst placeholder = writer.createUIElement(\"div\", { class: \"ck-upload-placeholder-loader\" });\n\twriter.setCustomProperty(\"placeholder\", true, placeholder);\n\treturn placeholder;\n}\n/**\n* Returns {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n* Returns `undefined` if element is not found.\n*/\nfunction _getUIElement(imageFigure, uniqueProperty) {\n\tfor (const child of imageFigure.getChildren()) if (child.getCustomProperty(uniqueProperty)) return child;\n}\n/**\n* Removes {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n*/\nfunction _removeUIElement(viewFigure, writer, uniqueProperty) {\n\tconst element = _getUIElement(viewFigure, uniqueProperty);\n\tif (element) writer.remove(writer.createRangeOn(element));\n}\n/**\n* Displays local data from file loader.\n*/\nfunction _displayLocalImage(imageUtils, viewFigure, writer, loader) {\n\tif (loader.data) {\n\t\tconst viewImg = imageUtils.findViewImgElement(viewFigure);\n\t\twriter.setAttribute(\"src\", loader.data, viewImg);\n\t}\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/uploadimagecommand\n*/\n/**\n* The upload image command.\n*\n* The command is registered by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin as `uploadImage`\n* and it is also available via aliased `imageUpload` name.\n*\n* In order to upload an image at the current selection position\n* (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n* execute the command and pass the native image file instance:\n*\n* ```ts\n* this.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n* \t// Assuming that only images were pasted:\n* \tconst images = Array.from( data.dataTransfer.files );\n*\n* \t// Upload the first image:\n* \teditor.execute( 'uploadImage', { file: images[ 0 ] } );\n* } );\n* ```\n*\n* It is also possible to insert multiple images at once:\n*\n* ```ts\n* editor.execute( 'uploadImage', {\n* \tfile: [\n* \t\tfile1,\n* \t\tfile2\n* \t]\n* } );\n* ```\n*/\nvar UploadImageCommand = class extends Command {\n\t/**\n\t* Creates an instance of the `imageUlpoad` command. When executed, the command upload one of\n\t* the currently selected image from computer.\n\t*\n\t* @param editor The editor instance.\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis.set(\"isAccessAllowed\", true);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst selectedElement = editor.model.document.selection.getSelectedElement();\n\t\tthis.isEnabled = imageUtils.isImageAllowed() || imageUtils.isImage(selectedElement);\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options Options for the executed command.\n\t* @param options.file The image file or an array of image files to upload.\n\t*/\n\texecute(options) {\n\t\tconst files = toArray(options.file);\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst selectionAttributes = Object.fromEntries(selection.getAttributes());\n\t\tfiles.forEach((file, index) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\t\t\tif (index && selectedElement && imageUtils.isImage(selectedElement)) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter(selectedElement);\n\t\t\t\tthis._uploadImage(file, selectionAttributes, position);\n\t\t\t} else this._uploadImage(file, selectionAttributes);\n\t\t});\n\t}\n\t/**\n\t* Handles uploading single file.\n\t*/\n\t_uploadImage(file, attributes, position) {\n\t\tconst editor = this.editor;\n\t\tconst loader = editor.plugins.get(FileRepository).createLoader(file);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tif (!loader) return;\n\t\timageUtils.insertImage({\n\t\t\t...attributes,\n\t\t\tuploadId: loader.id\n\t\t}, position);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/imageuploadediting\n*/\n/**\n* The editing part of the image upload feature. It registers the `'uploadImage'` command\n* and the `imageUpload` command as an aliased name.\n*\n* When an image is uploaded, it fires the {@link ~ImageUploadEditing#event:uploadComplete `uploadComplete`} event\n* that allows adding custom attributes to the {@link module:engine/model/element~ModelElement image element}.\n*/\nvar ImageUploadEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tFileRepository,\n\t\t\tNotification,\n\t\t\tClipboardPipeline,\n\t\t\tImageUtils\n\t\t];\n\t}\n\tstatic get pluginName() {\n\t\treturn \"ImageUploadEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t* model elements during the upload.\n\t*\n\t* Model element of the uploaded image can change, for instance, when {@link module:image/image/imagetypecommand~ImageTypeCommand}\n\t* is executed as a result of adding caption or changing image style. As a result, the upload logic must keep track of the model\n\t* element (reference) and resolve the upload for the correct model element (instead of the one that landed in the `$graveyard`\n\t* after image type changed).\n\t*/\n\t_uploadImageElements;\n\t/**\n\t* An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t* upload responses for handling images dragged during their upload process. When such images are later\n\t* dropped, their original upload IDs no longer exist in the registry (as the original upload completed).\n\t* This map preserves the upload responses to properly handle such cases.\n\t*/\n\t_uploadedImages = /* @__PURE__ */ new Map();\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\teditor.config.define(\"image\", { upload: { types: [\n\t\t\t\"jpeg\",\n\t\t\t\"png\",\n\t\t\t\"gif\",\n\t\t\t\"bmp\",\n\t\t\t\"webp\",\n\t\t\t\"tiff\"\n\t\t] } });\n\t\tthis._uploadImageElements = /* @__PURE__ */ new Map();\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst doc = editor.model.document;\n\t\tconst conversion = editor.conversion;\n\t\tconst fileRepository = editor.plugins.get(FileRepository);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tconst imageTypes = createImageTypeRegExp(editor.config.get(\"image.upload.types\"));\n\t\tconst uploadImageCommand = new UploadImageCommand(editor);\n\t\teditor.commands.add(\"uploadImage\", uploadImageCommand);\n\t\teditor.commands.add(\"imageUpload\", uploadImageCommand);\n\t\tconversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: \"img\",\n\t\t\t\tkey: \"uploadId\"\n\t\t\t},\n\t\t\tmodel: \"uploadId\"\n\t\t}).add((dispatcher) => dispatcher.on(\"element:img\", (evt, data, conversionApi) => {\n\t\t\tif (!conversionApi.consumable.test(data.viewItem, { attributes: [\"data-ck-upload-id\"] })) return;\n\t\t\tconst uploadId = data.viewItem.getAttribute(\"data-ck-upload-id\");\n\t\t\tif (!uploadId) return;\n\t\t\tif (!data.modelRange) return;\n\t\t\tconst [modelElement] = Array.from(data.modelRange.getItems({ shallow: true }));\n\t\t\tconst loader = fileRepository.loaders.get(uploadId);\n\t\t\tif (modelElement) {\n\t\t\t\tconversionApi.writer.setAttribute(\"uploadId\", uploadId, modelElement);\n\t\t\t\tconversionApi.consumable.consume(data.viewItem, { attributes: [\"data-ck-upload-id\"] });\n\t\t\t\tif (loader && loader.data) conversionApi.writer.setAttribute(\"uploadStatus\", loader.status, modelElement);\n\t\t\t}\n\t\t}, { priority: \"low\" }));\n\t\tthis.listenTo(editor.editing.view.document, \"clipboardInput\", (evt, data) => {\n\t\t\tif (isHtmlInDataTransfer(data.dataTransfer)) return;\n\t\t\tconst images = Array.from(data.dataTransfer.files).filter((file) => {\n\t\t\t\tif (!file) return false;\n\t\t\t\treturn imageTypes.test(file.type);\n\t\t\t});\n\t\t\tif (!images.length) return;\n\t\t\tevt.stop();\n\t\t\teditor.model.change((writer) => {\n\t\t\t\tif (data.targetRanges) writer.setSelection(data.targetRanges.map((viewRange) => editor.editing.mapper.toModelRange(viewRange)));\n\t\t\t\teditor.execute(\"uploadImage\", { file: images });\n\t\t\t});\n\t\t\tif (!editor.commands.get(\"uploadImage\").isAccessAllowed) {\n\t\t\t\tconst notification = editor.plugins.get(\"Notification\");\n\t\t\t\tconst t = editor.locale.t;\n\t\t\t\tnotification.showWarning(t(\"You have no image upload permissions.\"), { namespace: \"image\" });\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", (evt, data) => {\n\t\t\tconst fetchableImages = Array.from(editor.editing.view.createRangeIn(data.content)).map((value) => value.item).filter((viewElement) => isLocalImage(imageUtils, viewElement) && !viewElement.getAttribute(\"uploadProcessed\")).map((viewElement) => {\n\t\t\t\treturn {\n\t\t\t\t\tpromise: fetchLocalImage(viewElement),\n\t\t\t\t\timageElement: viewElement\n\t\t\t\t};\n\t\t\t});\n\t\t\tif (!fetchableImages.length) return;\n\t\t\tconst writer = new ViewUpcastWriter(editor.editing.view.document);\n\t\t\tfor (const fetchableImage of fetchableImages) {\n\t\t\t\twriter.setAttribute(\"uploadProcessed\", true, fetchableImage.imageElement);\n\t\t\t\tconst loader = fileRepository.createLoader(fetchableImage.promise);\n\t\t\t\tif (loader) {\n\t\t\t\t\twriter.setAttribute(\"src\", \"\", fetchableImage.imageElement);\n\t\t\t\t\twriter.setAttribute(\"uploadId\", loader.id, fetchableImage.imageElement);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\teditor.editing.view.document.on(\"dragover\", (evt, data) => {\n\t\t\tdata.preventDefault();\n\t\t});\n\t\tdoc.on(\"change\", () => {\n\t\t\tconst changes = doc.differ.getChanges({ includeChangesInGraveyard: true }).reverse();\n\t\t\tconst insertedImagesIds = /* @__PURE__ */ new Set();\n\t\t\tfor (const entry of changes) if (entry.type == \"insert\" && entry.name != \"$text\") {\n\t\t\t\tconst item = entry.position.nodeAfter;\n\t\t\t\tconst isInsertedInGraveyard = entry.position.root.rootName == \"$graveyard\";\n\t\t\t\tfor (const imageElement of getImagesFromChangeItem(editor, item)) {\n\t\t\t\t\tconst uploadId = imageElement.getAttribute(\"uploadId\");\n\t\t\t\t\tconst uploadStatus = imageElement.getAttribute(\"uploadStatus\");\n\t\t\t\t\tif (!uploadId || uploadStatus == \"complete\") continue;\n\t\t\t\t\tconst loader = fileRepository.loaders.get(uploadId);\n\t\t\t\t\tif (!loader) {\n\t\t\t\t\t\tif (!isInsertedInGraveyard && this._uploadedImages.has(uploadId)) editor.model.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\t\t\t\twriter.setAttribute(\"uploadStatus\", \"complete\", imageElement);\n\t\t\t\t\t\t\tthis.fire(\"uploadComplete\", {\n\t\t\t\t\t\t\t\tdata: this._uploadedImages.get(uploadId),\n\t\t\t\t\t\t\t\timageElement\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (isInsertedInGraveyard) {\n\t\t\t\t\t\tif (!insertedImagesIds.has(uploadId)) {\n\t\t\t\t\t\t\tif (Array.from(this._uploadImageElements.get(uploadId)).every((element) => element.root.rootName == \"$graveyard\")) loader.abort();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinsertedImagesIds.add(uploadId);\n\t\t\t\t\t\tif (!this._uploadImageElements.has(uploadId)) this._uploadImageElements.set(uploadId, new Set([imageElement]));\n\t\t\t\t\t\telse this._uploadImageElements.get(uploadId).add(imageElement);\n\t\t\t\t\t\tif (loader.status == \"idle\") this._readAndUpload(loader);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.on(\"uploadComplete\", (evt, { imageElement, data }) => {\n\t\t\tconst urls = data.urls ? data.urls : data;\n\t\t\tthis.editor.model.change((writer) => {\n\t\t\t\twriter.setAttribute(\"src\", urls.default, imageElement);\n\t\t\t\tthis._parseAndSetSrcsetAttributeOnImage(urls, imageElement, writer);\n\t\t\t\timageUtils.setImageNaturalSizeAttributes(imageElement);\n\t\t\t});\n\t\t}, { priority: \"low\" });\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (this.editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\tschema.extend(\"imageBlock\", { allowAttributes: [\"uploadId\", \"uploadStatus\"] });\n\t\t\tthis._registerConverters(\"imageBlock\");\n\t\t}\n\t\tif (this.editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\tschema.extend(\"imageInline\", { allowAttributes: [\"uploadId\", \"uploadStatus\"] });\n\t\t\tthis._registerConverters(\"imageInline\");\n\t\t}\n\t}\n\t/**\n\t* Reads and uploads an image.\n\t*\n\t* The image is read from the disk and as a Base64-encoded string it is set temporarily to\n\t* `image[src]`. When the image is successfully uploaded, the temporary data is replaced with the target\n\t* image's URL (the URL to the uploaded image on the server).\n\t*/\n\t_readAndUpload(loader) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst t = editor.locale.t;\n\t\tconst fileRepository = editor.plugins.get(FileRepository);\n\t\tconst notification = editor.plugins.get(Notification);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageUploadElements = this._uploadImageElements;\n\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\tconst elements = imageUploadElements.get(loader.id);\n\t\t\tfor (const element of elements) writer.setAttribute(\"uploadStatus\", \"reading\", element);\n\t\t});\n\t\treturn loader.read().then(() => {\n\t\t\tconst promise = loader.upload();\n\t\t\tif (editor.ui) editor.ui.ariaLiveAnnouncer.announce(t(\"Uploading image\"));\n\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) {\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif (env.isSafari) {\n\t\t\t\t\tconst viewFigure = editor.editing.mapper.toViewElement(imageElement);\n\t\t\t\t\tconst viewImg = imageUtils.findViewImgElement(viewFigure);\n\t\t\t\t\teditor.editing.view.once(\"render\", () => {\n\t\t\t\t\t\tif (!viewImg.parent) return;\n\t\t\t\t\t\tconst domFigure = editor.editing.view.domConverter.mapViewToDom(viewImg.parent);\n\t\t\t\t\t\tif (!domFigure) return;\n\t\t\t\t\t\tconst originalDisplay = domFigure.style.display;\n\t\t\t\t\t\tdomFigure.style.display = \"none\";\n\t\t\t\t\t\tdomFigure._ckHack = domFigure.offsetHeight;\n\t\t\t\t\t\tdomFigure.style.display = originalDisplay;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\t\twriter.setAttribute(\"uploadStatus\", \"uploading\", imageElement);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn promise;\n\t\t}).then((data) => {\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) {\n\t\t\t\t\twriter.setAttribute(\"uploadStatus\", \"complete\", imageElement);\n\t\t\t\t\tthis.fire(\"uploadComplete\", {\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\timageElement\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (editor.ui) editor.ui.ariaLiveAnnouncer.announce(t(\"Image upload complete\"));\n\t\t\t\tthis._uploadedImages.set(loader.id, data);\n\t\t\t});\n\t\t\tclean();\n\t\t}).catch((error) => {\n\t\t\tif (editor.ui) editor.ui.ariaLiveAnnouncer.announce(t(\"Error during image upload\"));\n\t\t\tif (loader.status !== \"error\" && loader.status !== \"aborted\") throw error;\n\t\t\tif (loader.status == \"error\" && error) notification.showWarning(error, {\n\t\t\t\ttitle: t(\"Upload failed\"),\n\t\t\t\tnamespace: \"upload\"\n\t\t\t});\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) if (imageElement.root.rootName !== \"$graveyard\") writer.remove(imageElement);\n\t\t\t});\n\t\t\tclean();\n\t\t});\n\t\tfunction clean() {\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) {\n\t\t\t\t\twriter.removeAttribute(\"uploadId\", imageElement);\n\t\t\t\t\twriter.removeAttribute(\"uploadStatus\", imageElement);\n\t\t\t\t}\n\t\t\t\timageUploadElements.delete(loader.id);\n\t\t\t});\n\t\t\tfileRepository.destroyLoader(loader);\n\t\t}\n\t}\n\t/**\n\t* Creates the `srcset` attribute based on a given file upload response and sets it as an attribute to a specific image element.\n\t*\n\t* @param data Data object from which `srcset` will be created.\n\t* @param image The image element on which the `srcset` attribute will be set.\n\t*/\n\t_parseAndSetSrcsetAttributeOnImage(data, image, writer) {\n\t\tlet maxWidth = 0;\n\t\tconst srcsetAttribute = Object.keys(data).filter((key) => {\n\t\t\tconst width = parseInt(key, 10);\n\t\t\tif (!isNaN(width)) {\n\t\t\t\tmaxWidth = Math.max(maxWidth, width);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}).map((key) => `${data[key]} ${key}w`).join(\", \");\n\t\tif (srcsetAttribute != \"\") {\n\t\t\tconst attributes = { srcset: srcsetAttribute };\n\t\t\tif (!image.hasAttribute(\"width\") && !image.hasAttribute(\"height\")) attributes.width = maxWidth;\n\t\t\twriter.setAttributes(attributes, image);\n\t\t}\n\t}\n\t/**\n\t* Registers image upload converters.\n\t*\n\t* @param imageType The type of the image.\n\t*/\n\t_registerConverters(imageType) {\n\t\tconst { conversion, plugins } = this.editor;\n\t\tconst fileRepository = plugins.get(FileRepository);\n\t\tconst imageUtils = plugins.get(ImageUtils);\n\t\tconversion.for(\"dataDowncast\").add((dispatcher) => {\n\t\t\tdispatcher.on(`attribute:uploadId:${imageType}`, (evt, data, conversionApi) => {\n\t\t\t\tif (!conversionApi.consumable.test(data.item, evt.name)) return;\n\t\t\t\tconst loader = fileRepository.loaders.get(data.attributeNewValue);\n\t\t\t\tif (!loader || !loader.data) return null;\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement(data.item);\n\t\t\t\tconst img = imageUtils.findViewImgElement(viewElement);\n\t\t\t\tif (img) {\n\t\t\t\t\tconversionApi.consumable.consume(data.item, evt.name);\n\t\t\t\t\tconversionApi.writer.setAttribute(\"data-ck-upload-id\", loader.id, img);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* TODO move this to the clipboard package.\n*\n* Returns `true` if non-empty `text/html` is included in the data transfer.\n*/\nfunction isHtmlInDataTransfer(dataTransfer) {\n\treturn Array.from(dataTransfer.types).includes(\"text/html\") && dataTransfer.getData(\"text/html\") !== \"\";\n}\nfunction getImagesFromChangeItem(editor, item) {\n\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\treturn Array.from(editor.model.createRangeOn(item)).filter((value) => imageUtils.isImage(value.item)).map((value) => value.item);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload\n*/\n/**\n* The image upload plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload image upload feature} documentation.\n*\n* This plugin does not do anything directly, but it loads a set of specific plugins to enable image uploading:\n*\n* * {@link module:image/imageupload/imageuploadediting~ImageUploadEditing},\n* * {@link module:image/imageupload/imageuploadui~ImageUploadUI},\n* * {@link module:image/imageupload/imageuploadprogress~ImageUploadProgress}.\n*/\nvar ImageUpload = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUpload\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageUploadEditing,\n\t\t\tImageUploadUI,\n\t\t\tImageUploadProgress\n\t\t];\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/ui/imageinserturlview\n*/\n/**\n* The insert an image via URL view.\n*\n* See {@link module:image/imageinsert/imageinsertviaurlui~ImageInsertViaUrlUI}.\n*\n* @internal\n*/\nvar ImageInsertUrlView = class extends View {\n\t/**\n\t* The URL input field view.\n\t*/\n\turlInputView;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t*\n\t* @param locale The localization services instance.\n\t*/\n\tconstructor(locale) {\n\t\tsuper(locale);\n\t\tthis.set(\"imageURLInputValue\", \"\");\n\t\tthis.set(\"isImageSelected\", false);\n\t\tthis.set(\"isEnabled\", true);\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.urlInputView = this._createUrlInputView();\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\"ck\", \"ck-image-insert-url\"],\n\t\t\t\ttabindex: \"-1\"\n\t\t\t},\n\t\t\tchildren: [this.urlInputView, {\n\t\t\t\ttag: \"div\",\n\t\t\t\tattributes: { class: [\"ck\", \"ck-image-insert-url__action-row\"] }\n\t\t\t}]\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\tthis.keystrokes.listenTo(this.element);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Creates the {@link #urlInputView}.\n\t*/\n\t_createUrlInputView() {\n\t\tconst locale = this.locale;\n\t\tconst t = locale.t;\n\t\tconst urlInputView = new LabeledFieldView(locale, createLabeledInputText);\n\t\turlInputView.bind(\"label\").to(this, \"isImageSelected\", (value) => value ? t(\"Update image URL\") : t(\"Insert image via URL\"));\n\t\turlInputView.bind(\"isEnabled\").to(this);\n\t\turlInputView.fieldView.inputMode = \"url\";\n\t\turlInputView.fieldView.placeholder = \"https://example.com/image.png\";\n\t\turlInputView.fieldView.bind(\"value\").to(this, \"imageURLInputValue\", (value) => value || \"\");\n\t\turlInputView.fieldView.on(\"input\", () => {\n\t\t\tthis.imageURLInputValue = urlInputView.fieldView.element.value.trim();\n\t\t});\n\t\treturn urlInputView;\n\t}\n\t/**\n\t* Focuses the view.\n\t*/\n\tfocus() {\n\t\tthis.urlInputView.focus();\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/imageinsertviaurlui\n*/\n/**\n* The image insert via URL plugin (UI part).\n*\n* The plugin introduces two UI components to the {@link module:ui/componentfactory~ComponentFactory UI component factory}:\n*\n* * the `'insertImageViaUrl'` toolbar button,\n* * the `'menuBar:insertImageViaUrl'` menu bar component.\n*\n* It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are default components\n* through which inserting image via URL is available.\n*/\nvar ImageInsertViaUrlUI = class extends Plugin {\n\t_imageInsertUI;\n\t_formView;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsertViaUrlUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageInsertUI, Dialog];\n\t}\n\tinit() {\n\t\tthis.editor.ui.componentFactory.add(\"insertImageViaUrl\", () => this._createToolbarButton());\n\t\tthis.editor.ui.componentFactory.add(\"menuBar:insertImageViaUrl\", () => this._createMenuBarButton(\"standalone\"));\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._imageInsertUI = this.editor.plugins.get(\"ImageInsertUI\");\n\t\tthis._imageInsertUI.registerIntegration({\n\t\t\tname: \"url\",\n\t\t\tobservable: () => this.editor.commands.get(\"insertImage\"),\n\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\tmenuBarButtonViewCreator: (isOnly) => this._createMenuBarButton(isOnly ? \"insertOnly\" : \"insertNested\")\n\t\t});\n\t}\n\t/**\n\t* Creates the base for various kinds of the button component provided by this feature.\n\t*/\n\t_createInsertUrlButton(ButtonClass) {\n\t\tconst button = new ButtonClass(this.editor.locale);\n\t\tbutton.icon = IconImageUrl;\n\t\tbutton.on(\"execute\", () => {\n\t\t\tthis._showModal();\n\t\t});\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a simple toolbar button, with an icon and a tooltip.\n\t*/\n\t_createToolbarButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton(ButtonView);\n\t\tbutton.tooltip = true;\n\t\tbutton.bind(\"label\").to(this._imageInsertUI, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Update image URL\") : t(\"Insert image via URL\"));\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t*/\n\t_createDropdownButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton(ButtonView);\n\t\tbutton.withText = true;\n\t\tbutton.bind(\"label\").to(this._imageInsertUI, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Update image URL\") : t(\"Insert via URL\"));\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the menu bar.\n\t*/\n\t_createMenuBarButton(type) {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton(MenuBarMenuListItemButtonView);\n\t\tbutton.withText = true;\n\t\tswitch (type) {\n\t\t\tcase \"standalone\":\n\t\t\t\tbutton.label = t(\"Image via URL\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertOnly\":\n\t\t\t\tbutton.label = t(\"Image\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertNested\":\n\t\t\t\tbutton.label = t(\"Via URL\");\n\t\t\t\tbreak;\n\t\t}\n\t\treturn button;\n\t}\n\t/**\n\t* Creates the form view used to submit the image URL.\n\t*/\n\t_createInsertUrlView() {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst replaceImageSourceCommand = editor.commands.get(\"replaceImageSource\");\n\t\tconst insertImageCommand = editor.commands.get(\"insertImage\");\n\t\tconst imageInsertUrlView = new ImageInsertUrlView(locale);\n\t\timageInsertUrlView.bind(\"isImageSelected\").to(this._imageInsertUI);\n\t\timageInsertUrlView.bind(\"isEnabled\").toMany([insertImageCommand, replaceImageSourceCommand], \"isEnabled\", (...isEnabled) => isEnabled.some((isCommandEnabled) => isCommandEnabled));\n\t\treturn imageInsertUrlView;\n\t}\n\t/**\n\t* Shows the insert image via URL form view in a modal.\n\t*/\n\t_showModal() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst dialog = editor.plugins.get(\"Dialog\");\n\t\tif (!this._formView) {\n\t\t\tthis._formView = this._createInsertUrlView();\n\t\t\tthis._formView.on(\"submit\", () => this._handleSave());\n\t\t}\n\t\tconst replaceImageSourceCommand = editor.commands.get(\"replaceImageSource\");\n\t\tthis._formView.imageURLInputValue = replaceImageSourceCommand.value || \"\";\n\t\tdialog.show({\n\t\t\tid: \"insertImageViaUrl\",\n\t\t\ttitle: t(\"Image via URL\"),\n\t\t\tisModal: true,\n\t\t\tcontent: this._formView,\n\t\t\tactionButtons: [{\n\t\t\t\tlabel: t(\"Cancel\"),\n\t\t\t\twithText: true,\n\t\t\t\tonExecute: () => dialog.hide()\n\t\t\t}, {\n\t\t\t\tlabel: this._imageInsertUI.isImageSelected ? t(\"Save\") : t(\"Insert\"),\n\t\t\t\tclass: \"ck-button-action\",\n\t\t\t\twithText: true,\n\t\t\t\tonExecute: () => this._handleSave()\n\t\t\t}]\n\t\t});\n\t}\n\t/**\n\t* Executes appropriate command depending on selection and form value.\n\t*/\n\t_handleSave() {\n\t\tif (this.editor.commands.get(\"replaceImageSource\").isEnabled) this.editor.execute(\"replaceImageSource\", { source: this._formView.imageURLInputValue });\n\t\telse this.editor.execute(\"insertImage\", { source: this._formView.imageURLInputValue });\n\t\tthis.editor.plugins.get(\"Dialog\").hide();\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsertviaurl\n*/\n/**\n* The image insert via URL plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-inserting\n* Insert images via source URL} documentation.\n*\n* This plugin does not do anything directly, but it loads a set of specific plugins\n* to enable image inserting via implemented integrations:\n*\n* * {@link module:image/imageinsert/imageinsertui~ImageInsertUI},\n*/\nvar ImageInsertViaUrl = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsertViaUrl\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageInsertViaUrlUI, ImageInsertUI];\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert\n*/\n/**\n* The image insert plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n* and {@glink features/images/images-inserting Insert images via source URL} documentation.\n*\n* This plugin does not do anything directly, but it loads a set of specific plugins\n* to enable image uploading or inserting via implemented integrations:\n*\n* * {@link module:image/imageupload~ImageUpload}\n* * {@link module:image/imageinsert/imageinsertui~ImageInsertUI}\n*/\nvar ImageInsert = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsert\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageUpload,\n\t\t\tImageInsertViaUrl,\n\t\t\tImageInsertUI\n\t\t];\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/resizeimagecommand\n*/\n/**\n* The resize image command. Currently, it only supports the width attribute.\n*/\nvar ResizeImageCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst element = editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(editor.model.document.selection);\n\t\tthis.isEnabled = !!element;\n\t\tif (!element || !element.hasAttribute(\"resizedWidth\")) this.value = null;\n\t\telse this.value = {\n\t\t\twidth: element.getAttribute(\"resizedWidth\"),\n\t\t\theight: null\n\t\t};\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* ```ts\n\t* // Sets the width to 50%:\n\t* editor.execute( 'resizeImage', { width: '50%' } );\n\t*\n\t* // Removes the width attribute:\n\t* editor.execute( 'resizeImage', { width: null } );\n\t* ```\n\t*\n\t* @param options\n\t* @param options.width The new width of the image.\n\t* @fires execute\n\t*/\n\texecute(options) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tthis.value = {\n\t\t\twidth: options.width,\n\t\t\theight: null\n\t\t};\n\t\tif (imageElement) model.change((writer) => {\n\t\t\twriter.setAttribute(\"resizedWidth\", options.width, imageElement);\n\t\t\twriter.removeAttribute(\"resizedHeight\", imageElement);\n\t\t\timageUtils.setImageNaturalSizeAttributes(imageElement);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image resize editing feature.\n*\n* It adds the ability to resize each image using handles or manually by\n* {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n*/\nvar ImageResizeEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResizeEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t* @internal\n\t*/\n\tstatic get licenseFeatureCode() {\n\t\treturn \"IR\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isPremiumPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\teditor.config.define(\"image\", {\n\t\t\tresizeUnit: \"%\",\n\t\t\tresizeOptions: [\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:original\",\n\t\t\t\t\tvalue: null,\n\t\t\t\t\ticon: \"original\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:custom\",\n\t\t\t\t\tvalue: \"custom\",\n\t\t\t\t\ticon: \"custom\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:25\",\n\t\t\t\t\tvalue: \"25\",\n\t\t\t\t\ticon: \"small\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:50\",\n\t\t\t\t\tvalue: \"50\",\n\t\t\t\t\ticon: \"medium\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:75\",\n\t\t\t\t\tvalue: \"75\",\n\t\t\t\t\ticon: \"large\"\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst resizeImageCommand = new ResizeImageCommand(editor);\n\t\tthis._registerConverters(\"imageBlock\");\n\t\tthis._registerConverters(\"imageInline\");\n\t\teditor.commands.add(\"resizeImage\", resizeImageCommand);\n\t\teditor.commands.add(\"imageResize\", resizeImageCommand);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._registerSchema();\n\t}\n\t_registerSchema() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (this.editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\tschema.extend(\"imageBlock\", { allowAttributes: [\"resizedWidth\", \"resizedHeight\"] });\n\t\t\tschema.setAttributeProperties(\"resizedWidth\", { isFormatting: true });\n\t\t\tschema.setAttributeProperties(\"resizedHeight\", { isFormatting: true });\n\t\t}\n\t\tif (this.editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\tschema.extend(\"imageInline\", { allowAttributes: [\"resizedWidth\", \"resizedHeight\"] });\n\t\t\tschema.setAttributeProperties(\"resizedWidth\", { isFormatting: true });\n\t\t\tschema.setAttributeProperties(\"resizedHeight\", { isFormatting: true });\n\t\t}\n\t}\n\t/**\n\t* Registers image resize converters.\n\t*\n\t* @param imageType The type of the image.\n\t*/\n\t_registerConverters(imageType) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\teditor.conversion.for(\"downcast\").add((dispatcher) => dispatcher.on(`attribute:resizedWidth:${imageType}`, (evt, data, conversionApi) => {\n\t\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewImg = conversionApi.mapper.toViewElement(data.item);\n\t\t\tif (data.attributeNewValue !== null) {\n\t\t\t\tviewWriter.setStyle(\"width\", data.attributeNewValue, viewImg);\n\t\t\t\tviewWriter.addClass(\"image_resized\", viewImg);\n\t\t\t} else {\n\t\t\t\tviewWriter.removeStyle(\"width\", viewImg);\n\t\t\t\tviewWriter.removeClass(\"image_resized\", viewImg);\n\t\t\t}\n\t\t}));\n\t\teditor.conversion.for(\"dataDowncast\").attributeToAttribute({\n\t\t\tmodel: {\n\t\t\t\tname: imageType,\n\t\t\t\tkey: \"resizedHeight\"\n\t\t\t},\n\t\t\tview: (modelAttributeValue) => ({\n\t\t\t\tkey: \"style\",\n\t\t\t\tvalue: { \"height\": modelAttributeValue }\n\t\t\t})\n\t\t});\n\t\teditor.conversion.for(\"editingDowncast\").add((dispatcher) => dispatcher.on(`attribute:resizedHeight:${imageType}`, (evt, data, conversionApi) => {\n\t\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewImg = conversionApi.mapper.toViewElement(data.item);\n\t\t\tconst target = imageType === \"imageInline\" ? imageUtils.findViewImgElement(viewImg) : viewImg;\n\t\t\tif (data.attributeNewValue !== null) viewWriter.setStyle(\"height\", data.attributeNewValue, target);\n\t\t\telse viewWriter.removeStyle(\"height\", target);\n\t\t}));\n\t\teditor.conversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: imageType === \"imageBlock\" ? \"figure\" : \"img\",\n\t\t\t\tstyles: { width: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"resizedWidth\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return null;\n\t\t\t\t\treturn viewElement.getStyle(\"width\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\teditor.conversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: imageType === \"imageBlock\" ? \"figure\" : \"img\",\n\t\t\t\tstyles: { height: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"resizedHeight\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return null;\n\t\t\t\t\treturn viewElement.getStyle(\"height\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\teditor.conversion.for(\"upcast\").add((dispatcher) => {\n\t\t\tdispatcher.on(`element:${imageType === \"imageBlock\" ? \"figure\" : \"img\"}`, (evt, data, conversionApi) => {\n\t\t\t\tconversionApi.consumable.consume(data.viewItem, { classes: [\"image_resized\"] });\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/imageresizebuttons\n*/\nconst RESIZE_ICONS = /* #__PURE__ */ (() => ({\n\tsmall: IconObjectSizeSmall,\n\tmedium: IconObjectSizeMedium,\n\tlarge: IconObjectSizeLarge,\n\tcustom: IconObjectSizeCustom,\n\toriginal: IconObjectSizeFull\n}))();\n/**\n* The image resize buttons plugin.\n*\n* It adds a possibility to resize images using the toolbar dropdown or individual buttons, depending on the plugin configuration.\n*/\nvar ImageResizeButtons = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageResizeEditing];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResizeButtons\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* The resize unit.\n\t* @default '%'\n\t*/\n\t_resizeUnit;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis._resizeUnit = editor.config.get(\"image.resizeUnit\");\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst options = editor.config.get(\"image.resizeOptions\");\n\t\tconst command = editor.commands.get(\"resizeImage\");\n\t\tthis.bind(\"isEnabled\").to(command);\n\t\tfor (const option of options) this._registerImageResizeButton(option);\n\t\tthis._registerImageResizeDropdown(options);\n\t}\n\t/**\n\t* A helper function that creates a standalone button component for the plugin.\n\t*\n\t* @param option A model of the resize option.\n\t*/\n\t_registerImageResizeButton(option) {\n\t\tconst editor = this.editor;\n\t\tconst { name, value, icon } = option;\n\t\teditor.ui.componentFactory.add(name, (locale) => {\n\t\t\tconst button = new ButtonView(locale);\n\t\t\tconst command = editor.commands.get(\"resizeImage\");\n\t\t\tconst labelText = this._getOptionLabelValue(option, true);\n\t\t\tif (!RESIZE_ICONS[icon])\n /**\n\t\t\t* When configuring {@link module:image/imageconfig~ImageConfig#resizeOptions `config.image.resizeOptions`} for standalone\n\t\t\t* buttons, a valid `icon` token must be set for each option.\n\t\t\t*\n\t\t\t* See all valid options described in the\n\t\t\t* {@link module:image/imageconfig~ImageResizeOption plugin configuration}.\n\t\t\t*\n\t\t\t* @error imageresizebuttons-missing-icon\n\t\t\t* @param {module:image/imageconfig~ImageResizeOption} option Invalid image resize option.\n\t\t\t*/\n\t\t\tthrow new CKEditorError(\"imageresizebuttons-missing-icon\", editor, option);\n\t\t\tbutton.set({\n\t\t\t\tlabel: labelText,\n\t\t\t\ticon: RESIZE_ICONS[icon],\n\t\t\t\ttooltip: labelText,\n\t\t\t\tisToggleable: true\n\t\t\t});\n\t\t\tbutton.bind(\"isEnabled\").to(this);\n\t\t\tif (editor.plugins.has(\"ImageCustomResizeUI\") && isCustomImageResizeOption(option)) {\n\t\t\t\tconst customResizeUI = editor.plugins.get(\"ImageCustomResizeUI\");\n\t\t\t\tthis.listenTo(button, \"execute\", () => {\n\t\t\t\t\tcustomResizeUI._showForm(this._resizeUnit);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst optionValueWithUnit = value ? value + this._resizeUnit : null;\n\t\t\t\tbutton.bind(\"isOn\").to(command, \"value\", command, \"isEnabled\", getIsOnButtonCallback(optionValueWithUnit));\n\t\t\t\tthis.listenTo(button, \"execute\", () => {\n\t\t\t\t\teditor.execute(\"resizeImage\", { width: optionValueWithUnit });\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn button;\n\t\t});\n\t}\n\t/**\n\t* A helper function that creates a dropdown component for the plugin containing all the resize options defined in\n\t* the editor configuration.\n\t*\n\t* @param options An array of configured options.\n\t*/\n\t_registerImageResizeDropdown(options) {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst originalSizeOption = options.find((option) => !option.value);\n\t\tconst componentCreator = (locale) => {\n\t\t\tconst command = editor.commands.get(\"resizeImage\");\n\t\t\tconst dropdownView = createDropdown(locale, DropdownButtonView);\n\t\t\tconst dropdownButton = dropdownView.buttonView;\n\t\t\tconst accessibleLabel = t(\"Resize image\");\n\t\t\tdropdownButton.set({\n\t\t\t\ttooltip: accessibleLabel,\n\t\t\t\tcommandValue: originalSizeOption.value,\n\t\t\t\ticon: RESIZE_ICONS.medium,\n\t\t\t\tisToggleable: true,\n\t\t\t\tlabel: this._getOptionLabelValue(originalSizeOption),\n\t\t\t\twithText: true,\n\t\t\t\tclass: \"ck-resize-image-button\",\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\tariaLabelledBy: void 0\n\t\t\t});\n\t\t\tdropdownButton.bind(\"label\").to(command, \"value\", (commandValue) => {\n\t\t\t\tif (commandValue && commandValue.width) return commandValue.width;\n\t\t\t\telse return this._getOptionLabelValue(originalSizeOption);\n\t\t\t});\n\t\t\tdropdownView.bind(\"isEnabled\").to(this);\n\t\t\taddListToDropdown(dropdownView, () => this._getResizeDropdownListItemDefinitions(options, command), {\n\t\t\t\tariaLabel: t(\"Image resize list\"),\n\t\t\t\trole: \"menu\"\n\t\t\t});\n\t\t\tthis.listenTo(dropdownView, \"execute\", (evt) => {\n\t\t\t\tif (\"onClick\" in evt.source) evt.source.onClick();\n\t\t\t\telse {\n\t\t\t\t\teditor.execute(evt.source.commandName, { width: evt.source.commandValue });\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn dropdownView;\n\t\t};\n\t\teditor.ui.componentFactory.add(\"resizeImage\", componentCreator);\n\t\teditor.ui.componentFactory.add(\"imageResize\", componentCreator);\n\t}\n\t/**\n\t* A helper function for creating an option label value string.\n\t*\n\t* @param option A resize option object.\n\t* @param forTooltip An optional flag for creating a tooltip label.\n\t* @returns A user-defined label combined from the numeric value and the resize unit or the default label\n\t* for reset options (`Original`).\n\t*/\n\t_getOptionLabelValue(option, forTooltip = false) {\n\t\tconst t = this.editor.t;\n\t\tif (option.label) return option.label;\n\t\telse if (forTooltip) if (isCustomImageResizeOption(option)) return t(\"Custom image size\");\n\t\telse if (option.value) return t(\"Resize image to %0\", option.value + this._resizeUnit);\n\t\telse return t(\"Resize image to the original size\");\n\t\telse if (isCustomImageResizeOption(option)) return t(\"Custom\");\n\t\telse if (option.value) return option.value + this._resizeUnit;\n\t\telse return t(\"Original\");\n\t}\n\t/**\n\t* A helper function that parses the resize options and returns list item definitions ready for use in the dropdown.\n\t*\n\t* @param options The resize options.\n\t* @param command The resize image command.\n\t* @returns Dropdown item definitions.\n\t*/\n\t_getResizeDropdownListItemDefinitions(options, command) {\n\t\tconst { editor } = this;\n\t\tconst itemDefinitions = new Collection();\n\t\tconst optionsWithSerializedValues = options.map((option) => {\n\t\t\tif (isCustomImageResizeOption(option)) return {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: \"custom\"\n\t\t\t};\n\t\t\tif (!option.value) return {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: null\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: `${option.value}${this._resizeUnit}`\n\t\t\t};\n\t\t});\n\t\tfor (const option of optionsWithSerializedValues) {\n\t\t\tlet definition = null;\n\t\t\tif (editor.plugins.has(\"ImageCustomResizeUI\") && isCustomImageResizeOption(option)) {\n\t\t\t\tconst customResizeUI = editor.plugins.get(\"ImageCustomResizeUI\");\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tmodel: new UIModel({\n\t\t\t\t\t\tlabel: this._getOptionLabelValue(option),\n\t\t\t\t\t\trole: \"menuitemradio\",\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tcustomResizeUI._showForm(this._resizeUnit);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tconst allDropdownValues = Object.values(optionsWithSerializedValues).map((option) => option.valueWithUnits);\n\t\t\t\tdefinition.model.bind(\"isOn\").to(command, \"value\", command, \"isEnabled\", getIsOnCustomButtonCallback(allDropdownValues));\n\t\t\t} else {\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tmodel: new UIModel({\n\t\t\t\t\t\tcommandName: \"resizeImage\",\n\t\t\t\t\t\tcommandValue: option.valueWithUnits,\n\t\t\t\t\t\tlabel: this._getOptionLabelValue(option),\n\t\t\t\t\t\trole: \"menuitemradio\",\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tdefinition.model.bind(\"isOn\").to(command, \"value\", command, \"isEnabled\", getIsOnButtonCallback(option.valueWithUnits));\n\t\t\t}\n\t\t\tdefinition.model.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\t\titemDefinitions.add(definition);\n\t\t}\n\t\treturn itemDefinitions;\n\t}\n};\n/**\n* A helper that checks if provided option triggers custom resize balloon.\n*/\nfunction isCustomImageResizeOption(option) {\n\treturn option.value === \"custom\";\n}\n/**\n* A helper function for setting the `isOn` state of buttons in value bindings.\n*/\nfunction getIsOnButtonCallback(value) {\n\treturn (commandValue, isEnabled) => {\n\t\tconst objectCommandValue = commandValue;\n\t\tif (objectCommandValue === void 0 || !isEnabled) return false;\n\t\tif (value === null && objectCommandValue === value) return true;\n\t\treturn objectCommandValue !== null && objectCommandValue.width === value;\n\t};\n}\n/**\n* A helper function for setting the `isOn` state of custom size button in value bindings.\n*/\nfunction getIsOnCustomButtonCallback(allDropdownValues) {\n\treturn (commandValue, isEnabled) => !allDropdownValues.some((dropdownValue) => getIsOnButtonCallback(dropdownValue)(commandValue, isEnabled));\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\nconst RESIZABLE_IMAGES_CSS_SELECTOR = \"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\";\nconst RESIZED_IMAGE_CLASS = \"image_resized\";\n/**\n* The image resize by handles feature.\n*\n* It adds the ability to resize each image using handles or manually by\n* {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n*/\nvar ImageResizeHandles = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [WidgetResize, ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResizeHandles\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst command = this.editor.commands.get(\"resizeImage\");\n\t\tthis.bind(\"isEnabled\").to(command);\n\t\tthis._setupResizerCreator();\n\t}\n\t/**\n\t* Attaches the listeners responsible for creating a resizer for each image, except for images inside the HTML embed preview.\n\t*/\n\t_setupResizerCreator() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\teditingView.addObserver(ImageLoadObserver);\n\t\tthis.listenTo(editingView.document, \"imageLoaded\", (evt, domEvent) => {\n\t\t\tif (!domEvent.target.matches(RESIZABLE_IMAGES_CSS_SELECTOR)) return;\n\t\t\tconst domConverter = editor.editing.view.domConverter;\n\t\t\tconst imageView = domConverter.domToView(domEvent.target);\n\t\t\tconst widgetView = imageUtils.getImageWidgetFromImageView(imageView);\n\t\t\tlet resizer = this.editor.plugins.get(WidgetResize).getResizerByViewElement(widgetView);\n\t\t\tif (resizer) {\n\t\t\t\tresizer.redraw();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst mapper = editor.editing.mapper;\n\t\t\tconst imageModel = mapper.toModelElement(widgetView);\n\t\t\tresizer = editor.plugins.get(WidgetResize).attachTo({\n\t\t\t\tunit: editor.config.get(\"image.resizeUnit\"),\n\t\t\t\tmodelElement: imageModel,\n\t\t\t\tviewElement: widgetView,\n\t\t\t\teditor,\n\t\t\t\tgetHandleHost(domWidgetElement) {\n\t\t\t\t\treturn domWidgetElement.querySelector(\"img\");\n\t\t\t\t},\n\t\t\t\tgetResizeHost() {\n\t\t\t\t\treturn domConverter.mapViewToDom(mapper.toViewElement(imageModel));\n\t\t\t\t},\n\t\t\t\tisCentered() {\n\t\t\t\t\treturn imageModel.getAttribute(\"imageStyle\") == \"alignCenter\";\n\t\t\t\t},\n\t\t\t\tonCommit(newValue) {\n\t\t\t\t\teditingView.change((writer) => {\n\t\t\t\t\t\twriter.removeClass(RESIZED_IMAGE_CLASS, widgetView);\n\t\t\t\t\t});\n\t\t\t\t\teditor.execute(\"resizeImage\", { width: newValue });\n\t\t\t\t}\n\t\t\t});\n\t\t\tresizer.on(\"updateSize\", () => {\n\t\t\t\tif (!widgetView.hasClass(RESIZED_IMAGE_CLASS)) editingView.change((writer) => {\n\t\t\t\t\twriter.addClass(RESIZED_IMAGE_CLASS, widgetView);\n\t\t\t\t});\n\t\t\t\tconst target = imageModel.name === \"imageInline\" ? imageView : widgetView;\n\t\t\t\tif (target.getStyle(\"height\")) editingView.change((writer) => {\n\t\t\t\t\twriter.removeStyle(\"height\", target);\n\t\t\t\t});\n\t\t\t});\n\t\t\tresizer.bind(\"isEnabled\").to(this);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Finds model, view and DOM element for selected image element. Returns `null` if there is no image selected.\n*\n* @param editor Editor instance.\n* @internal\n*/\nfunction getSelectedImageEditorNodes(editor) {\n\tconst { editing } = editor;\n\tconst imageModelElement = editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(editor.model.document.selection);\n\tif (!imageModelElement) return null;\n\tconst imageViewElement = editing.mapper.toViewElement(imageModelElement);\n\treturn {\n\t\tmodel: imageModelElement,\n\t\tview: imageViewElement,\n\t\tdom: editing.view.domConverter.mapViewToDom(imageViewElement)\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/utils/getselectedimagewidthinunits\n*/\n/**\n* Returns image width in specified units. It is width of image after resize.\n*\n* \t* If image is not selected or command is disabled then `null` will be returned.\n* \t* If image is not fully loaded (and it is impossible to determine its natural size) then `null` will be returned.\n*\t* If `targetUnit` percentage is passed then it will return width percentage of image related to its accessors.\n*\n* @param editor Editor instance.\n* @param targetUnit Unit in which dimension will be returned.\n* @returns Parsed image width after resize (with unit).\n* @internal\n*/\nfunction getSelectedImageWidthInUnits(editor, targetUnit) {\n\tconst imageNodes = getSelectedImageEditorNodes(editor);\n\tif (!imageNodes) return null;\n\tconst parsedResizedWidth = _tryParseDimensionWithUnit(imageNodes.model.getAttribute(\"resizedWidth\") || null);\n\tif (!parsedResizedWidth) return null;\n\tif (parsedResizedWidth.unit === targetUnit) return parsedResizedWidth;\n\treturn _tryCastDimensionsToUnit(calculateResizeHostAncestorWidth(imageNodes.dom), {\n\t\tunit: \"px\",\n\t\tvalue: new Rect(imageNodes.dom).width\n\t}, targetUnit);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/ui/imagecustomresizeformview\n*/\n/**\n* The ImageCustomResizeFormView class.\n*\n* @internal\n*/\nvar ImageCustomResizeFormView = class extends View {\n\t/**\n\t* Tracks information about the DOM focus in the form.\n\t*/\n\tfocusTracker;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* Resize unit shortcut.\n\t*/\n\tunit;\n\t/**\n\t* The Back button view displayed in the header.\n\t*/\n\tbackButtonView;\n\t/**\n\t* A button used to submit the form.\n\t*/\n\tsaveButtonView;\n\t/**\n\t* An input with a label.\n\t*/\n\tlabeledInput;\n\t/**\n\t* A collection of child views.\n\t*/\n\tchildren;\n\t/**\n\t* A collection of views which can be focused in the form.\n\t*/\n\t_focusables;\n\t/**\n\t* Helps cycling over {@link #_focusables} in the form.\n\t*/\n\t_focusCycler;\n\t/**\n\t* An array of form validators used by {@link #isValid}.\n\t*/\n\t_validators;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(locale, unit, validators) {\n\t\tsuper(locale);\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.unit = unit;\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\t\tthis.labeledInput = this._createLabeledInputView();\n\t\tthis.children = this.createCollection([this._createHeaderView()]);\n\t\tthis.children.add(new FormRowView(locale, {\n\t\t\tchildren: [this.labeledInput, this.saveButtonView],\n\t\t\tclass: [\"ck-form__row_with-submit\", \"ck-form__row_large-top-padding\"]\n\t\t}));\n\t\tthis._focusables = new ViewCollection();\n\t\tthis._validators = validators;\n\t\tthis.keystrokes.set(\"Esc\", (data, cancel) => {\n\t\t\tthis.fire(\"cancel\");\n\t\t\tcancel();\n\t\t});\n\t\tthis._focusCycler = new FocusCycler({\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\tfocusPrevious: \"shift + tab\",\n\t\t\t\tfocusNext: \"tab\"\n\t\t\t}\n\t\t});\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t\"ck\",\n\t\t\t\t\t\"ck-form\",\n\t\t\t\t\t\"ck-image-custom-resize-form\",\n\t\t\t\t\t\"ck-responsive-form\"\n\t\t\t\t],\n\t\t\t\ttabindex: \"-1\"\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\t[\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t].forEach((v) => {\n\t\t\tthis._focusables.add(v);\n\t\t\tthis.focusTracker.add(v.element);\n\t\t});\n\t\tthis.keystrokes.listenTo(this.element);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Creates a back button view that cancels the form.\n\t*/\n\t_createBackButton() {\n\t\tconst t = this.locale.t;\n\t\tconst backButton = new ButtonView(this.locale);\n\t\tbackButton.set({\n\t\t\tclass: \"ck-button-back\",\n\t\t\tlabel: t(\"Back\"),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t});\n\t\tbackButton.delegate(\"execute\").to(this, \"cancel\");\n\t\treturn backButton;\n\t}\n\t/**\n\t* Creates a save button view that resize the image.\n\t*/\n\t_createSaveButton() {\n\t\tconst t = this.locale.t;\n\t\tconst saveButton = new ButtonView(this.locale);\n\t\tsaveButton.set({\n\t\t\tlabel: t(\"Save\"),\n\t\t\twithText: true,\n\t\t\ttype: \"submit\",\n\t\t\tclass: \"ck-button-action ck-button-bold\"\n\t\t});\n\t\treturn saveButton;\n\t}\n\t/**\n\t* Creates a header view for the form.\n\t*/\n\t_createHeaderView() {\n\t\tconst t = this.locale.t;\n\t\tconst header = new FormHeaderView(this.locale, { label: t(\"Image Resize\") });\n\t\theader.children.add(this.backButtonView, 0);\n\t\treturn header;\n\t}\n\t/**\n\t* Creates an input with a label.\n\t*\n\t* @returns Labeled field view instance.\n\t*/\n\t_createLabeledInputView() {\n\t\tconst t = this.locale.t;\n\t\tconst labeledInput = new LabeledFieldView(this.locale, createLabeledInputNumber);\n\t\tlabeledInput.label = t(\"Resize image (in %0)\", this.unit);\n\t\tlabeledInput.class = \"ck-labeled-field-view_full-width\";\n\t\tlabeledInput.fieldView.set({ step: .1 });\n\t\treturn labeledInput;\n\t}\n\t/**\n\t* Validates the form and returns `false` when some fields are invalid.\n\t*/\n\tisValid() {\n\t\tthis.resetFormStatus();\n\t\tfor (const validator of this._validators) {\n\t\t\tconst errorText = validator(this);\n\t\t\tif (errorText) {\n\t\t\t\tthis.labeledInput.errorText = errorText;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\t/**\n\t* Cleans up the supplementary error and information text of the {@link #labeledInput}\n\t* bringing them back to the state when the form has been displayed for the first time.\n\t*\n\t* See {@link #isValid}.\n\t*/\n\tresetFormStatus() {\n\t\tthis.labeledInput.errorText = null;\n\t}\n\t/**\n\t* The native DOM `value` of the input element of {@link #labeledInput}.\n\t*/\n\tget rawSize() {\n\t\tconst { element } = this.labeledInput.fieldView;\n\t\tif (!element) return null;\n\t\treturn element.value;\n\t}\n\t/**\n\t* Get numeric value of size. Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t*/\n\tget parsedSize() {\n\t\tconst { rawSize } = this;\n\t\tif (rawSize === null) return null;\n\t\tconst parsed = Number.parseFloat(rawSize);\n\t\tif (Number.isNaN(parsed)) return null;\n\t\treturn parsed;\n\t}\n\t/**\n\t* Returns serialized image input size with unit.\n\t* Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t*/\n\tget sizeWithUnits() {\n\t\tconst { parsedSize, unit } = this;\n\t\tif (parsedSize === null) return null;\n\t\treturn `${parsedSize}${unit}`;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Returns min and max value of resize image in specified unit.\n*\n* @param editor Editor instance.\n* @param targetUnit Unit in which dimension will be returned.\n* @returns Possible resize range in numeric form.\n* @internal\n*/\nfunction getSelectedImagePossibleResizeRange(editor, targetUnit) {\n\tconst imageNodes = getSelectedImageEditorNodes(editor);\n\tif (!imageNodes) return null;\n\tconst imageParentWidthPx = calculateResizeHostAncestorWidth(imageNodes.dom);\n\tconst minimumImageWidth = _tryParseDimensionWithUnit(window.getComputedStyle(imageNodes.dom).minWidth) || {\n\t\tvalue: 1,\n\t\tunit: \"px\"\n\t};\n\treturn {\n\t\tunit: targetUnit,\n\t\tlower: Math.max(.1, _tryCastDimensionsToUnit(imageParentWidthPx, minimumImageWidth, targetUnit).value),\n\t\tupper: targetUnit === \"px\" ? imageParentWidthPx : 100\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/imagecustomresizeui\n*/\n/**\n* The custom resize image UI plugin.\n*\n* The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n*/\nvar ImageCustomResizeUI = class extends Plugin {\n\t/**\n\t* The contextual balloon plugin instance.\n\t*/\n\t_balloon;\n\t/**\n\t* A form containing a textarea and buttons, used to change the `alt` text value.\n\t*/\n\t_form;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ContextualBalloon];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCustomResizeUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tif (this._form) this._form.destroy();\n\t}\n\t/**\n\t* Creates the {@link module:image/imageresize/ui/imagecustomresizeformview~ImageCustomResizeFormView}\n\t* form.\n\t*/\n\t_createForm(unit) {\n\t\tconst editor = this.editor;\n\t\tthis._balloon = this.editor.plugins.get(\"ContextualBalloon\");\n\t\tthis._form = new (CssTransitionDisablerMixin(ImageCustomResizeFormView))(editor.locale, unit, getFormValidators(editor));\n\t\tthis._form.render();\n\t\tthis.listenTo(this._form, \"submit\", () => {\n\t\t\tif (this._form.isValid()) {\n\t\t\t\teditor.execute(\"resizeImage\", { width: this._form.sizeWithUnits });\n\t\t\t\tthis._hideForm(true);\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(this._form.labeledInput, \"change:errorText\", () => {\n\t\t\teditor.ui.update();\n\t\t});\n\t\tthis.listenTo(this._form, \"cancel\", () => {\n\t\t\tthis._hideForm(true);\n\t\t});\n\t\tclickOutsideHandler({\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [this._balloon.view.element],\n\t\t\tcallback: () => this._hideForm()\n\t\t});\n\t}\n\t/**\n\t* Shows the {@link #_form} in the {@link #_balloon}.\n\t*\n\t* @internal\n\t*/\n\t_showForm(unit) {\n\t\tif (this._isVisible) return;\n\t\tif (!this._form) this._createForm(unit);\n\t\tconst editor = this.editor;\n\t\tconst labeledInput = this._form.labeledInput;\n\t\tthis._form.disableCssTransitions();\n\t\tthis._form.resetFormStatus();\n\t\tif (!this._isInBalloon) this._balloon.add({\n\t\t\tview: this._form,\n\t\t\tposition: getBalloonPositionData(editor)\n\t\t});\n\t\tconst currentParsedWidth = getSelectedImageWidthInUnits(editor, unit);\n\t\tconst initialInputValue = currentParsedWidth ? currentParsedWidth.value.toFixed(1) : \"\";\n\t\tconst possibleRange = getSelectedImagePossibleResizeRange(editor, unit);\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element.value = initialInputValue;\n\t\tif (possibleRange) Object.assign(labeledInput.fieldView, {\n\t\t\tmin: possibleRange.lower.toFixed(1),\n\t\t\tmax: Math.ceil(possibleRange.upper).toFixed(1)\n\t\t});\n\t\tthis._form.labeledInput.fieldView.select();\n\t\tthis._form.enableCssTransitions();\n\t}\n\t/**\n\t* Removes the {@link #_form} from the {@link #_balloon}.\n\t*\n\t* @param focusEditable Controls whether the editing view is focused afterwards.\n\t*/\n\t_hideForm(focusEditable = false) {\n\t\tif (!this._isInBalloon) return;\n\t\tif (this._form.focusTracker.isFocused) this._form.saveButtonView.focus();\n\t\tthis._balloon.remove(this._form);\n\t\tif (focusEditable) this.editor.editing.view.focus();\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t*/\n\tget _isVisible() {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t*/\n\tget _isInBalloon() {\n\t\treturn !!this._balloon && this._balloon.hasView(this._form);\n\t}\n};\n/**\n* Returns image resize form validation callbacks.\n*\n* @param editor Editor instance.\n*/\nfunction getFormValidators(editor) {\n\tconst t = editor.t;\n\treturn [(form) => {\n\t\tif (form.rawSize.trim() === \"\") return t(\"The value must not be empty.\");\n\t\tif (form.parsedSize === null) return t(\"The value should be a plain number.\");\n\t}];\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize\n*/\n/**\n* The image resize plugin.\n*\n* It adds a possibility to resize each image using handles.\n*/\nvar ImageResize = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageResizeEditing,\n\t\t\tImageResizeHandles,\n\t\t\tImageCustomResizeUI,\n\t\t\tImageResizeButtons\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResize\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image style command. It is used to apply {@link module:image/imageconfig~ImageStyleConfig#options image style option}\n* to a selected image.\n*\n* **Note**: Executing this command may change the image model element if the desired style requires an image of a different\n* type. See {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand#execute} to learn more.\n*/\nvar ImageStyleCommand = class extends Command {\n\t/**\n\t* An object containing names of default style options for the inline and block images.\n\t* If there is no default style option for the given image type in the configuration,\n\t* the name will be `false`.\n\t*/\n\t_defaultStyles;\n\t/**\n\t* The styles handled by this command.\n\t*/\n\t_styles;\n\t/**\n\t* Creates an instance of the image style command. When executed, the command applies one of\n\t* {@link module:image/imageconfig~ImageStyleConfig#options style options} to the currently selected image.\n\t*\n\t* @param editor The editor instance.\n\t* @param styles The style options that this command supports.\n\t*/\n\tconstructor(editor, styles) {\n\t\tsuper(editor);\n\t\tthis._defaultStyles = {\n\t\t\timageBlock: false,\n\t\t\timageInline: false\n\t\t};\n\t\tthis._styles = new Map(styles.map((style) => {\n\t\t\tif (style.isDefault) for (const modelElementName of style.modelElements) this._defaultStyles[modelElementName] = style.name;\n\t\t\treturn [style.name, style];\n\t\t}));\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst element = this.editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(this.editor.model.document.selection);\n\t\tthis.isEnabled = !!element;\n\t\tif (!this.isEnabled) this.value = false;\n\t\telse if (element.hasAttribute(\"imageStyle\")) this.value = element.getAttribute(\"imageStyle\");\n\t\telse this.value = this._defaultStyles[element.name];\n\t}\n\t/**\n\t* Returns whether the style with the given name can be applied to the currently selected image.\n\t*\n\t* Applying a style may internally trigger a type conversion (block ↔ inline) when the style\n\t* supports only the opposite type. If that conversion would be rejected by the schema (for\n\t* example, converting an inline image to a block image inside `$inlineRoot`), this style\n\t* cannot be applied even though the command itself is enabled. UI components representing\n\t* individual styles should reflect this per-style state in their `isEnabled`.\n\t*/\n\tisStyleEnabled(styleName) {\n\t\tif (!this.isEnabled) return false;\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst element = imageUtils.getClosestSelectedImageElement(this.editor.model.document.selection);\n\t\tif (!element || !this._styles.has(styleName)) return false;\n\t\tif (!this.shouldConvertImageType(styleName, element)) return true;\n\t\tconst typeCommandName = imageUtils.isBlockImage(element) ? \"imageTypeInline\" : \"imageTypeBlock\";\n\t\tconst typeCommand = this.editor.commands.get(typeCommandName);\n\t\treturn !!typeCommand && typeCommand.isEnabled;\n\t}\n\t/**\n\t* Executes the command and applies the style to the currently selected image:\n\t*\n\t* ```ts\n\t* editor.execute( 'imageStyle', { value: 'side' } );\n\t* ```\n\t*\n\t* **Note**: Executing this command may change the image model element if the desired style requires an image\n\t* of a different type. Learn more about {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements model element}\n\t* configuration for the style option.\n\t*\n\t* @param options.value The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t* @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t* The default is `true`.\n\t* @fires execute\n\t*/\n\texecute(options = {}) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tif (options.value && !this.isStyleEnabled(options.value)) return;\n\t\tmodel.change((writer) => {\n\t\t\tconst requestedStyle = options.value;\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tlet imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\t\tif (requestedStyle && this.shouldConvertImageType(requestedStyle, imageElement)) {\n\t\t\t\tthis.editor.execute(imageUtils.isBlockImage(imageElement) ? \"imageTypeInline\" : \"imageTypeBlock\", { setImageSizes });\n\t\t\t\timageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\t\t}\n\t\t\tif (!requestedStyle || this._styles.get(requestedStyle).isDefault) writer.removeAttribute(\"imageStyle\", imageElement);\n\t\t\telse writer.setAttribute(\"imageStyle\", requestedStyle, imageElement);\n\t\t\tif (setImageSizes) imageUtils.setImageNaturalSizeAttributes(imageElement);\n\t\t});\n\t}\n\t/**\n\t* Returns `true` if requested style change would trigger the image type change.\n\t*\n\t* @param requestedStyle The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t* @param imageElement The image model element.\n\t*/\n\tshouldConvertImageType(requestedStyle, imageElement) {\n\t\treturn !this._styles.get(requestedStyle).modelElements.includes(imageElement.name);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/utils\n*/\n/**\n* Default image style options provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n* configuration.\n*\n* There are available 5 styles focused on formatting:\n*\n* * **`'alignLeft'`** aligns the inline or block image to the left and wraps it with the text using the `image-style-align-left` class,\n* * **`'alignRight'`** aligns the inline or block image to the right and wraps it with the text using the `image-style-align-right` class,\n* * **`'alignCenter'`** centers the block image using the `image-style-align-center` class,\n* * **`'alignBlockLeft'`** aligns the block image to the left using the `image-style-block-align-left` class,\n* * **`'alignBlockRight'`** aligns the block image to the right using the `image-style-block-align-right` class,\n*\n* and 3 semantic styles:\n*\n* * **`'inline'`** is an inline image without any CSS class,\n* * **`'block'`** is a block image without any CSS class,\n* * **`'side'`** is a block image styled with the `image-style-side` CSS class.\n*\n* @internal\n*/\nconst DEFAULT_OPTIONS = {\n\tget inline() {\n\t\treturn {\n\t\t\tname: \"inline\",\n\t\t\ttitle: \"In line\",\n\t\t\ticon: IconObjectInline,\n\t\t\tmodelElements: [\"imageInline\"],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\tget alignLeft() {\n\t\treturn {\n\t\t\tname: \"alignLeft\",\n\t\t\ttitle: \"Left aligned image\",\n\t\t\ticon: IconObjectInlineLeft,\n\t\t\tmodelElements: [\"imageBlock\", \"imageInline\"],\n\t\t\tclassName: \"image-style-align-left\"\n\t\t};\n\t},\n\tget alignBlockLeft() {\n\t\treturn {\n\t\t\tname: \"alignBlockLeft\",\n\t\t\ttitle: \"Left aligned image\",\n\t\t\ticon: IconObjectLeft,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-block-align-left\"\n\t\t};\n\t},\n\tget alignCenter() {\n\t\treturn {\n\t\t\tname: \"alignCenter\",\n\t\t\ttitle: \"Centered image\",\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-align-center\"\n\t\t};\n\t},\n\tget alignRight() {\n\t\treturn {\n\t\t\tname: \"alignRight\",\n\t\t\ttitle: \"Right aligned image\",\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [\"imageBlock\", \"imageInline\"],\n\t\t\tclassName: \"image-style-align-right\"\n\t\t};\n\t},\n\tget alignBlockRight() {\n\t\treturn {\n\t\t\tname: \"alignBlockRight\",\n\t\t\ttitle: \"Right aligned image\",\n\t\t\ticon: IconObjectRight,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-block-align-right\"\n\t\t};\n\t},\n\tget block() {\n\t\treturn {\n\t\t\tname: \"block\",\n\t\t\ttitle: \"Centered image\",\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\tget side() {\n\t\treturn {\n\t\t\tname: \"side\",\n\t\t\ttitle: \"Side image\",\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-side\"\n\t\t};\n\t}\n};\n/**\n* Default image style icons provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n* configuration.\n*\n* See {@link module:image/imageconfig~ImageStyleOptionDefinition#icon} to learn more.\n*\n* There are 7 default icons available: `'full'`, `'left'`, `'inlineLeft'`, `'center'`, `'right'`, `'inlineRight'`, and `'inline'`.\n*\n* @internal\n*/\nconst DEFAULT_ICONS = /* #__PURE__ */ (() => ({\n\tfull: IconObjectFullWidth,\n\tleft: IconObjectLeft,\n\tright: IconObjectRight,\n\tcenter: IconObjectCenter,\n\tinlineLeft: IconObjectInlineLeft,\n\tinlineRight: IconObjectInlineRight,\n\tinline: IconObjectInline\n}))();\n/**\n* Default drop-downs provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#toolbar}\n* configuration. The drop-downs are containers for the {@link module:image/imageconfig~ImageStyleConfig#options image style options}.\n*\n* If both of the `ImageEditing` plugins are loaded, there are 2 predefined drop-downs available:\n*\n* * **`'imageStyle:wrapText'`**, which contains the `alignLeft` and `alignRight` options, that is,\n* those that wraps the text around the image,\n* * **`'imageStyle:breakText'`**, which contains the `alignBlockLeft`, `alignCenter` and `alignBlockRight` options, that is,\n* those that breaks the text around the image.\n*\n* @internal\n*/\nconst DEFAULT_DROPDOWN_DEFINITIONS = [{\n\tname: \"imageStyle:wrapText\",\n\ttitle: \"Wrap text\",\n\tdefaultItem: \"imageStyle:alignLeft\",\n\titems: [\"imageStyle:alignLeft\", \"imageStyle:alignRight\"]\n}, {\n\tname: \"imageStyle:breakText\",\n\ttitle: \"Break text\",\n\tdefaultItem: \"imageStyle:block\",\n\titems: [\n\t\t\"imageStyle:alignBlockLeft\",\n\t\t\"imageStyle:block\",\n\t\t\"imageStyle:alignBlockRight\"\n\t]\n}];\n/**\n* Returns the style with a given `name` from an array of styles.\n*\n* @internal\n*/\nfunction getStyleDefinitionByName(name, styles) {\n\tfor (const style of styles) if (style.name === name) return style;\n}\n/**\n* Returns a list of the normalized and validated image style options.\n*\n* @param config\n* @param config.isInlinePluginLoaded\n* Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n* @param config.isBlockPluginLoaded\n* Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n* @param config.configuredStyles\n* The image styles configuration provided in the image styles {@link module:image/imageconfig~ImageConfig#styles configuration}\n* as a default or custom value.\n* @returns\n* * Each of options contains a complete icon markup.\n* * The image style options not supported by any of the loaded plugins are filtered out.\n*/\nfunction normalizeStyles(config) {\n\treturn (config.configuredStyles.options || []).map((arrangement) => normalizeDefinition(arrangement)).filter((arrangement) => isValidOption(arrangement, config));\n}\n/**\n* Returns the default image styles configuration depending on the loaded image editing plugins.\n*\n* @param isInlinePluginLoaded\n* Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n*\n* @param isBlockPluginLoaded\n* Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n*\n* @returns\n* It returns an object with the lists of the image style options and groups defined as strings related to the\n* {@link module:image/imagestyle/utils#DEFAULT_OPTIONS default options}\n*/\nfunction getDefaultStylesConfiguration(isBlockPluginLoaded, isInlinePluginLoaded) {\n\tif (isBlockPluginLoaded && isInlinePluginLoaded) return { options: [\n\t\t\"inline\",\n\t\t\"alignLeft\",\n\t\t\"alignRight\",\n\t\t\"alignCenter\",\n\t\t\"alignBlockLeft\",\n\t\t\"alignBlockRight\",\n\t\t\"block\",\n\t\t\"side\"\n\t] };\n\telse if (isBlockPluginLoaded) return { options: [\"block\", \"side\"] };\n\telse if (isInlinePluginLoaded) return { options: [\n\t\t\"inline\",\n\t\t\"alignLeft\",\n\t\t\"alignRight\"\n\t] };\n\treturn {};\n}\n/**\n* Returns a list of the available predefined drop-downs' definitions depending on the loaded image editing plugins.\n*/\nfunction getDefaultDropdownDefinitions(pluginCollection) {\n\tif (pluginCollection.has(\"ImageBlockEditing\") && pluginCollection.has(\"ImageInlineEditing\")) return [...DEFAULT_DROPDOWN_DEFINITIONS];\n\telse return [];\n}\n/**\n* Normalizes an image style option or group provided in the {@link module:image/imageconfig~ImageConfig#styles}\n* and returns it in a {@link module:image/imageconfig~ImageStyleOptionDefinition}/\n*/\nfunction normalizeDefinition(definition) {\n\tif (typeof definition === \"string\") if (!DEFAULT_OPTIONS[definition]) definition = { name: definition };\n\telse definition = { ...DEFAULT_OPTIONS[definition] };\n\telse definition = extendStyle(DEFAULT_OPTIONS[definition.name], definition);\n\tif (typeof definition.icon === \"string\") definition.icon = DEFAULT_ICONS[definition.icon] || definition.icon;\n\treturn definition;\n}\n/**\n* Checks if the image style option is valid:\n* * if it has the modelElements fields defined and filled,\n* * if the defined modelElements are supported by any of the loaded image editing plugins.\n* It also displays a console warning these conditions are not met.\n*\n* @param option image style option\n*/\nfunction isValidOption(option, { isBlockPluginLoaded, isInlinePluginLoaded }) {\n\tconst { modelElements, name } = option;\n\tif (!modelElements || !modelElements.length || !name) {\n\t\twarnInvalidStyle({ style: option });\n\t\treturn false;\n\t} else {\n\t\tconst supportedElements = [isBlockPluginLoaded ? \"imageBlock\" : null, isInlinePluginLoaded ? \"imageInline\" : null];\n\t\tif (!modelElements.some((elementName) => supportedElements.includes(elementName))) {\n\t\t\t/**\n\t\t\t* In order to work correctly, each image style {@link module:image/imageconfig~ImageStyleOptionDefinition option}\n\t\t\t* requires specific model elements (also: types of images) to be supported by the editor.\n\t\t\t*\n\t\t\t* Model element names to which the image style option can be applied are defined in the\n\t\t\t* {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements} property of the style option\n\t\t\t* definition.\n\t\t\t*\n\t\t\t* Explore the warning in the console to find out precisely which option is not supported and which editor plugins\n\t\t\t* are missing. Make sure these plugins are loaded in your editor to get this image style option working.\n\t\t\t*\n\t\t\t* @error image-style-missing-dependency\n\t\t\t* @param {string} style The name of the unsupported option.\n\t\t\t* @param {Array.<string>} missingPlugins The names of the plugins one of which has to be loaded for the particular option.\n\t\t\t*/\n\t\t\tlogWarning(\"image-style-missing-dependency\", {\n\t\t\t\tstyle: option,\n\t\t\t\tmissingPlugins: modelElements.map((name) => name === \"imageBlock\" ? \"ImageBlockEditing\" : \"ImageInlineEditing\")\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n* Extends the default style with a style provided by the developer.\n* Note: Don't override the custom–defined style object, clone it instead.\n*/\nfunction extendStyle(source, style) {\n\tconst extendedStyle = { ...style };\n\tfor (const prop in source) if (!Object.prototype.hasOwnProperty.call(style, prop)) extendedStyle[prop] = source[prop];\n\treturn extendedStyle;\n}\n/**\n* Displays a console warning with the 'image-style-configuration-definition-invalid' error.\n*/\nfunction warnInvalidStyle(info) {\n\t/**\n\t* The image style definition provided in the configuration is invalid.\n\t*\n\t* Please make sure the definition implements properly one of the following:\n\t*\n\t* * {@link module:image/imageconfig~ImageStyleOptionDefinition image style option definition},\n\t* * {@link module:image/imageconfig~ImageStyleDropdownDefinition image style dropdown definition}\n\t*\n\t* @error image-style-configuration-definition-invalid\n\t* @param {object} info The information about the invalid definition.\n\t*/\n\tlogWarning(\"image-style-configuration-definition-invalid\", info);\n}\n/**\n* @internal\n*/\nconst utils = {\n\tnormalizeStyles,\n\tgetDefaultStylesConfiguration,\n\tgetDefaultDropdownDefinitions,\n\twarnInvalidStyle\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/converters\n*/\n/**\n* Returns a converter for the `imageStyle` attribute. It can be used for adding, changing and removing the attribute.\n*\n* @param styles An array containing available image style options.\n* @returns A model-to-view attribute converter.\n* @internal\n*/\nfunction modelToViewStyleAttribute(styles) {\n\treturn (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst newStyle = getStyleDefinitionByName(data.attributeNewValue, styles);\n\t\tconst oldStyle = getStyleDefinitionByName(data.attributeOldValue, styles);\n\t\tconst viewElement = conversionApi.mapper.toViewElement(data.item);\n\t\tconst viewWriter = conversionApi.writer;\n\t\tif (oldStyle) viewWriter.removeClass(oldStyle.className, viewElement);\n\t\tif (newStyle) viewWriter.addClass(newStyle.className, viewElement);\n\t};\n}\n/**\n* Returns a view-to-model converter converting image CSS classes to a proper value in the model.\n*\n* @param styles Image style options for which the converter is created.\n* @returns A view-to-model converter.\n* @internal\n*/\nfunction viewToModelStyleAttribute(styles) {\n\tconst nonDefaultStyles = {\n\t\timageInline: styles.filter((style) => !style.isDefault && style.modelElements.includes(\"imageInline\")),\n\t\timageBlock: styles.filter((style) => !style.isDefault && style.modelElements.includes(\"imageBlock\"))\n\t};\n\treturn (evt, data, conversionApi) => {\n\t\tif (!data.modelRange) return;\n\t\tconst viewElement = data.viewItem;\n\t\tconst modelImageElement = first(data.modelRange.getItems());\n\t\tif (!modelImageElement) return;\n\t\tif (!conversionApi.schema.checkAttribute(modelImageElement, \"imageStyle\")) return;\n\t\tfor (const style of nonDefaultStyles[modelImageElement.name]) if (conversionApi.consumable.consume(viewElement, { classes: style.className })) conversionApi.writer.setAttribute(\"imageStyle\", style.name, modelImageElement);\n\t\tnormalizeFloatToDefinitionStyle(conversionApi, viewElement, modelImageElement, styles);\n\t};\n}\n/**\n* A helper function that attempts to convert the `float` CSS style into a corresponding `imageStyle` attribute.\n*\n* It maps `float: left` and `float: right` to standard alignment styles (e.g. `'alignLeft'`, `'alignRight'`),\n* but only if the target style definition matches one of the {@link module:image/image/utils~DEFAULT_OPTIONS default options}.\n*/\nfunction normalizeFloatToDefinitionStyle(conversionApi, viewElement, modelElement, styles) {\n\tif (!conversionApi.consumable.test(viewElement, { styles: [\"float\"] })) return;\n\tlet floatStyleName = null;\n\tswitch (viewElement.getStyle(\"float\")) {\n\t\tcase \"left\":\n\t\t\tfloatStyleName = \"alignLeft\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tfloatStyleName = \"alignRight\";\n\t\t\tbreak;\n\t}\n\tif (!floatStyleName) return;\n\tconst definition = getStyleDefinitionByName(floatStyleName, styles);\n\tif (!definition) return;\n\tconst builtinDefinition = DEFAULT_OPTIONS[definition.name];\n\tif (!isEqual(definition, builtinDefinition)) return;\n\tconversionApi.writer.setAttribute(\"imageStyle\", floatStyleName, modelElement);\n\tconversionApi.consumable.consume(viewElement, { styles: [\"float\"] });\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/imagestyleediting\n*/\n/**\n* The image style engine plugin. It sets the default configuration, creates converters and registers\n* {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.\n*/\nvar ImageStyleEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageStyleEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* It contains a list of the normalized and validated style options.\n\t*\n\t* * Each option contains a complete icon markup.\n\t* * The style options not supported by any of the loaded image editing plugins (\n\t* {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} or\n\t* {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`}) are filtered out.\n\t*\n\t* @internal\n\t* @readonly\n\t*/\n\tnormalizedStyles;\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst isBlockPluginLoaded = editor.plugins.has(\"ImageBlockEditing\");\n\t\tconst isInlinePluginLoaded = editor.plugins.has(\"ImageInlineEditing\");\n\t\teditor.config.define(\"image.styles\", utils.getDefaultStylesConfiguration(isBlockPluginLoaded, isInlinePluginLoaded));\n\t\tthis.normalizedStyles = utils.normalizeStyles({\n\t\t\tconfiguredStyles: editor.config.get(\"image.styles\"),\n\t\t\tisBlockPluginLoaded,\n\t\t\tisInlinePluginLoaded\n\t\t});\n\t\tthis._setupConversion(isBlockPluginLoaded, isInlinePluginLoaded);\n\t\tthis._setupPostFixer();\n\t\teditor.commands.add(\"imageStyle\", new ImageStyleCommand(editor, this.normalizedStyles));\n\t}\n\t/**\n\t* Sets the editor conversion taking the presence of\n\t* {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}\n\t* and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.\n\t*/\n\t_setupConversion(isBlockPluginLoaded, isInlinePluginLoaded) {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst modelToViewConverter = modelToViewStyleAttribute(this.normalizedStyles);\n\t\tconst viewToModelConverter = viewToModelStyleAttribute(this.normalizedStyles);\n\t\teditor.editing.downcastDispatcher.on(\"attribute:imageStyle\", modelToViewConverter);\n\t\teditor.data.downcastDispatcher.on(\"attribute:imageStyle\", modelToViewConverter);\n\t\tif (isBlockPluginLoaded) {\n\t\t\tschema.extend(\"imageBlock\", { allowAttributes: \"imageStyle\" });\n\t\t\tschema.setAttributeProperties(\"imageStyle\", {\n\t\t\t\tisFormatting: true,\n\t\t\t\tblockAlignment: getBlockAlignmentAttributeProperty(this.normalizedStyles)\n\t\t\t});\n\t\t\teditor.data.upcastDispatcher.on(\"element:figure\", viewToModelConverter, { priority: \"low\" });\n\t\t}\n\t\tif (isInlinePluginLoaded) {\n\t\t\tschema.extend(\"imageInline\", { allowAttributes: \"imageStyle\" });\n\t\t\tschema.setAttributeProperties(\"imageStyle\", { isFormatting: true });\n\t\t\teditor.data.upcastDispatcher.on(\"element:img\", viewToModelConverter, { priority: \"low\" });\n\t\t}\n\t}\n\t/**\n\t* Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).\n\t*/\n\t_setupPostFixer() {\n\t\tconst editor = this.editor;\n\t\tconst document = editor.model.document;\n\t\tconst imageUtils = editor.plugins.get(ImageUtils);\n\t\tconst stylesMap = new Map(this.normalizedStyles.map((style) => [style.name, style]));\n\t\tdocument.registerPostFixer((writer) => {\n\t\t\tlet changed = false;\n\t\t\tfor (const change of document.differ.getChanges()) if (change.type == \"insert\" || change.type == \"attribute\" && change.attributeKey == \"imageStyle\") {\n\t\t\t\tlet element = change.type == \"insert\" ? change.position.nodeAfter : change.range.start.nodeAfter;\n\t\t\t\tif (element && element.is(\"element\", \"paragraph\") && element.childCount > 0) element = element.getChild(0);\n\t\t\t\tif (!imageUtils.isImage(element)) continue;\n\t\t\t\tconst imageStyle = element.getAttribute(\"imageStyle\");\n\t\t\t\tif (!imageStyle) continue;\n\t\t\t\tconst imageStyleDefinition = stylesMap.get(imageStyle);\n\t\t\t\tif (!imageStyleDefinition || !imageStyleDefinition.modelElements.includes(element.name)) {\n\t\t\t\t\twriter.removeAttribute(\"imageStyle\", element);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn changed;\n\t\t});\n\t}\n};\n/**\n* Returns a mapping of generic alignment values ('left', 'right', 'center') to their corresponding\n* block image alignment style names.\n*\n* This function is particularly useful for scenarios like `td[align]` conversion, which needs to know\n* exactly how to map a generic `align` attribute to the correct alignment value. This mapping is necessary\n* because the actual alignment value can differ depending on the target element type (e.g., block images\n* vs. tables).\n*\n* @param styles An array of available image style option definitions.\n* @returns A record mapping basic alignments to their valid, block-specific style names.\n*/\nfunction getBlockAlignmentAttributeProperty(styles) {\n\tconst pickFirstSupported = (...names) => {\n\t\tconst found = names.map((name) => getStyleDefinitionByName(name, styles)).find((definition) => definition?.modelElements.includes(\"imageBlock\"));\n\t\tif (!found) return;\n\t\treturn {\n\t\t\tisDefault: !!found.isDefault,\n\t\t\tvalue: found.name\n\t\t};\n\t};\n\treturn Object.fromEntries(Object.entries({\n\t\tleft: [\"alignBlockLeft\", \"alignLeft\"],\n\t\tright: [\"alignBlockRight\", \"alignRight\"],\n\t\tcenter: [\"block\", \"alignCenter\"]\n\t}).map(([align, names]) => [align, pickFirstSupported(...names)]).filter(([, resolved]) => resolved !== void 0));\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/imagestyleui\n*/\n/**\n* The image style UI plugin.\n*\n* It registers buttons corresponding to the {@link module:image/imageconfig~ImageConfig#styles} configuration.\n* It also registers the {@link module:image/imagestyle/utils#DEFAULT_DROPDOWN_DEFINITIONS default drop-downs} and the\n* custom drop-downs defined by the developer in the {@link module:image/imageconfig~ImageConfig#toolbar} configuration.\n*/\nvar ImageStyleUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageStyleEditing];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageStyleUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* Returns the default localized style titles provided by the plugin.\n\t*\n\t* The following localized titles corresponding with\n\t* {@link module:image/imagestyle/utils#DEFAULT_OPTIONS} are available:\n\t*\n\t* * `'Wrap text'`,\n\t* * `'Break text'`,\n\t* * `'In line'`,\n\t* * `'Full size image'`,\n\t* * `'Side image'`,\n\t* * `'Left aligned image'`,\n\t* * `'Centered image'`,\n\t* * `'Right aligned image'`\n\t*/\n\tget localizedDefaultStylesTitles() {\n\t\tconst t = this.editor.t;\n\t\treturn {\n\t\t\t\"Wrap text\": t(\"Wrap text\"),\n\t\t\t\"Break text\": t(\"Break text\"),\n\t\t\t\"In line\": t(\"In line\"),\n\t\t\t\"Full size image\": t(\"Full size image\"),\n\t\t\t\"Side image\": t(\"Side image\"),\n\t\t\t\"Left aligned image\": t(\"Left aligned image\"),\n\t\t\t\"Centered image\": t(\"Centered image\"),\n\t\t\t\"Right aligned image\": t(\"Right aligned image\")\n\t\t};\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst plugins = this.editor.plugins;\n\t\tconst toolbarConfig = this.editor.config.get(\"image.toolbar\") || [];\n\t\tconst definedStyles = translateStyles(plugins.get(\"ImageStyleEditing\").normalizedStyles, this.localizedDefaultStylesTitles);\n\t\tfor (const styleConfig of definedStyles) this._createButton(styleConfig);\n\t\tconst definedDropdowns = translateStyles([...toolbarConfig.filter(isObject), ...utils.getDefaultDropdownDefinitions(plugins)], this.localizedDefaultStylesTitles);\n\t\tfor (const dropdownConfig of definedDropdowns) this._createDropdown(dropdownConfig, definedStyles);\n\t}\n\t/**\n\t* Creates a dropdown and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t*/\n\t_createDropdown(dropdownConfig, definedStyles) {\n\t\tconst factory = this.editor.ui.componentFactory;\n\t\tfactory.add(dropdownConfig.name, (locale) => {\n\t\t\tlet defaultButton;\n\t\t\tconst { defaultItem, items, title } = dropdownConfig;\n\t\t\tconst buttonViews = items.filter((itemName) => definedStyles.find(({ name }) => getUIComponentName(name) === itemName)).map((buttonName) => {\n\t\t\t\tconst button = factory.create(buttonName);\n\t\t\t\tif (buttonName === defaultItem) defaultButton = button;\n\t\t\t\treturn button;\n\t\t\t});\n\t\t\tif (items.length !== buttonViews.length) utils.warnInvalidStyle({ dropdown: dropdownConfig });\n\t\t\tconst dropdownView = createDropdown(locale, SplitButtonView);\n\t\t\tconst splitButtonView = dropdownView.buttonView;\n\t\t\tconst splitButtonViewArrow = splitButtonView.arrowView;\n\t\t\taddToolbarToDropdown(dropdownView, buttonViews, { enableActiveItemFocusOnDropdownOpen: true });\n\t\t\tsplitButtonView.set({\n\t\t\t\tlabel: getDropdownButtonTitle(title, defaultButton.label),\n\t\t\t\tclass: null,\n\t\t\t\ttooltip: true\n\t\t\t});\n\t\t\tsplitButtonViewArrow.unbind(\"label\");\n\t\t\tsplitButtonViewArrow.set({ label: title });\n\t\t\tsplitButtonView.bind(\"icon\").toMany(buttonViews, \"isOn\", (...areOn) => {\n\t\t\t\tconst index = areOn.findIndex(identity);\n\t\t\t\treturn index < 0 ? defaultButton.icon : buttonViews[index].icon;\n\t\t\t});\n\t\t\tsplitButtonView.bind(\"label\").toMany(buttonViews, \"isOn\", (...areOn) => {\n\t\t\t\tconst index = areOn.findIndex(identity);\n\t\t\t\treturn getDropdownButtonTitle(title, index < 0 ? defaultButton.label : buttonViews[index].label);\n\t\t\t});\n\t\t\tsplitButtonView.bind(\"isOn\").toMany(buttonViews, \"isOn\", (...areOn) => areOn.some(identity));\n\t\t\tsplitButtonView.bind(\"class\").toMany(buttonViews, \"isOn\", (...areOn) => areOn.some(identity) ? \"ck-splitbutton_flatten\" : void 0);\n\t\t\tsplitButtonView.on(\"execute\", () => {\n\t\t\t\tif (!buttonViews.some(({ isOn }) => isOn)) defaultButton.fire(\"execute\");\n\t\t\t\telse dropdownView.isOpen = !dropdownView.isOpen;\n\t\t\t});\n\t\t\tdropdownView.bind(\"isEnabled\").toMany(buttonViews, \"isEnabled\", (...areEnabled) => areEnabled.some(identity));\n\t\t\tthis.listenTo(dropdownView, \"execute\", () => {\n\t\t\t\tthis.editor.editing.view.focus();\n\t\t\t});\n\t\t\treturn dropdownView;\n\t\t});\n\t}\n\t/**\n\t* Creates a button and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t*/\n\t_createButton(buttonConfig) {\n\t\tconst buttonName = buttonConfig.name;\n\t\tthis.editor.ui.componentFactory.add(getUIComponentName(buttonName), (locale) => {\n\t\t\tconst editor = this.editor;\n\t\t\tconst command = editor.commands.get(\"imageStyle\");\n\t\t\tconst view = new ButtonView(locale);\n\t\t\tview.set({\n\t\t\t\tlabel: buttonConfig.title,\n\t\t\t\ticon: buttonConfig.icon,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t});\n\t\t\tconst reactiveSources = [command];\n\t\t\tconst imageTypeBlock = editor.commands.get(\"imageTypeBlock\");\n\t\t\tconst imageTypeInline = editor.commands.get(\"imageTypeInline\");\n\t\t\tif (imageTypeBlock) reactiveSources.push(imageTypeBlock);\n\t\t\tif (imageTypeInline) reactiveSources.push(imageTypeInline);\n\t\t\tview.bind(\"isEnabled\").toMany(reactiveSources, \"isEnabled\", () => command.isStyleEnabled(buttonName));\n\t\t\tview.bind(\"isOn\").to(command, \"value\", (value) => value === buttonName);\n\t\t\tview.on(\"execute\", this._executeCommand.bind(this, buttonName));\n\t\t\treturn view;\n\t\t});\n\t}\n\t_executeCommand(name) {\n\t\tthis.editor.execute(\"imageStyle\", { value: name });\n\t\tthis.editor.editing.view.focus();\n\t}\n};\n/**\n* Returns the translated `title` from the passed styles array.\n*/\nfunction translateStyles(styles, titles) {\n\tfor (const style of styles) if (titles[style.title]) style.title = titles[style.title];\n\treturn styles;\n}\n/**\n* Returns the image style component name with the \"imageStyle:\" prefix.\n*/\nfunction getUIComponentName(name) {\n\treturn `imageStyle:${name}`;\n}\n/**\n* Returns title for the splitbutton containing the dropdown title and default action item title.\n*/\nfunction getDropdownButtonTitle(dropdownTitle, buttonTitle) {\n\treturn (dropdownTitle ? dropdownTitle + \": \" : \"\") + buttonTitle;\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle\n*/\n/**\n* The image style plugin.\n*\n* For a detailed overview of the image styles feature, check the {@glink features/images/images-styles documentation}.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n* * {@link module:image/imagestyle/imagestyleediting~ImageStyleEditing},\n* * {@link module:image/imagestyle/imagestyleui~ImageStyleUI}\n*\n* It provides a default configuration, which can be extended or overwritten.\n* Read more about the {@link module:image/imageconfig~ImageConfig#styles image styles configuration}.\n*/\nvar ImageStyle = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageStyleEditing, ImageStyleUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageStyle\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetoolbar\n*/\n/**\n* The image toolbar plugin. It creates and manages the image toolbar (the toolbar displayed when an image is selected).\n*\n* For an overview, check the {@glink features/images/images-overview#image-contextual-toolbar image contextual toolbar} documentation.\n*\n* Instances of toolbar components (e.g. buttons) are created using the editor's\n* {@link module:ui/componentfactory~ComponentFactory component factory}\n* based on the {@link module:image/imageconfig~ImageConfig#toolbar `image.toolbar` configuration option}.\n*\n* The toolbar uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n*/\nvar ImageToolbar = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [WidgetToolbarRepository, ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageToolbar\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst widgetToolbarRepository = editor.plugins.get(WidgetToolbarRepository);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\twidgetToolbarRepository.register(\"image\", {\n\t\t\tariaLabel: t(\"Image toolbar\"),\n\t\t\titems: normalizeDeclarativeConfig(editor.config.get(\"image.toolbar\") || []),\n\t\t\tgetRelatedElement: (selection) => imageUtils.getClosestSelectedImageWidget(selection)\n\t\t});\n\t}\n};\n/**\n* Convert the dropdown definitions to their keys registered in the ComponentFactory.\n* The registration precess should be handled by the plugin which handles the UI of a particular feature.\n*/\nfunction normalizeDeclarativeConfig(config) {\n\treturn config.map((item) => isObject(item) ? item.name : item);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/pictureediting\n*/\n/**\n* This plugin enables the [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture) element support in the editor.\n*\n* * It enables the `sources` model attribute on `imageBlock` and `imageInline` model elements\n* (brought by {@link module:image/imageblock~ImageBlock} and {@link module:image/imageinline~ImageInline}, respectively).\n* * It translates the `sources` model element to the view (also: data) structure that may look as follows:\n*\n* ```html\n* <p>Inline image using picture:\n* \t<picture>\n* \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n* \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n* \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n* \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n* \t</picture>\n* </p>\n*\n* <p>Block image using picture:</p>\n* <figure class=\"image\">\n* \t<picture>\n* \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n* \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n* \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n* \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n* \t</picture>\n* \t<figcaption>Caption of the image</figcaption>\n* </figure>\n* ```\n*\n* **Note:** The value of the `sources` {@glink framework/architecture/editing-engine#changing-the-model model attribute}\n* in both examples equals:\n*\n* ```css\n* [\n* \t{\n* \t\tmedia: '(min-width: 800px)',\n* \t\tsrcset: 'image-large.webp',\n* \t\ttype: 'image/webp'\n* \t},\n* \t{\n* \t\tmedia: '(max-width: 800px)',\n* \t\tsrcset: 'image-small.webp',\n* \t\ttype: 'image/webp'\n* \t}\n* ]\n* ```\n*\n* * It integrates with the {@link module:image/imageupload~ImageUpload} plugin so images uploaded in the editor\n* automatically render using `<picture>` if the {@glink features/images/image-upload/image-upload upload adapter}\n* supports image sources and provides neccessary data.\n*\n* @private\n*/\nvar PictureEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageEditing, ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"PictureEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tconst editor = this.editor;\n\t\tif (editor.plugins.has(\"ImageBlockEditing\")) editor.model.schema.extend(\"imageBlock\", { allowAttributes: [\"sources\"] });\n\t\tif (editor.plugins.has(\"ImageInlineEditing\")) editor.model.schema.extend(\"imageInline\", { allowAttributes: [\"sources\"] });\n\t\tthis._setupConversion();\n\t\tthis._setupImageUploadEditingIntegration();\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting images using the `<picture>` view element\n\t* and the model `sources` attribute.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"upcast\").add(upcastPicture(imageUtils));\n\t\tconversion.for(\"downcast\").add(downcastSourcesAttribute(imageUtils));\n\t}\n\t/**\n\t* Makes it possible for uploaded images to get the `sources` model attribute and the `<picture>...</picture>`\n\t* view structure out-of-the-box if relevant data is provided along the\n\t* {@link module:image/imageupload/imageuploadediting~ImageUploadEditing#event:uploadComplete} event.\n\t*/\n\t_setupImageUploadEditingIntegration() {\n\t\tconst editor = this.editor;\n\t\tif (!editor.plugins.has(\"ImageUploadEditing\")) return;\n\t\tconst imageUploadEditing = editor.plugins.get(\"ImageUploadEditing\");\n\t\tthis.listenTo(imageUploadEditing, \"uploadComplete\", (evt, { imageElement, data }) => {\n\t\t\tconst sources = data.sources;\n\t\t\tif (!sources) return;\n\t\t\teditor.model.change((writer) => {\n\t\t\t\twriter.setAttributes({ sources }, imageElement);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n\nexport { AutoImage, Image, ImageBlock, ImageBlockEditing, ImageCaption, ImageCaptionEditing, ImageCaptionUI, ImageCaptionUtils, ImageCustomResizeUI, ImageEditing, ImageInline, ImageInlineEditing, ImageInsert, ImageInsertUI, ImageInsertViaUrl, ImageInsertViaUrlUI, ImageLoadObserver, ImagePlaceholder, ImageResize, ImageResizeButtons, ImageResizeEditing, ImageResizeHandles, ImageSizeAttributes, ImageStyle, ImageStyleCommand, ImageStyleEditing, ImageStyleUI, ImageTextAlternative, ImageTextAlternativeCommand, ImageTextAlternativeEditing, ImageTextAlternativeUI, ImageToolbar, ImageTypeCommand, ImageUpload, ImageUploadEditing, ImageUploadProgress, ImageUploadUI, ImageUtils, InsertImageCommand, PictureEditing, ReplaceImageSourceCommand, ResizeImageCommand, ToggleImageCaptionCommand, UploadImageCommand, DEFAULT_DROPDOWN_DEFINITIONS as _IMAGE_DEFAULT_DROPDOWN_DEFINITIONS, DEFAULT_ICONS as _IMAGE_DEFAULT_ICONS, DEFAULT_OPTIONS as _IMAGE_DEFAULT_OPTIONS, ImageCustomResizeFormView as _ImageCustomResizeFormView, ImageInsertFormView as _ImageInsertFormView, ImageInsertUrlView as _ImageInsertUrlView, utils as _ImageStyleUtils, TextAlternativeFormView as _ImageTextAlternativeFormView, widthAndHeightStylesAreBothSet as _checkIfImageWidthAndHeightStylesAreBothSet, createBlockImageViewElement as _createBlockImageViewElement, createInlineImageViewElement as _createInlineImageViewElement, determineImageTypeForInsertionAtSelection as _determineImageTypeForInsertionAtSelection, downcastImageAttribute as _downcastImageAttribute, downcastSourcesAttribute as _downcastImageSourcesAttribute, downcastSrcsetAttribute as _downcastImageSrcsetAttribute, fetchLocalImage as _fetchLocalImage, getBalloonPositionData as _getImageBalloonPositionData, getSizeValueIfInPx as _getImageSizeValueIfInPx, getImgViewElementMatcher as _getImageViewElementMatcher, getSelectedImageEditorNodes as _getSelectedImageEditorNodes, getSelectedImagePossibleResizeRange as _getSelectedImagePossibleResizeRange, getSelectedImageWidthInUnits as _getSelectedImageWidthInUnits, isLocalImage as _isLocalImage, modelToViewStyleAttribute as _modelToViewImageStyleAttribute, repositionContextualBalloon as _repositionImageContextualBalloon, upcastImageFigure as _upcastImageFigure, upcastPicture as _upcastImagePicture, viewToModelStyleAttribute as _viewToModelImageStyleAttribute, createImageTypeRegExp, isHtmlInDataTransfer };\n//# sourceMappingURL=index.js.map","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/utils\n */\n\nimport {\n\ttype ModelDocumentSelection,\n\ttype MatcherPattern,\n\ttype ModelPosition,\n\ttype ModelSchema,\n\ttype ModelSelection,\n\ttype ViewContainerElement,\n\ttype ViewDowncastWriter,\n\ttype ViewElement,\n\t_isParagraphableModelNode as isParagraphable\n} from '@ckeditor/ckeditor5-engine';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport { first } from '@ckeditor/ckeditor5-utils';\n\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * Creates a view element representing the inline image.\n *\n * ```html\n * <span class=\"image-inline\"><img></img></span>\n * ```\n *\n * Note that `alt` and `src` attributes are converted separately, so they are not included.\n *\n * @internal\n */\nexport function createInlineImageViewElement( writer: ViewDowncastWriter ): ViewContainerElement {\n\treturn writer.createContainerElement( 'span', { class: 'image-inline' },\n\t\twriter.createEmptyElement( 'img' )\n\t);\n}\n\n/**\n * Creates a view element representing the block image.\n *\n * ```html\n * <figure class=\"image\"><img></img></figure>\n * ```\n *\n * Note that `alt` and `src` attributes are converted separately, so they are not included.\n *\n * @internal\n */\nexport function createBlockImageViewElement( writer: ViewDowncastWriter ): ViewContainerElement {\n\treturn writer.createContainerElement( 'figure', { class: 'image' }, [\n\t\twriter.createEmptyElement( 'img' ),\n\t\twriter.createSlot( 'children' )\n\t] );\n}\n\n/**\n * A function returning a `MatcherPattern` for a particular type of View images.\n *\n * @deprecated\n * @internal\n * @param matchImageType The type of created image.\n */\nexport function getImgViewElementMatcher( editor: Editor, matchImageType: 'imageBlock' | 'imageInline' ): MatcherPattern {\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\tconst areBothImagePluginsLoaded = editor.plugins.has( 'ImageInlineEditing' ) && editor.plugins.has( 'ImageBlockEditing' );\n\n\treturn element => {\n\t\t// Check if the matched view element is an <img>.\n\t\tif ( !imageUtils.isInlineImageView( element ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If just one of the plugins is loaded (block or inline), it will match all kinds of images.\n\t\tif ( !areBothImagePluginsLoaded ) {\n\t\t\treturn getPositiveMatchPattern( element );\n\t\t}\n\n\t\tconst imageType = getViewImageType( element, imageUtils );\n\n\t\tif ( imageType !== matchImageType ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn getPositiveMatchPattern( element );\n\t};\n\n\tfunction getPositiveMatchPattern( element: ViewElement ) {\n\t\tconst pattern: Record<string, unknown> = {\n\t\t\tname: true\n\t\t};\n\n\t\t// This will trigger src consumption (See https://github.com/ckeditor/ckeditor5/issues/11530).\n\t\tif ( element.hasAttribute( 'src' ) ) {\n\t\t\tpattern.attributes = [ 'src' ];\n\t\t}\n\n\t\treturn pattern;\n\t}\n}\n\n/**\n * Resolves the model image type (`'imageBlock'` or `'imageInline'`) that a given `<img>` view element represents,\n * based purely on its view structure.\n *\n * An `<img>` is treated as a block image when it has a `display: block` style or is wrapped in a block image figure\n * (`<figure class=\"image\">`, also `<figure class=\"image\"><a>...</a></figure>` added by the `LinkImage` plugin).\n * Otherwise it is treated as an inline image.\n *\n * Note that this only reflects the view representation - it does not check whether the resolved type is allowed by the\n * schema at the insertion position.\n *\n * @internal\n * @param element The `<img>` view element to resolve the type for.\n * @param imageUtils The `ImageUtils` plugin instance.\n */\nexport function getViewImageType( element: ViewElement, imageUtils: ImageUtils ): 'imageBlock' | 'imageInline' {\n\t// The <img> can be standalone, wrapped in <figure>...</figure> (ImageBlock plugin) or\n\t// wrapped in <figure><a>...</a></figure> (LinkImage plugin).\n\treturn ( element.getStyle( 'display' ) == 'block' || element.findAncestor( imageUtils.isBlockImageView ) ?\n\t\t'imageBlock' :\n\t\t'imageInline'\n\t);\n}\n\n/**\n * Checks whether the given image type can be placed at the specified position - either directly (or after hoisting\n * to an allowed ancestor) or, for inline images, wrapped in an auto-created paragraph.\n *\n * This is the predicate that decides whether a block image may land at a position or must degrade to an inline image\n * (for example, inside an `$inlineRoot` that disallows block content) and, symmetrically, whether an inline image may\n * become a block image. `isParagraphable()` is always `false` for `imageBlock` (a block object never fits in a\n * paragraph), so the auto-paragraph relaxation only applies to the inline target.\n *\n * @internal\n * @param schema The model schema to check against.\n * @param position The position at which the image type should be placed.\n * @param imageType The image type to check.\n */\nexport function isImageTypePlaceable(\n\tschema: ModelSchema,\n\tposition: ModelPosition,\n\timageType: 'imageBlock' | 'imageInline'\n): boolean {\n\treturn !!schema.findAllowedParent( position, imageType ) || isParagraphable( position, imageType, schema );\n}\n\n/**\n * Considering the current model selection, it returns the name of the model image element\n * (`'imageBlock'` or `'imageInline'`) that will make most sense from the UX perspective if a new\n * image was inserted (also: uploaded, dropped, pasted) at that selection.\n *\n * The assumption is that inserting images into empty blocks or on other block widgets should\n * produce block images. Inline images should be inserted in other cases, e.g. in paragraphs\n * that already contain some text.\n *\n * @internal\n */\nexport function determineImageTypeForInsertionAtSelection(\n\tschema: ModelSchema,\n\tselection: ModelSelection | ModelDocumentSelection\n): 'imageBlock' | 'imageInline' {\n\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t// Insert a block image if the selection is not in/on block elements or it's on a block widget.\n\tif ( !firstBlock || schema.isObject( firstBlock ) ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// A block image should also be inserted into an empty block element\n\t// (that is not an empty list item so the list won't get split).\n\tif ( firstBlock.isEmpty && firstBlock.name != 'listItem' ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// Otherwise insert an inline image.\n\treturn 'imageInline';\n}\n\n/**\n * Returns parsed value of the size, but only if it contains unit: px.\n *\n * @internal\n */\nexport function getSizeValueIfInPx( size: string | undefined ): number | null {\n\tif ( size && size.endsWith( 'px' ) ) {\n\t\treturn parseInt( size );\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns true if both styles (width and height) are set.\n *\n * If both image styles: width & height are set, they will override the image width & height attributes in the\n * browser. In this case, the image looks the same as if these styles were applied to attributes instead of styles.\n * That's why we can upcast these styles to width & height attributes instead of resizedWidth and resizedHeight.\n *\n * @internal\n */\nexport function widthAndHeightStylesAreBothSet( viewElement: ViewElement ): boolean {\n\tconst widthStyle = getSizeValueIfInPx( viewElement.getStyle( 'width' ) );\n\tconst heightStyle = getSizeValueIfInPx( viewElement.getStyle( 'height' ) );\n\n\treturn !!( widthStyle && heightStyle );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageutils\n */\n\nimport type {\n\tModelElement,\n\tViewElement,\n\tViewNode,\n\tModelDocumentSelection,\n\tViewDocumentSelection,\n\tModelSelection,\n\tViewSelection,\n\tModelDocumentFragment,\n\tViewDocumentFragment,\n\tViewDowncastWriter,\n\tModel,\n\tModelPosition,\n\tViewContainerElement\n} from '@ckeditor/ckeditor5-engine';\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\nimport { findOptimalInsertionRange, isWidget, toWidget } from '@ckeditor/ckeditor5-widget';\nimport { determineImageTypeForInsertionAtSelection } from './image/utils.js';\nimport { DomEmitterMixin, type DomEmitter, global } from '@ckeditor/ckeditor5-utils';\n\nconst IMAGE_WIDGETS_CLASSES_MATCH_REGEXP = /^(image|image-inline)$/;\n\n/**\n * A set of helpers related to images.\n */\nexport class ImageUtils extends Plugin {\n\t/**\n\t * DOM Emitter.\n\t */\n\tprivate _domEmitter: DomEmitter = new ( DomEmitterMixin() )();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUtils' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `image` or `imageInline`.\n\t */\n\tpublic isImage( modelElement?: ModelElement | null ): modelElement is ModelElement & { name: 'imageInline' | 'imageBlock' } {\n\t\treturn this.isInlineImage( modelElement ) || this.isBlockImage( modelElement );\n\t}\n\n\t/**\n\t * Checks if the provided view element represents an inline image.\n\t *\n\t * Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t */\n\tpublic isInlineImageView( element?: ViewElement | null ): boolean {\n\t\treturn !!element && element.is( 'element', 'img' );\n\t}\n\n\t/**\n\t * Checks if the provided view element represents a block image.\n\t *\n\t * Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t */\n\tpublic isBlockImageView( element?: ViewElement | null ): boolean {\n\t\treturn !!element && element.is( 'element', 'figure' ) && element.hasClass( 'image' );\n\t}\n\n\t/**\n\t * Handles inserting single file. This method unifies image insertion using {@link module:widget/utils~findOptimalInsertionRange}\n\t * method.\n\t *\n\t * ```ts\n\t * const imageUtils = editor.plugins.get( 'ImageUtils' );\n\t *\n\t * imageUtils.insertImage( { src: 'path/to/image.jpg' } );\n\t * ```\n\t *\n\t * @param attributes Attributes of the inserted image.\n\t * This method filters out the attributes which are disallowed by the {@link module:engine/model/schema~ModelSchema}.\n\t * @param selectable Place to insert the image. If not specified,\n\t * the {@link module:widget/utils~findOptimalInsertionRange} logic will be applied for the block images\n\t * and `model.document.selection` for the inline images.\n\t *\n\t * **Note**: If `selectable` is passed, this helper will not be able to set selection attributes (such as `linkHref`)\n\t * and apply them to the new image. In this case, make sure all selection attributes are passed in `attributes`.\n\t *\n\t * @param imageType Image type of inserted image. If not specified,\n\t * it will be determined automatically depending of editor config or place of the insertion.\n\t * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t * The default is `true`.\n\t * @return The inserted model image element.\n\t */\n\tpublic insertImage(\n\t\tattributes: Record<string, unknown> = {},\n\t\tselectable: ModelSelection | ModelPosition | null = null,\n\t\timageType: ( 'imageBlock' | 'imageInline' | null ) = null,\n\t\toptions: { setImageSizes?: boolean } = {}\n\t): ModelElement | null {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\tconst determinedImageType = determineImageTypeForInsertion( editor, selectable || selection, imageType );\n\n\t\t// Mix declarative attributes with selection attributes because the new image should \"inherit\"\n\t\t// the latter for best UX. For instance, inline images inserted into existing links\n\t\t// should not split them. To do that, they need to have \"linkHref\" inherited from the selection.\n\t\tattributes = {\n\t\t\t...Object.fromEntries( selection.getAttributes() ),\n\t\t\t...attributes\n\t\t};\n\n\t\tfor ( const attributeName in attributes ) {\n\t\t\tif ( !model.schema.checkAttribute( determinedImageType, attributeName ) ) {\n\t\t\t\tdelete attributes[ attributeName ];\n\t\t\t}\n\t\t}\n\n\t\treturn model.change( writer => {\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tconst imageElement = writer.createElement( determinedImageType, attributes );\n\n\t\t\tmodel.insertObject( imageElement, selectable, null, {\n\t\t\t\tsetSelection: 'on',\n\t\t\t\t// If we want to insert a block image (for whatever reason) then we don't want to split text blocks.\n\t\t\t\t// This applies only when we don't have the selectable specified (i.e., we insert multiple block images at once).\n\t\t\t\tfindOptimalPosition: !selectable && determinedImageType != 'imageInline' ? 'auto' : undefined\n\t\t\t} );\n\n\t\t\t// Inserting an image might've failed due to schema regulations.\n\t\t\tif ( imageElement.parent ) {\n\t\t\t\tif ( setImageSizes ) {\n\t\t\t\t\tthis.setImageNaturalSizeAttributes( imageElement );\n\t\t\t\t}\n\n\t\t\t\treturn imageElement;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} );\n\t}\n\n\t/**\n\t * Reads original image sizes and sets them as `width` and `height`.\n\t *\n\t * The `src` attribute may not be available if the user is using an upload adapter. In such a case,\n\t * this method is called again after the upload process is complete and the `src` attribute is available.\n\t */\n\tpublic setImageNaturalSizeAttributes( imageElement: ModelElement ): void {\n\t\tconst src = imageElement.getAttribute( 'src' ) as string;\n\n\t\tif ( !src ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( imageElement.getAttribute( 'width' ) || imageElement.getAttribute( 'height' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.editor.model.change( writer => {\n\t\t\tconst img = new global.window.Image();\n\n\t\t\tthis._domEmitter.listenTo( img, 'load', () => {\n\t\t\t\tif ( !imageElement.getAttribute( 'width' ) && !imageElement.getAttribute( 'height' ) ) {\n\t\t\t\t\t// We use writer.batch to be able to undo (in a single step) width and height setting\n\t\t\t\t\t// along with any change that triggered this action (e.g. image resize or image style change).\n\t\t\t\t\tthis.editor.model.enqueueChange( writer.batch, writer => {\n\t\t\t\t\t\twriter.setAttribute( 'width', img.naturalWidth, imageElement );\n\t\t\t\t\t\twriter.setAttribute( 'height', img.naturalHeight, imageElement );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tthis._domEmitter.stopListening( img, 'load' );\n\t\t\t} );\n\n\t\t\timg.src = src;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns an image widget editing view element if one is selected or is among the selection's ancestors.\n\t */\n\tpublic getClosestSelectedImageWidget( selection: ViewSelection | ViewDocumentSelection ): ViewElement | null {\n\t\tconst selectionPosition = selection.getFirstPosition();\n\n\t\tif ( !selectionPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst viewElement = selection.getSelectedElement();\n\n\t\tif ( viewElement && this.isImageWidget( viewElement ) ) {\n\t\t\treturn viewElement;\n\t\t}\n\n\t\tlet parent: ViewNode | ViewDocumentFragment | null = selectionPosition.parent;\n\n\t\twhile ( parent ) {\n\t\t\tif ( parent.is( 'element' ) && this.isImageWidget( parent ) ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns a image model element if one is selected or is among the selection's ancestors.\n\t */\n\tpublic getClosestSelectedImageElement( selection: ModelSelection | ModelDocumentSelection ): ModelElement | null {\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\treturn this.isImage( selectedElement ) ? selectedElement : selection.getFirstPosition()!.findAncestor( 'imageBlock' );\n\t}\n\n\t/**\n\t * Returns an image widget editing view based on the passed image view.\n\t */\n\tpublic getImageWidgetFromImageView( imageView: ViewElement ): ViewContainerElement | null {\n\t\treturn imageView.findAncestor( { classes: IMAGE_WIDGETS_CLASSES_MATCH_REGEXP } ) as ( ViewContainerElement | null );\n\t}\n\n\t/**\n\t * Checks if image can be inserted at current model selection.\n\t *\n\t * @internal\n\t */\n\tpublic isImageAllowed(): boolean {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\treturn isImageAllowedInParent( this.editor, selection ) && isNotInsideImage( selection );\n\t}\n\n\t/**\n\t * Converts a given {@link module:engine/view/element~ViewElement} to an image widget:\n\t * * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to recognize the image widget\n\t * element.\n\t * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n\t *\n\t * @param writer An instance of the view writer.\n\t * @param label The element's label. It will be concatenated with the image `alt` attribute if one is present.\n\t */\n\tpublic toImageWidget( viewElement: ViewElement, writer: ViewDowncastWriter, label: string ): ViewElement {\n\t\twriter.setCustomProperty( 'image', true, viewElement );\n\n\t\tconst labelCreator = () => {\n\t\t\tconst imgElement = this.findViewImgElement( viewElement )!;\n\t\t\tconst altText = imgElement.getAttribute( 'alt' );\n\n\t\t\treturn altText ? `${ altText } ${ label }` : label;\n\t\t};\n\n\t\treturn toWidget( viewElement, writer, { label: labelCreator } );\n\t}\n\n\t/**\n\t * Checks if a given view element is an image widget.\n\t */\n\tprotected isImageWidget( viewElement: ViewElement ): boolean {\n\t\treturn !!viewElement.getCustomProperty( 'image' ) && isWidget( viewElement );\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `image`.\n\t */\n\tpublic isBlockImage( modelElement?: ModelElement | null ): boolean {\n\t\treturn !!modelElement && modelElement.is( 'element', 'imageBlock' );\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `imageInline`.\n\t */\n\tpublic isInlineImage( modelElement?: ModelElement | null ): boolean {\n\t\treturn !!modelElement && modelElement.is( 'element', 'imageInline' );\n\t}\n\n\t/**\n\t * Get the view `<img>` from another view element, e.g. a widget (`<figure class=\"image\">`), a link (`<a>`).\n\t *\n\t * The `<img>` can be located deep in other elements, so this helper performs a deep tree search.\n\t */\n\tpublic findViewImgElement( figureView: ViewElement ): ViewElement | undefined {\n\t\tif ( this.isInlineImageView( figureView ) ) {\n\t\t\treturn figureView;\n\t\t}\n\n\t\tconst editingView = this.editor.editing.view;\n\n\t\tfor ( const { item } of editingView.createRangeIn( figureView ) ) {\n\t\t\tif ( this.isInlineImageView( item as ViewElement ) ) {\n\t\t\t\treturn item as ViewElement;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tthis._domEmitter.stopListening();\n\n\t\treturn super.destroy();\n\t}\n}\n\n/**\n * Checks if image is allowed by schema in optimal insertion parent.\n */\nfunction isImageAllowedInParent( editor: Editor, selection: ModelSelection | ModelDocumentSelection ): boolean {\n\tconst imageType = determineImageTypeForInsertion( editor, selection, null );\n\n\tif ( imageType == 'imageBlock' ) {\n\t\treturn isBlockImageAllowedAtInsertion( editor.model, selection );\n\t}\n\n\treturn editor.model.schema.checkChild( selection.focus!, 'imageInline' );\n}\n\n/**\n * Checks if selection is not placed inside an image (e.g. its caption).\n */\nfunction isNotInsideImage( selection: ModelDocumentSelection ): boolean {\n\treturn [ ...selection.focus!.getAncestors() ].every( ancestor => !ancestor.is( 'element', 'imageBlock' ) );\n}\n\n/**\n * Returns a node that will be used to insert image with `model.insertContent`.\n */\nfunction getInsertImageParent( selection: ModelSelection | ModelDocumentSelection, model: Model ): ModelElement | ModelDocumentFragment {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'rootElement' ) ) {\n\t\treturn parent.parent!;\n\t}\n\n\treturn parent;\n}\n\n/**\n * Checks whether a block image is allowed by the schema at the optimal insertion point for the given selectable\n * (e.g. it is not allowed inside `$inlineRoot` or any other inline-only container).\n */\nfunction isBlockImageAllowedAtInsertion(\n\tmodel: Model,\n\tselectable: ModelPosition | ModelSelection | ModelDocumentSelection\n): boolean {\n\tconst selection = selectable.is( 'position' ) ? model.createSelection( selectable ) : selectable;\n\tconst insertionParent = getInsertImageParent( selection, model );\n\n\treturn model.schema.checkChild( insertionParent as ModelElement, 'imageBlock' );\n}\n\n/**\n * Determine image element type name depending on editor config or place of insertion.\n *\n * @param imageType Image element type name. Used to force return of provided element name,\n * but only if there is proper plugin enabled.\n */\nfunction determineImageTypeForInsertion(\n\teditor: Editor,\n\tselectable: ModelPosition | ModelSelection | ModelDocumentSelection,\n\timageType: 'imageBlock' | 'imageInline' | null\n): 'imageBlock' | 'imageInline' {\n\tconst schema = editor.model.schema;\n\tconst configImageInsertType = editor.config.get( 'image.insert.type' );\n\n\tif ( !editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\treturn 'imageBlock';\n\t}\n\n\tif ( imageType ) {\n\t\treturn imageType;\n\t}\n\n\t// Force `imageInline` when a block image cannot be placed at the insertion location (e.g. inside\n\t// `$inlineRoot` or another inline-only container). Otherwise the `image.insert.type` config\n\t// (default: `'block'`) could pick a type the schema would later reject.\n\tif ( !isBlockImageAllowedAtInsertion( editor.model, selectable ) ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( configImageInsertType === 'inline' ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( configImageInsertType !== 'auto' ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// Try to replace the selected widget (e.g. another image).\n\tif ( selectable.is( 'selection' ) ) {\n\t\treturn determineImageTypeForInsertionAtSelection( schema, selectable );\n\t}\n\n\treturn schema.checkChild( selectable, 'imageInline' ) ? 'imageInline' : 'imageBlock';\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/autoimage\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tClipboard,\n\ttype ClipboardInputTransformationEvent,\n\ttype ClipboardPipeline\n} from '@ckeditor/ckeditor5-clipboard';\nimport { ModelLivePosition, ModelLiveRange } from '@ckeditor/ckeditor5-engine';\nimport { Undo } from '@ckeditor/ckeditor5-undo';\nimport { Delete } from '@ckeditor/ckeditor5-typing';\nimport { global } from '@ckeditor/ckeditor5-utils';\n\nimport { ImageUtils } from './imageutils.js';\n\n// Implements the pattern: http(s)://(www.)example.com/path/to/resource.ext?query=params&maybe=too.\nconst IMAGE_URL_REGEXP = new RegExp( String( /^(http(s)?:\\/\\/)?[\\w-]+\\.[\\w.~:/[\\]@!$&'()*+,;=%-]+/.source +\n\t/\\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source +\n\t/(\\?[\\w.~:/[\\]@!$&'()*+,;=%-]*)?/.source +\n\t/(#[\\w.~:/[\\]@!$&'()*+,;=%-]*)?$/.source ) );\n\n/**\n * The auto-image plugin. It recognizes image links in the pasted content and embeds\n * them shortly after they are injected into the document.\n */\nexport class AutoImage extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ Clipboard, ImageUtils, Undo, Delete ]> {\n\t\treturn [ Clipboard, ImageUtils, Undo, Delete ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AutoImage' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The paste–to–embed `setTimeout` ID. Stored as a property to allow\n\t * cleaning of the timeout.\n\t */\n\tprivate _timeoutId: ReturnType<typeof setTimeout> | null;\n\n\t/**\n\t * The position where the `<imageBlock>` element will be inserted after the timeout,\n\t * determined each time a new content is pasted into the document.\n\t */\n\tprivate _positionToInsert: ModelLivePosition | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._timeoutId = null;\n\n\t\tthis._positionToInsert = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\t// We need to listen on `Clipboard#inputTransformation` because we need to save positions of selection.\n\t\t// After pasting, the content between those positions will be checked for a URL that could be transformed\n\t\t// into an image.\n\t\tthis.listenTo<ClipboardInputTransformationEvent>( clipboardPipeline, 'inputTransformation', () => {\n\t\t\tconst firstRange = modelDocument.selection.getFirstRange()!;\n\n\t\t\tconst leftLivePosition = ModelLivePosition.fromPosition( firstRange.start );\n\t\t\tleftLivePosition.stickiness = 'toPrevious';\n\n\t\t\tconst rightLivePosition = ModelLivePosition.fromPosition( firstRange.end );\n\t\t\trightLivePosition.stickiness = 'toNext';\n\n\t\t\tmodelDocument.once( 'change:data', () => {\n\t\t\t\tthis._embedImageBetweenPositions( leftLivePosition, rightLivePosition );\n\n\t\t\t\tleftLivePosition.detach();\n\t\t\t\trightLivePosition.detach();\n\t\t\t}, { priority: 'high' } );\n\t\t} );\n\n\t\teditor.commands.get( 'undo' )!.on( 'execute', () => {\n\t\t\tif ( this._timeoutId ) {\n\t\t\t\tglobal.window.clearTimeout( this._timeoutId );\n\t\t\t\tthis._positionToInsert!.detach();\n\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Analyzes the part of the document between provided positions in search for a URL representing an image.\n\t * When the URL is found, it is automatically converted into an image.\n\t *\n\t * @param leftPosition Left position of the selection.\n\t * @param rightPosition Right position of the selection.\n\t */\n\tprivate _embedImageBetweenPositions( leftPosition: ModelLivePosition, rightPosition: ModelLivePosition ): void {\n\t\tconst editor = this.editor;\n\t\t// TODO: Use a marker instead of ModelLiveRange & LivePositions.\n\t\tconst urlRange = new ModelLiveRange( leftPosition, rightPosition );\n\t\tconst walker = urlRange.getWalker( { ignoreElementEnd: true } );\n\t\tconst selectionAttributes = Object.fromEntries( editor.model.document.selection.getAttributes() );\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tlet src = '';\n\n\t\tfor ( const node of walker ) {\n\t\t\tif ( node.item.is( '$textProxy' ) ) {\n\t\t\t\tsrc += node.item.data;\n\t\t\t}\n\t\t}\n\n\t\tsrc = src.trim();\n\n\t\t// If the URL does not match the image URL regexp, let's skip that.\n\t\tif ( !src.match( IMAGE_URL_REGEXP ) ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Position will not be available in the `setTimeout` function so let's clone it.\n\t\tthis._positionToInsert = ModelLivePosition.fromPosition( leftPosition );\n\n\t\t// This action mustn't be executed if undo was called between pasting and auto-embedding.\n\t\tthis._timeoutId = setTimeout( () => {\n\t\t\t// Do nothing if image element cannot be inserted at the current position.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/2763.\n\t\t\t// Condition must be checked after timeout - pasting may take place on an element, replacing it. The final position matters.\n\t\t\tconst imageCommand = editor.commands.get( 'insertImage' )!;\n\n\t\t\tif ( !imageCommand.isEnabled ) {\n\t\t\t\turlRange.detach();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\tthis._timeoutId = null;\n\n\t\t\t\twriter.remove( urlRange );\n\t\t\t\turlRange.detach();\n\n\t\t\t\tlet insertionPosition;\n\n\t\t\t\t// Check if the position where the element should be inserted is still valid.\n\t\t\t\t// Otherwise leave it as undefined to use the logic of insertImage().\n\t\t\t\tif ( this._positionToInsert!.root.rootName !== '$graveyard' ) {\n\t\t\t\t\tinsertionPosition = this._positionToInsert!.toPosition();\n\t\t\t\t}\n\n\t\t\t\timageUtils.insertImage( { ...selectionAttributes, src }, insertionPosition );\n\n\t\t\t\tthis._positionToInsert!.detach();\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t} );\n\n\t\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\n\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t}, 100 );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativecommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image text alternative command. It is used to change the `alt` attribute of `<imageBlock>` and `<imageInline>` model elements.\n */\nexport class ImageTextAlternativeCommand extends Command {\n\t/**\n\t * The command value: `false` if there is no `alt` attribute, otherwise the value of the `alt` attribute.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public value: string | false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection )!;\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( this.isEnabled && element.hasAttribute( 'alt' ) ) {\n\t\t\tthis.value = element.getAttribute( 'alt' ) as string | false;\n\t\t} else {\n\t\t\tthis.value = false;\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options\n\t * @param options.newValue The new value of the `alt` attribute to set.\n\t */\n\tpublic override execute( options: { newValue: string } ): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst model = editor.model;\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setAttribute( 'alt', options.newValue, imageElement! );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativeediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageTextAlternativeCommand } from './imagetextalternativecommand.js';\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image text alternative editing plugin.\n *\n * Registers the `'imageTextAlternative'` command.\n */\nexport class ImageTextAlternativeEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternativeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis.editor.commands.add( 'imageTextAlternative', new ImageTextAlternativeCommand( this.editor ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/ui/textalternativeformview\n */\n\nimport {\n\tButtonView,\n\tFocusCycler,\n\tFormRowView,\n\tFormHeaderView,\n\tLabeledFieldView,\n\tView,\n\tViewCollection,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\ttype InputView,\n\ttype FocusableView\n} from '@ckeditor/ckeditor5-ui';\nimport { FocusTracker, KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\nimport { IconPreviousArrow } from '@ckeditor/ckeditor5-icons';\n\nimport '../../../theme/textalternativeform.css';\n\n/**\n * The TextAlternativeFormView class.\n *\n * @internal\n */\nexport class TextAlternativeFormView extends View {\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * An input with a label.\n\t */\n\tpublic labeledInput: LabeledFieldView<InputView>;\n\n\t/**\n\t * The Back button view displayed in the header.\n\t */\n\tpublic backButtonView: ButtonView;\n\n\t/**\n\t * A button used to submit the form.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * A collection of child views.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A collection of views which can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\t// Create buttons.\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\n\t\t// Create input fields.\n\t\tthis.labeledInput = this._createLabeledInputView();\n\n\t\tthis.children = this.createCollection( [\n\t\t\tthis._createHeaderView()\n\t\t] );\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\tthis.labeledInput,\n\t\t\t\tthis.saveButtonView\n\t\t\t],\n\t\t\tclass: [\n\t\t\t\t'ck-form__row_with-submit',\n\t\t\t\t'ck-form__row_large-top-padding'\n\t\t\t]\n\t\t} ) );\n\n\t\tthis._focusables = new ViewCollection();\n\n\t\t// Close the panel on esc key press when the **form has focus**.\n\t\tthis.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis.fire<TextAlternativeFormViewCancelEvent>( 'cancel' );\n\t\t\tcancel();\n\t\t} );\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form',\n\t\t\t\t\t'ck-text-alternative-form',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/40\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tconst childViews = [\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element! );\n\t\t} );\n\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates a back button view that cancels the form.\n\t */\n\tprivate _createBackButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst backButton = new ButtonView( this.locale );\n\n\t\tbackButton.set( {\n\t\t\tclass: 'ck-button-back',\n\t\t\tlabel: t( 'Back' ),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbackButton.delegate( 'execute' ).to( this, 'cancel' );\n\n\t\treturn backButton;\n\t}\n\n\t/**\n\t * Creates a save button view that text alternative the image.\n\t */\n\tprivate _createSaveButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst saveButton = new ButtonView( this.locale );\n\n\t\tsaveButton.set( {\n\t\t\tlabel: t( 'Save' ),\n\t\t\twithText: true,\n\t\t\ttype: 'submit',\n\t\t\tclass: 'ck-button-action ck-button-bold'\n\t\t} );\n\n\t\treturn saveButton;\n\t}\n\n\t/**\n\t * Creates a header view for the form.\n\t */\n\tprivate _createHeaderView(): FormHeaderView {\n\t\tconst t = this.locale!.t;\n\n\t\tconst header = new FormHeaderView( this.locale, {\n\t\t\tlabel: t( 'Text Alternative' )\n\t\t} );\n\n\t\theader.children.add( this.backButtonView, 0 );\n\n\t\treturn header;\n\t}\n\n\t/**\n\t * Creates an input with a label.\n\t *\n\t * @returns Labeled field view instance.\n\t */\n\tprivate _createLabeledInputView(): LabeledFieldView<InputView> {\n\t\tconst t = this.locale!.t;\n\t\tconst labeledInput = new LabeledFieldView<InputView>( this.locale, createLabeledInputText );\n\n\t\tlabeledInput.label = t( 'Text alternative' );\n\t\tlabeledInput.class = 'ck-labeled-field-view_full-width';\n\n\t\treturn labeledInput;\n\t}\n}\n\n/**\n * Fired when the form view is submitted.\n *\n * @eventName ~TextAlternativeFormView#submit\n * @internal\n */\nexport type TextAlternativeFormViewSubmitEvent = {\n\tname: 'submit';\n\targs: [];\n};\n\n/**\n * Fired when the form view is canceled.\n *\n * @eventName ~TextAlternativeFormView#cancel\n * @internal\n */\nexport type TextAlternativeFormViewCancelEvent = {\n\tname: 'cancel';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/ui/utils\n */\n\nimport type { DomOptimalPositionOptions } from '@ckeditor/ckeditor5-utils';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport { BalloonPanelView, type ContextualBalloon } from '@ckeditor/ckeditor5-ui';\n\nimport { type ImageUtils } from '../../imageutils.js';\n\n/**\n * A helper utility that positions the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} instance\n * with respect to the image in the editor content, if one is selected.\n *\n * @param editor The editor instance.\n * @internal\n */\nexport function repositionContextualBalloon( editor: Editor ): void {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\tif ( imageUtils.getClosestSelectedImageWidget( editor.editing.view.document.selection ) ) {\n\t\tconst position = getBalloonPositionData( editor );\n\n\t\tballoon.updatePosition( position );\n\t}\n}\n\n/**\n * Returns the positioning options that control the geometry of the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} with respect\n * to the selected element in the editor content.\n *\n * @param editor The editor instance.\n * @internal\n */\nexport function getBalloonPositionData( editor: Editor ): Partial<DomOptimalPositionOptions> {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom(\n\t\t\timageUtils.getClosestSelectedImageWidget( editingView.document.selection )!\n\t\t) as HTMLElement,\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativeui\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tButtonView,\n\tContextualBalloon,\n\tclickOutsideHandler,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from '@ckeditor/ckeditor5-ui';\nimport { IconTextAlternative } from '@ckeditor/ckeditor5-icons';\n\nimport {\n\tTextAlternativeFormView,\n\ttype TextAlternativeFormViewCancelEvent,\n\ttype TextAlternativeFormViewSubmitEvent\n} from './ui/textalternativeformview.js';\nimport { repositionContextualBalloon, getBalloonPositionData } from '../image/ui/utils.js';\nimport { type ImageTextAlternativeCommand } from './imagetextalternativecommand.js';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image text alternative UI plugin.\n *\n * The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport class ImageTextAlternativeUI extends Plugin {\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon?: ContextualBalloon;\n\n\t/**\n\t * A form containing a textarea and buttons, used to change the `alt` text value.\n\t */\n\tprivate _form?: TextAlternativeFormView & ViewWithCssTransitionDisabler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ContextualBalloon ]> {\n\t\treturn [ ContextualBalloon ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternativeUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis._createButton();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see https://github.com/ckeditor/ckeditor5/issues/1341).\n\t\tif ( this._form ) {\n\t\t\tthis._form.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a button showing the balloon panel for changing the image text alternative and\n\t * registers it in the editor {@link module:ui/componentfactory~ComponentFactory ComponentFactory}.\n\t */\n\tprivate _createButton(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'imageTextAlternative', locale => {\n\t\t\tconst command: ImageTextAlternativeCommand = editor.commands.get( 'imageTextAlternative' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Change image text alternative' ),\n\t\t\t\ticon: IconTextAlternative,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\t\tview.bind( 'isOn' ).to( command, 'value', value => !!value );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\tthis._showForm();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the {@link module:image/imagetextalternative/ui/textalternativeformview~TextAlternativeFormView}\n\t * form.\n\t */\n\tprivate _createForm(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis._form = new ( CssTransitionDisablerMixin( TextAlternativeFormView ) )( editor.locale );\n\n\t\t// Render the form so its #element is available for clickOutsideHandler.\n\t\tthis._form.render();\n\n\t\tthis.listenTo<TextAlternativeFormViewSubmitEvent>( this._form, 'submit', () => {\n\t\t\teditor.execute( 'imageTextAlternative', {\n\t\t\t\tnewValue: this._form!.labeledInput.fieldView.element!.value\n\t\t\t} );\n\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\tthis.listenTo<TextAlternativeFormViewCancelEvent>( this._form, 'cancel', () => {\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\t// Reposition the balloon or hide the form if an image widget is no longer selected.\n\t\tthis.listenTo( editor.ui, 'update', () => {\n\t\t\tif ( !imageUtils.getClosestSelectedImageWidget( viewDocument.selection ) ) {\n\t\t\t\tthis._hideForm( true );\n\t\t\t} else if ( this._isVisible ) {\n\t\t\t\trepositionContextualBalloon( editor );\n\t\t\t}\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [ this._balloon!.view.element! ],\n\t\t\tcallback: () => this._hideForm()\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the {@link #_form} in the {@link #_balloon}.\n\t */\n\tprivate _showForm(): void {\n\t\tif ( this._isVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._form ) {\n\t\t\tthis._createForm();\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst command: ImageTextAlternativeCommand = editor.commands.get( 'imageTextAlternative' )!;\n\t\tconst labeledInput = this._form!.labeledInput;\n\n\t\tthis._form!.disableCssTransitions();\n\n\t\tif ( !this._isInBalloon ) {\n\t\t\tthis._balloon!.add( {\n\t\t\t\tview: this._form!,\n\t\t\t\tposition: getBalloonPositionData( editor )\n\t\t\t} );\n\t\t}\n\n\t\t// Make sure that each time the panel shows up, the field remains in sync with the value of\n\t\t// the command. If the user typed in the input, then canceled the balloon (`labeledInput#value`\n\t\t// stays unaltered) and re-opened it without changing the value of the command, they would see the\n\t\t// old value instead of the actual value of the command.\n\t\t// https://github.com/ckeditor/ckeditor5-image/issues/114\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element!.value = command.value || '';\n\n\t\tthis._form!.labeledInput.fieldView.select();\n\n\t\tthis._form!.enableCssTransitions();\n\t}\n\n\t/**\n\t * Removes the {@link #_form} from the {@link #_balloon}.\n\t *\n\t * @param focusEditable Controls whether the editing view is focused afterwards.\n\t */\n\tprivate _hideForm( focusEditable: boolean = false ): void {\n\t\tif ( !this._isInBalloon ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur the input element before removing it from DOM to prevent issues in some browsers.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\tif ( this._form!.focusTracker.isFocused ) {\n\t\t\tthis._form!.saveButtonView.focus();\n\t\t}\n\n\t\tthis._balloon!.remove( this._form! );\n\n\t\tif ( focusEditable ) {\n\t\t\tthis.editor.editing.view.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t */\n\tprivate get _isVisible(): boolean {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t */\n\tprivate get _isInBalloon(): boolean {\n\t\treturn !!this._balloon && this._balloon.hasView( this._form! );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageTextAlternativeEditing } from './imagetextalternative/imagetextalternativeediting.js';\nimport { ImageTextAlternativeUI } from './imagetextalternative/imagetextalternativeui.js';\n\n/**\n * The image text alternative plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-styles image styles} documentation.\n *\n * This is a \"glue\" plugin which loads the\n * {@link module:image/imagetextalternative/imagetextalternativeediting~ImageTextAlternativeEditing}\n * and {@link module:image/imagetextalternative/imagetextalternativeui~ImageTextAlternativeUI} plugins.\n */\nexport class ImageTextAlternative extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageTextAlternativeEditing, ImageTextAlternativeUI ]> {\n\t\treturn [ ImageTextAlternativeEditing, ImageTextAlternativeUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternative' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/converters\n */\n\nimport {\n\ttype DowncastDispatcher,\n\ttype ModelElement,\n\ttype UpcastDispatcher,\n\ttype UpcastElementEvent,\n\ttype ViewElement,\n\ttype ViewElementAttributes,\n\ttype DowncastAttributeEvent,\n\ttype Consumables\n} from '@ckeditor/ckeditor5-engine';\nimport { first, type GetCallback } from '@ckeditor/ckeditor5-utils';\nimport { type ImageUtils } from '../imageutils.js';\nimport { getViewImageType, isImageTypePlaceable } from './utils.js';\n\n/**\n * Returns a function that converts the image view representation:\n *\n * ```html\n * <figure class=\"image\"><img src=\"...\" alt=\"...\"></img></figure>\n * ```\n *\n * to the model representation:\n *\n * ```html\n * <imageBlock src=\"...\" alt=\"...\"></imageBlock>\n * ```\n *\n * The entire content of the `<figure>` element except the first `<img>` is being converted as children\n * of the `<imageBlock>` model element.\n *\n * @internal\n */\nexport function upcastImageFigure( imageUtils: ImageUtils ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\t// Do not convert if this is not an \"image figure\".\n\t\tif ( !conversionApi.consumable.test( data.viewItem, { name: true, classes: 'image' } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find an image element inside the figure element.\n\t\tconst viewImage = imageUtils.findViewImgElement( data.viewItem );\n\n\t\t// Do not convert if image element is absent or was already converted.\n\t\tif ( !viewImage || !conversionApi.consumable.test( viewImage, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If a block image cannot land at this position (e.g. inside an inline root or another limit that\n\t\t// disallows block content), do not handle the figure here. Leaving it unconsumed lets the default\n\t\t// converter unwrap the figure so the `upcastImg()` converter can turn the inner `<img>` into an inline\n\t\t// image - otherwise the whole figure (the image included) would be dropped.\n\t\tif ( !isImageTypePlaceable( conversionApi.schema, data.modelCursor, 'imageBlock' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Consume the figure to prevent other converters from processing it again.\n\t\tconversionApi.consumable.consume( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t// Convert view image to model image.\n\t\tconst conversionResult = conversionApi.convertItem( viewImage, data.modelCursor );\n\n\t\t// When nothing was converted there is no model image to attach the figure's children to.\n\t\t// In practice `convertItem()` yields a non-null (empty) range for an `<img/>` - handled by the\n\t\t// `!modelImage` check below - so this only guards the `ModelRange | null` return type.\n\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\tif ( !conversionResult.modelRange ) {\n\t\t\t// Revert consumed figure so other features can convert it.\n\t\t\tconversionApi.consumable.revert( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Get image element from conversion result.\n\t\tconst modelImage = first( conversionResult.modelRange.getItems() ) as ModelElement;\n\n\t\t// When image wasn't successfully converted then finish conversion.\n\t\tif ( !modelImage ) {\n\t\t\t// Revert consumed figure so other features can convert it.\n\t\t\tconversionApi.consumable.revert( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert rest of the figure element's children as an image children.\n\t\tconversionApi.convertChildren( data.viewItem, modelImage );\n\n\t\tconversionApi.updateConversionResult( modelImage, data );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:figure', converter );\n\t};\n}\n\n/**\n * Returns a function that upcasts an `<img>` element to either an `imageBlock` or an `imageInline` model element.\n *\n * The image type is first determined from the view structure (see {@link module:image/image/utils~getViewImageType}):\n * an `<img>` wrapped in a `<figure class=\"image\">` or styled with `display: block` becomes an `imageBlock`, otherwise\n * an `imageInline`.\n *\n * That structural type is then verified against the schema at the insertion position. If it cannot be placed there -\n * neither directly (or after hoisting to an allowed ancestor) nor wrapped in an auto-created paragraph - the converter\n * falls back to `matchImageType`. This is what allows a block image to degrade to an inline image inside an inline root\n * (and, symmetrically, an inline image to become a block image in a context that only accepts block images) instead of\n * being dropped.\n *\n * Both `ImageBlockEditing` and `ImageInlineEditing` register this converter, each passing the type it falls back to.\n * When only one of them is loaded, that single type is always produced.\n *\n * @internal\n * @param matchImageType The image type to fall back to when the type resolved from the view cannot be placed at the\n * insertion position.\n * @param imageUtils The `ImageUtils` plugin instance.\n */\nexport function upcastImg(\n\tmatchImageType: 'imageBlock' | 'imageInline',\n\timageUtils: ImageUtils\n): ( dispatcher: UpcastDispatcher ) => void {\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\t// Check if the `<img>` should be upcasted as a block image or an inline one.\n\t\tlet imageType = getViewImageType( data.viewItem, imageUtils );\n\n\t\t// Collect attributes and build consumables to test.\n\t\tconst attributes = data.viewItem.hasAttribute( 'src' ) ? {\n\t\t\tsrc: data.viewItem.getAttribute( 'src' )\n\t\t} : undefined;\n\n\t\tconst consumables: Consumables = {\n\t\t\tname: true,\n\t\t\tattributes: Object.keys( attributes || {} )\n\t\t};\n\n\t\t// Exit early if it is already consumed by some other converter.\n\t\tif ( !conversionApi.consumable.test( data.viewItem, consumables ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Is this image type allowed here? Switch type if not.\n\t\tif ( imageType != matchImageType && !isImageTypePlaceable( conversionApi.schema, data.modelCursor, imageType ) ) {\n\t\t\timageType = matchImageType;\n\t\t}\n\n\t\tconst modelElement = conversionApi.writer.createElement( imageType, attributes );\n\n\t\tif ( !conversionApi.safeInsert( modelElement, data.modelCursor ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconversionApi.consumable.consume( data.viewItem, consumables );\n\t\tconversionApi.convertChildren( data.viewItem, modelElement );\n\t\tconversionApi.updateConversionResult( modelElement, data );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:img', converter );\n\t};\n}\n\n/**\n * Returns a function that converts the image view representation:\n *\n * ```html\n * <picture><source ... /><source ... />...<img ... /></picture>\n * ```\n *\n * to the model representation as the `sources` attribute:\n *\n * ```html\n * <image[Block|Inline] ... sources=\"...\"></image[Block|Inline]>\n * ```\n *\n * @internal\n */\nexport function upcastPicture( imageUtils: ImageUtils ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst sourceAttributeNames = [ 'srcset', 'media', 'type', 'sizes' ];\n\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\tconst pictureViewElement = data.viewItem;\n\n\t\t// Do not convert <picture> if already consumed.\n\t\tif ( !conversionApi.consumable.test( pictureViewElement, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst sources = new Map<ViewElement, Record<string, string | undefined>>();\n\n\t\t// Collect all <source /> elements attribute values.\n\t\tfor ( const childSourceElement of pictureViewElement.getChildren() ) {\n\t\t\tif ( childSourceElement.is( 'element', 'source' ) ) {\n\t\t\t\tconst attributes: Record<string, string | undefined> = {};\n\n\t\t\t\tfor ( const name of sourceAttributeNames ) {\n\t\t\t\t\tif ( childSourceElement.hasAttribute( name ) ) {\n\t\t\t\t\t\t// Don't collect <source /> attribute if already consumed somewhere else.\n\t\t\t\t\t\tif ( conversionApi.consumable.test( childSourceElement, { attributes: name } ) ) {\n\t\t\t\t\t\t\tattributes[ name ] = childSourceElement.getAttribute( name );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( attributes ).length ) {\n\t\t\t\t\tsources.set( childSourceElement, attributes );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst imgViewElement = imageUtils.findViewImgElement( pictureViewElement );\n\n\t\t// Don't convert when a picture has no <img/> inside (it is broken).\n\t\tif ( !imgViewElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet modelImage = data.modelCursor.parent;\n\n\t\t// - In case of an inline image (cursor parent in a <paragraph>), the <img/> must be converted right away\n\t\t// because no converter handled it yet and otherwise there would be no model element to set the sources attribute on.\n\t\t// - In case of a block image, the <figure class=\"image\"> converter (in ImageBlockEditing) converts the\n\t\t// <img/> right away on its own and the modelCursor is already inside an imageBlock and there's nothing special\n\t\t// to do here.\n\t\tif ( !modelImage.is( 'element', 'imageBlock' ) ) {\n\t\t\tconst conversionResult = conversionApi.convertItem( imgViewElement, data.modelCursor );\n\n\t\t\t// Set image range as conversion result.\n\t\t\tdata.modelRange = conversionResult.modelRange;\n\n\t\t\t// Continue conversion where image conversion ends.\n\t\t\tdata.modelCursor = conversionResult.modelCursor;\n\n\t\t\t// The `<img/>` was not converted to a model image element (e.g. an inline root only allows\n\t\t\t// inline content and neither image type was allowed), so there is nothing to set the sources on.\n\t\t\t// In practice `convertItem()` yields a non-null (empty) range for an `<img/>` - handled by the\n\t\t\t// `!modelImage` check below - so this only guards the `ModelRange | null` return type.\n\t\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\t\tif ( !conversionResult.modelRange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodelImage = first( conversionResult.modelRange.getItems() ) as ModelElement;\n\n\t\t\tif ( !modelImage ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconversionApi.consumable.consume( pictureViewElement, { name: true } );\n\n\t\t// Consume only these <source/> attributes that were actually collected and will be passed on\n\t\t// to the image model element.\n\t\tfor ( const [ sourceElement, attributes ] of sources ) {\n\t\t\tconversionApi.consumable.consume( sourceElement, { attributes: Object.keys( attributes ) } );\n\t\t}\n\n\t\tif ( sources.size ) {\n\t\t\tconversionApi.writer.setAttribute( 'sources', Array.from( sources.values() ), modelImage );\n\t\t}\n\n\t\t// Convert rest of the <picture> children as an image children. Other converters may want to consume them.\n\t\tconversionApi.convertChildren( pictureViewElement, modelImage );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:picture', converter );\n\t};\n}\n\n/**\n * Converter used to convert the `srcset` model image attribute to the `srcset` and `sizes` attributes in the view.\n *\n * @internal\n * @param imageType The type of the image.\n */\nexport function downcastSrcsetAttribute(\n\timageUtils: ImageUtils,\n\timageType: 'imageBlock' | 'imageInline'\n): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<ModelElement>> = ( evt, data, conversionApi\t) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst writer = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\tif ( data.attributeNewValue === null ) {\n\t\t\twriter.removeAttribute( 'srcset', img );\n\t\t\twriter.removeAttribute( 'sizes', img );\n\t\t} else {\n\t\t\tif ( data.attributeNewValue ) {\n\t\t\t\twriter.setAttribute( 'srcset', data.attributeNewValue, img );\n\t\t\t\t// Always outputting `100vw`. See https://github.com/ckeditor/ckeditor5-image/issues/2.\n\t\t\t\twriter.setAttribute( 'sizes', '100vw', img );\n\t\t\t}\n\t\t}\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( `attribute:srcset:${ imageType }`, converter );\n\t};\n}\n\n/**\n * Converts the `source` model attribute to the `<picture><source /><source />...<img /></picture>`\n * view structure.\n *\n * @internal\n */\nexport function downcastSourcesAttribute( imageUtils: ImageUtils ): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<ModelElement>> = ( evt, data, conversionApi\t) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst imgElement = imageUtils.findViewImgElement( element )!;\n\t\tconst attributeNewValue = data.attributeNewValue as null | Array<ViewElementAttributes>;\n\n\t\tif ( attributeNewValue && attributeNewValue.length ) {\n\t\t\t// Collect all wrapping attribute elements.\n\t\t\tconst attributeElements = [];\n\t\t\tlet viewElement = imgElement.parent;\n\n\t\t\twhile ( viewElement && viewElement.is( 'attributeElement' ) ) {\n\t\t\t\tconst parentElement = viewElement.parent;\n\n\t\t\t\tviewWriter.unwrap( viewWriter.createRangeOn( imgElement ), viewElement );\n\n\t\t\t\tattributeElements.unshift( viewElement );\n\t\t\t\tviewElement = parentElement;\n\t\t\t}\n\n\t\t\tconst hasPictureElement = imgElement.parent!.is( 'element', 'picture' );\n\n\t\t\t// Reuse existing <picture> element (https://github.com/ckeditor/ckeditor5/issues/17192) or create a new one.\n\t\t\tconst pictureElement = hasPictureElement ? imgElement.parent : viewWriter.createContainerElement( 'picture', null );\n\n\t\t\tif ( !hasPictureElement ) {\n\t\t\t\tviewWriter.insert( viewWriter.createPositionBefore( imgElement ), pictureElement );\n\t\t\t}\n\n\t\t\tviewWriter.remove( viewWriter.createRangeIn( pictureElement ) );\n\n\t\t\tviewWriter.insert( viewWriter.createPositionAt( pictureElement, 'end' ),\n\t\t\t\tattributeNewValue.map( sourceAttributes => {\n\t\t\t\t\treturn viewWriter.createEmptyElement( 'source', sourceAttributes );\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tviewWriter.move( viewWriter.createRangeOn( imgElement ), viewWriter.createPositionAt( pictureElement, 'end' ) );\n\n\t\t\t// Apply collected attribute elements over the new picture element.\n\t\t\tfor ( const attributeElement of attributeElements ) {\n\t\t\t\tviewWriter.wrap( viewWriter.createRangeOn( pictureElement ), attributeElement );\n\t\t\t}\n\t\t}\n\t\t// Both setting \"sources\" to an empty array and removing the attribute should unwrap the <img />.\n\t\t// Unwrap once if the latter followed the former, though.\n\t\telse if ( imgElement.parent!.is( 'element', 'picture' ) ) {\n\t\t\tconst pictureElement = imgElement.parent;\n\n\t\t\tviewWriter.move( viewWriter.createRangeOn( imgElement ), viewWriter.createPositionBefore( pictureElement ) );\n\t\t\tviewWriter.remove( pictureElement );\n\t\t}\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( 'attribute:sources:imageBlock', converter );\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( 'attribute:sources:imageInline', converter );\n\t};\n}\n\n/**\n * Converter used to convert a given image attribute from the model to the view.\n *\n * @internal\n * @param imageType The type of the image.\n * @param attributeKey The name of the attribute to convert.\n */\nexport function downcastImageAttribute(\n\timageUtils: ImageUtils,\n\timageType: 'imageBlock' | 'imageInline',\n\tattributeKey: string\n): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<ModelElement>> = ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\tviewWriter.setAttribute( data.attributeKey, data.attributeNewValue || '', img );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( `attribute:${ attributeKey }:${ imageType }`, converter );\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageloadobserver\n */\n\nimport { Observer } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Observes all new images added to the {@link module:engine/view/document~ViewDocument},\n * fires {@link module:engine/view/document~ViewDocument#event:imageLoaded} and\n * {@link module:engine/view/document~ViewDocument#event:layoutChanged} event every time when the new image\n * has been loaded.\n *\n * **Note:** This event is not fired for images that has been added to the document and rendered as `complete` (already loaded).\n */\nexport class ImageLoadObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe( domRoot: HTMLElement ): void {\n\t\tthis.listenTo( domRoot, 'load', ( event, domEvent ) => {\n\t\t\tconst domElement = domEvent.target as HTMLElement;\n\n\t\t\tif ( this.checkShouldIgnoreEventFromTarget( domElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( domElement.tagName == 'IMG' ) {\n\t\t\t\tthis._fireEvents( domEvent );\n\t\t\t}\n\t\t\t// Use capture phase for better performance (https://github.com/ckeditor/ckeditor5/issues/4504).\n\t\t}, { useCapture: true } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving( domRoot: HTMLElement ): void {\n\t\tthis.stopListening( domRoot );\n\t}\n\n\t/**\n\t * Fires {@link module:engine/view/document~ViewDocument#event:layoutChanged} and\n\t * {@link module:engine/view/document~ViewDocument#event:imageLoaded}\n\t * if observer {@link #isEnabled is enabled}.\n\t *\n\t * @param domEvent The DOM event.\n\t */\n\tprivate _fireEvents( domEvent: Event ): void {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis.document.fire( 'layoutChanged' );\n\t\t\tthis.document.fire<ImageLoadedEvent>( 'imageLoaded', domEvent );\n\t\t}\n\t}\n}\n\n/**\n * Fired when an <img/> DOM element has been loaded in the DOM root.\n *\n * Introduced by {@link module:image/image/imageloadobserver~ImageLoadObserver}.\n *\n * @see module:image/image/imageloadobserver~ImageLoadObserver\n *\n * @eventName module:engine/view/document~ViewDocument#imageLoaded\n * @param data Event data.\n */\nexport type ImageLoadedEvent = {\n\tname: 'imageLoaded';\n\targs: [ Event ];\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/insertimagecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { logWarning, toArray, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * Insert image command.\n *\n * The command is registered by the {@link module:image/image/imageediting~ImageEditing} plugin as `insertImage`\n * and it is also available via aliased `imageInsert` name.\n *\n * In order to insert an image at the current selection position\n * (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n * execute the command and specify the image source:\n *\n * ```ts\n * editor.execute( 'insertImage', { source: 'http://url.to.the/image' } );\n * ```\n *\n * It is also possible to insert multiple images at once:\n *\n * ```ts\n * editor.execute( 'insertImage', {\n * \tsource: [\n * \t\t'path/to/image.jpg',\n * \t\t'path/to/other-image.jpg'\n * \t]\n * } );\n * ```\n *\n * If you want to take the full control over the process, you can specify individual model attributes:\n *\n * ```ts\n * editor.execute( 'insertImage', {\n * \tsource: [\n * \t\t{ src: 'path/to/image.jpg', alt: 'First alt text' },\n * \t\t{ src: 'path/to/other-image.jpg', alt: 'Second alt text', customAttribute: 'My attribute value' }\n * \t]\n * } );\n * ```\n */\nexport class InsertImageCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tconst configImageInsertType = editor.config.get( 'image.insert.type' );\n\n\t\tif ( !editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tif ( configImageInsertType === 'block' ) {\n\t\t\t\t/**\n\t\t\t\t * The {@link module:image/imageblock~ImageBlock} plugin must be enabled to allow inserting block images. See\n\t\t\t\t * {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t\t *\n\t\t\t\t * @error image-block-plugin-required\n\t\t\t\t */\n\t\t\t\tlogWarning( 'image-block-plugin-required' );\n\t\t\t}\n\t\t}\n\n\t\tif ( !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tif ( configImageInsertType === 'inline' ) {\n\t\t\t\t/**\n\t\t\t\t * The {@link module:image/imageinline~ImageInline} plugin must be enabled to allow inserting inline images. See\n\t\t\t\t * {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t\t *\n\t\t\t\t * @error image-inline-plugin-required\n\t\t\t\t */\n\t\t\t\tlogWarning( 'image-inline-plugin-required' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tthis.isEnabled = imageUtils.isImageAllowed();\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.imageType The type of the image to insert. If not specified, the type will be determined automatically.\n\t * @param options.source The image source or an array of image sources to insert.\n\t * @param options.breakBlock If set to `true`, the block at the selection start will be broken before inserting the image.\n\t * See the documentation of the command to learn more about accepted formats.\n\t */\n\tpublic override execute(\n\t\toptions: {\n\t\t\tsource: ArrayOrItem<string | Record<string, unknown>>;\n\t\t\timageType?: 'imageBlock' | 'imageInline' | null;\n\t\t\tbreakBlock?: boolean;\n\t\t}\n\t): void {\n\t\tconst sourceDefinitions = toArray<string | Record<string, unknown>>( options.source );\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// In case of multiple images, each image (starting from the 2nd) will be inserted at a position that\n\t\t// follows the previous one. That will move the selection and, to stay on the safe side and make sure\n\t\t// all images inherit the same selection attributes, they are collected beforehand.\n\t\t//\n\t\t// Applying these attributes ensures, for instance, that inserting an (inline) image into a link does\n\t\t// not split that link but preserves its continuity.\n\t\t//\n\t\t// Note: Selection attributes that do not make sense for images will be filtered out by insertImage() anyway.\n\t\tconst selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n\t\tsourceDefinitions.forEach( ( sourceDefinition, index ) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\tif ( typeof sourceDefinition === 'string' ) {\n\t\t\t\tsourceDefinition = { src: sourceDefinition };\n\t\t\t}\n\n\t\t\t// Inserting of an inline image replace the selected element and make a selection on the inserted image.\n\t\t\t// Therefore inserting multiple inline images requires creating position after each element.\n\t\t\tif ( index && selectedElement && imageUtils.isImage( selectedElement ) ) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter( selectedElement );\n\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes }, position, options.imageType );\n\t\t\t} else if ( options.breakBlock ) {\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes }, selection.getFirstPosition(), options.imageType );\n\t\t\t} else {\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes }, null, options.imageType );\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/replaceimagesourcecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\nimport type { ModelWriter, ModelElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Replace image source command.\n *\n * Changes image source to the one provided. Can be executed as follows:\n *\n * ```ts\n * editor.execute( 'replaceImageSource', { source: 'http://url.to.the/image' } );\n * ```\n */\nexport class ReplaceImageSourceCommand extends Command {\n\tdeclare public value: string | null;\n\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.decorate( 'cleanupImage' );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = this.editor.model.document.selection.getSelectedElement()!;\n\n\t\tthis.isEnabled = imageUtils.isImage( element );\n\t\tthis.value = this.isEnabled ? element.getAttribute( 'src' ) as string : null;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.source The image source to replace.\n\t */\n\tpublic override execute( options: { source: string } ): void {\n\t\tconst image = this.editor.model.document.selection.getSelectedElement()!;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setAttribute( 'src', options.source, image );\n\n\t\t\tthis.cleanupImage( writer, image );\n\n\t\t\timageUtils.setImageNaturalSizeAttributes( image );\n\t\t} );\n\t}\n\n\t/**\n\t * Cleanup image attributes that are not relevant to the new source.\n\t *\n\t * Removed attributes are: 'srcset', 'sizes', 'sources', 'width', 'height', 'alt'.\n\t *\n\t * This method is decorated, to allow custom cleanup logic.\n\t * For example, to remove 'myImageId' attribute after 'src' has changed:\n\t *\n\t * ```ts\n\t * replaceImageSourceCommand.on( 'cleanupImage', ( eventInfo, [ writer, image ] ) => {\n\t * \twriter.removeAttribute( 'myImageId', image );\n\t * } );\n\t * ```\n\t */\n\tpublic cleanupImage( writer: ModelWriter, image: ModelElement ): void {\n\t\twriter.removeAttribute( 'srcset', image );\n\t\twriter.removeAttribute( 'sizes', image );\n\n\t\t/**\n\t\t * In case responsive images some attributes should be cleaned up.\n\t\t * Check: https://github.com/ckeditor/ckeditor5/issues/15093\n\t\t */\n\t\twriter.removeAttribute( 'sources', image );\n\t\twriter.removeAttribute( 'width', image );\n\t\twriter.removeAttribute( 'height', image );\n\t\twriter.removeAttribute( 'alt', image );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageLoadObserver } from './imageloadobserver.js';\nimport { InsertImageCommand } from './insertimagecommand.js';\nimport { ReplaceImageSourceCommand } from './replaceimagesourcecommand.js';\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image engine plugin. This module loads common code shared between\n * {@link module:image/image/imageinlineediting~ImageInlineEditing} and\n * {@link module:image/image/imageblockediting~ImageBlockEditing} plugins.\n *\n * This plugin registers the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command.\n */\nexport class ImageEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\n\t\t// See https://github.com/ckeditor/ckeditor5-image/issues/142.\n\t\teditor.editing.view.addObserver( ImageLoadObserver );\n\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'alt'\n\t\t\t\t},\n\t\t\t\tmodel: 'alt'\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'srcset'\n\t\t\t\t},\n\t\t\t\tmodel: 'srcset'\n\t\t\t} );\n\n\t\tconst insertImageCommand = new InsertImageCommand( editor );\n\t\tconst replaceImageSourceCommand = new ReplaceImageSourceCommand( editor );\n\n\t\teditor.commands.add( 'insertImage', insertImageCommand );\n\t\teditor.commands.add( 'replaceImageSource', replaceImageSourceCommand );\n\n\t\t// `imageInsert` is an alias for backward compatibility.\n\t\teditor.commands.add( 'imageInsert', insertImageCommand );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagesizeattributes\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport type { DowncastDispatcher, DowncastAttributeEvent, ViewElement, ModelElement } from '@ckeditor/ckeditor5-engine';\nimport { ImageUtils } from './imageutils.js';\nimport { widthAndHeightStylesAreBothSet, getSizeValueIfInPx } from './image/utils.js';\n\n/**\n * This plugin enables `width` and `height` attributes in inline and block image elements.\n */\nexport class ImageSizeAttributes extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageSizeAttributes' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._registerSchema();\n\t\tthis._registerConverters( 'imageBlock' );\n\t\tthis._registerConverters( 'imageInline' );\n\t}\n\n\t/**\n\t * Registers the `width` and `height` attributes for inline and block images.\n\t */\n\tprivate _registerSchema(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: [ 'width', 'height' ] } );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tschema.extend( 'imageInline', { allowAttributes: [ 'width', 'height' ] } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers converters for `width` and `height` attributes.\n\t */\n\tprivate _registerConverters( imageType: 'imageBlock' | 'imageInline' ): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst viewElementName = imageType === 'imageBlock' ? 'figure' : 'img';\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\twidth: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'width',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn getSizeValueIfInPx( viewElement.getStyle( 'width' ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tkey: 'width'\n\t\t\t\t},\n\t\t\t\tmodel: 'width'\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\theight: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'height',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn getSizeValueIfInPx( viewElement.getStyle( 'height' ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tkey: 'height'\n\t\t\t\t},\n\t\t\t\tmodel: 'height'\n\t\t\t} );\n\n\t\t// Dedicated converters to propagate attributes to the <img> element.\n\t\teditor.conversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t\tattachDowncastConverter( dispatcher, 'width', 'width', true, true );\n\t\t\tattachDowncastConverter( dispatcher, 'height', 'height', true, true );\n\t\t} );\n\n\t\teditor.conversion.for( 'dataDowncast' ).add( dispatcher => {\n\t\t\tattachDowncastConverter( dispatcher, 'width', 'width', false );\n\t\t\tattachDowncastConverter( dispatcher, 'height', 'height', false );\n\t\t} );\n\n\t\t// Consume `aspect-ratio` style if `width` and `height` attributes are set on the image.\n\t\teditor.conversion.for( 'upcast' ).add( dispatcher => {\n\t\t\tdispatcher.on( 'element:img', ( evt, data, conversionApi ) => {\n\t\t\t\tconst width = data.viewItem.getAttribute( 'width' );\n\t\t\t\tconst height = data.viewItem.getAttribute( 'height' );\n\n\t\t\t\tif ( width && height ) {\n\t\t\t\t\tconversionApi.consumable.consume( data.viewItem, { styles: [ 'aspect-ratio' ] } );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\tfunction attachDowncastConverter(\n\t\t\tdispatcher: DowncastDispatcher,\n\t\t\tmodelAttributeName: string,\n\t\t\tviewAttributeName: string,\n\t\t\tsetRatioForInlineImage: boolean,\n\t\t\tisEditingDowncast: boolean = false\n\t\t) {\n\t\t\tdispatcher.on<DowncastAttributeEvent>( `attribute:${ modelAttributeName }:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item as ModelElement )!;\n\t\t\t\tconst img = imageUtils.findViewImgElement( viewElement )!;\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setAttribute( viewAttributeName, data.attributeNewValue, img );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeAttribute( viewAttributeName, img );\n\t\t\t\t}\n\n\t\t\t\tconst width = data.item.getAttribute( 'width' );\n\t\t\t\tconst height = data.item.getAttribute( 'height' );\n\t\t\t\tconst hasSizes = width && height;\n\n\t\t\t\tif ( hasSizes && isEditingDowncast ) {\n\t\t\t\t\tviewWriter.setAttribute( 'loading', 'lazy', img );\n\t\t\t\t}\n\n\t\t\t\t// Do not set aspect-ratio for pictures. See https://github.com/ckeditor/ckeditor5/issues/14579.\n\t\t\t\tif ( data.item.hasAttribute( 'sources' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isResized = data.item.hasAttribute( 'resizedWidth' );\n\n\t\t\t\t// Do not set aspect ratio for inline images which are not resized (data pipeline).\n\t\t\t\tif ( imageType === 'imageInline' && !isResized && !setRatioForInlineImage ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( hasSizes ) {\n\t\t\t\t\tviewWriter.setStyle( 'aspect-ratio', `${ width }/${ height }`, img );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imagetypecommand\n */\n\nimport { type ModelElement } from '@ckeditor/ckeditor5-engine';\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\nimport { isImageTypePlaceable } from './utils.js';\n\n/**\n * The image type command. It changes the type of a selected image, depending on the configuration.\n */\nexport class ImageTypeCommand extends Command {\n\t/**\n\t * Model element name the command converts to.\n\t */\n\tprivate readonly _modelElementName: 'imageBlock' | 'imageInline';\n\n\t/**\n\t * @inheritDoc\n\t *\n\t * @param modelElementName Model element name the command converts to.\n\t */\n\tconstructor( editor: Editor, modelElementName: 'imageBlock' | 'imageInline' ) {\n\t\tsuper( editor );\n\n\t\tthis._modelElementName = modelElementName;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\t// The command converts the opposite image type into `_modelElementName`, so a matching source image\n\t\t// must be selected.\n\t\tconst hasSourceImage = this._modelElementName === 'imageBlock' ?\n\t\t\timageUtils.isInlineImage( element ) :\n\t\t\timageUtils.isBlockImage( element );\n\n\t\tif ( !hasSourceImage ) {\n\t\t\tthis.isEnabled = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// The target type must also be placeable at the image's position. Otherwise the conversion would call\n\t\t// `model.insertContent` with no valid landing spot (e.g. switching to `imageBlock` inside an `$inlineRoot`,\n\t\t// or to `imageInline` inside a container that only accepts block images).\n\t\tconst position = model.createPositionBefore( element! );\n\n\t\tthis.isEnabled = isImageTypePlaceable( schema, position, this._modelElementName );\n\t}\n\n\t/**\n\t * Executes the command and changes the type of a selected image.\n\t *\n\t * @fires execute\n\t * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t * The default is `true`.\n\t * @returns An object containing references to old and new model image elements\n\t * (for before and after the change) so external integrations can hook into the decorated\n\t * `execute` event and handle this change. `null` if the type change failed.\n\t */\n\tpublic override execute( options: { setImageSizes?: boolean } = {} ): { oldElement: ModelElement; newElement: ModelElement } | null {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst oldElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\t\tconst attributes = Object.fromEntries( oldElement.getAttributes() );\n\n\t\t// Don't change image type if \"src\" is missing (a broken image), unless there's \"uploadId\" set.\n\t\t// This state may happen during image upload (before it finishes) and it should be possible to change type\n\t\t// of the image in the meantime.\n\t\tif ( !attributes.src && !attributes.uploadId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn model.change( writer => {\n\t\t\tconst { setImageSizes = true } = options;\n\n\t\t\t// Get all markers that contain the old image element.\n\t\t\tconst markers = Array.from( model.markers )\n\t\t\t\t.filter( marker => marker.getRange().containsItem( oldElement ) );\n\n\t\t\tconst newElement = imageUtils.insertImage(\n\t\t\t\tattributes,\n\t\t\t\tmodel.createSelection( oldElement, 'on' ),\n\t\t\t\tthis._modelElementName,\n\t\t\t\t{ setImageSizes }\n\t\t\t);\n\n\t\t\tif ( !newElement ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst newElementRange = writer.createRangeOn( newElement );\n\n\t\t\t// Expand the previously intersecting markers' ranges to include the new image element.\n\t\t\tfor ( const marker of markers ) {\n\t\t\t\tconst markerRange = marker.getRange();\n\n\t\t\t\t// Join the survived part of the old marker range with the new element range\n\t\t\t\t// (loosely because there could be some new paragraph or the existing one might got split).\n\t\t\t\tconst range = markerRange.root.rootName != '$graveyard' ?\n\t\t\t\t\tmarkerRange.getJoined( newElementRange, true )! : newElementRange;\n\n\t\t\t\twriter.updateMarker( marker, { range } );\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\toldElement,\n\t\t\t\tnewElement\n\t\t\t};\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageplaceholder\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport type {\n\tDowncastAttributeEvent,\n\tModelElement,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\n\nimport { ImageUtils } from '../imageutils.js';\nimport { ImageLoadObserver, type ImageLoadedEvent } from './imageloadobserver.js';\n\nimport '../../theme/imageplaceholder.css';\n\n/**\n * Adds support for image placeholder that is automatically removed when the image is loaded.\n */\nexport class ImagePlaceholder extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImagePlaceholder' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._setupSchema();\n\t\tthis._setupConversion();\n\t\tthis._setupLoadListener();\n\t}\n\n\t/**\n\t * Extends model schema.\n\t */\n\tprivate _setupSchema(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\t// Wait for ImageBlockEditing or ImageInlineEditing to register their elements first,\n\t\t// that's why doing this in afterInit() instead of init().\n\t\tif ( schema.isRegistered( 'imageBlock' ) ) {\n\t\t\tschema.extend( 'imageBlock', {\n\t\t\t\tallowAttributes: [ 'placeholder' ]\n\t\t\t} );\n\t\t}\n\n\t\tif ( schema.isRegistered( 'imageInline' ) ) {\n\t\t\tschema.extend( 'imageInline', {\n\t\t\t\tallowAttributes: [ 'placeholder' ]\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Registers converters.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( 'attribute:placeholder', ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( !data.item.is( 'element', 'imageBlock' ) && !data.item.is( 'element', 'imageInline' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconversionApi.consumable.consume( data.item, evt.name );\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\t\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\t\t\tif ( data.attributeNewValue ) {\n\t\t\t\t\tviewWriter.addClass( 'image_placeholder', img );\n\t\t\t\t\tviewWriter.setStyle( 'background-image', `url(${ data.attributeNewValue })`, img );\n\t\t\t\t\tviewWriter.setCustomProperty( 'editingPipeline:doNotReuseOnce', true, img );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeClass( 'image_placeholder', img );\n\t\t\t\t\tviewWriter.removeStyle( 'background-image', img );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * Prepares listener for image load.\n\t */\n\tprivate _setupLoadListener(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editing = editor.editing;\n\t\tconst editingView = editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\teditingView.addObserver( ImageLoadObserver );\n\n\t\tthis.listenTo<ImageLoadedEvent>( editingView.document, 'imageLoaded', ( evt, domEvent ) => {\n\t\t\tconst imgViewElement = editingView.domConverter.mapDomToView( domEvent.target as HTMLElement );\n\n\t\t\tif ( !imgViewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst viewElement = imageUtils.getImageWidgetFromImageView( imgViewElement as ViewElement );\n\n\t\t\tif ( !viewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst modelElement = editing.mapper.toModelElement( viewElement );\n\n\t\t\tif ( !modelElement || !modelElement.hasAttribute( 'placeholder' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\twriter.removeAttribute( 'placeholder', modelElement );\n\t\t\t} );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageblockediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tClipboardPipeline,\n\ttype ClipboardInputTransformationEvent,\n\ttype ClipboardContentInsertionEvent\n} from '@ckeditor/ckeditor5-clipboard';\nimport {\n\tViewUpcastWriter,\n\ttype ViewElement\n} from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tdowncastImageAttribute,\n\tdowncastSrcsetAttribute,\n\tupcastImg,\n\tupcastImageFigure\n} from './converters.js';\n\nimport { ImageEditing } from './imageediting.js';\nimport { ImageSizeAttributes } from '../imagesizeattributes.js';\nimport { ImageTypeCommand } from './imagetypecommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport {\n\tcreateBlockImageViewElement,\n\tdetermineImageTypeForInsertionAtSelection,\n\tisImageTypePlaceable\n} from './utils.js';\nimport { ImagePlaceholder } from './imageplaceholder.js';\n\n/**\n * The image block plugin.\n *\n * It registers:\n *\n * * `<imageBlock>` as a block element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n * * converters for editing and data pipelines.,\n * * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeBlock'`} command that converts inline images into\n * block images.\n */\nexport class ImageBlockEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[\n\t\tImageEditing,\n\t\tImageSizeAttributes,\n\t\tImageUtils,\n\t\tImagePlaceholder,\n\t\tClipboardPipeline\n\t]> {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageBlockEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Converters 'alt' and 'srcset' are added in 'ImageEditing' plugin.\n\t\tschema.register( 'imageBlock', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'alt', 'src', 'srcset' ]\n\t\t} );\n\n\t\tthis._setupConversion();\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.commands.add( 'imageTypeBlock', new ImageTypeCommand( this.editor, 'imageBlock' ) );\n\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * block images (block image widgets) and their attributes.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'dataDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageBlock',\n\t\t\t\tview: ( modelElement, { writer } ) => createBlockImageViewElement( writer )\n\t\t\t} );\n\n\t\tconversion.for( 'editingDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageBlock',\n\t\t\t\tview: ( modelElement, { writer } ) => imageUtils.toImageWidget(\n\t\t\t\t\tcreateBlockImageViewElement( writer ), writer, t( 'image widget' )\n\t\t\t\t)\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageBlock', 'src' ) )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageBlock', 'alt' ) )\n\t\t\t.add( downcastSrcsetAttribute( imageUtils, 'imageBlock' ) );\n\n\t\t// More image related upcasts are in 'ImageEditing' plugin.\n\t\tconversion.for( 'upcast' )\n\t\t\t.add( upcastImg( 'imageBlock', imageUtils ) )\n\t\t\t.add( upcastImageFigure( imageUtils ) );\n\t}\n\n\t/**\n\t * Integrates the plugin with the clipboard pipeline.\n\t *\n\t * Idea is that the feature should recognize the user's intent when an **inline** image is\n\t * pasted or dropped. If such an image is pasted/dropped:\n\t *\n\t * * into an empty block (e.g. an empty paragraph),\n\t * * on another object (e.g. some block widget).\n\t *\n\t * it gets converted into a block image on the fly. We assume this is the user's intent\n\t * if they decided to put their image there.\n\t *\n\t * See the `ImageInlineEditing` for the similar integration that works in the opposite direction.\n\t *\n\t * The feature also sets image `width` and `height` attributes on paste.\n\t */\n\tprivate _setupClipboardIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'inputTransformation',\n\t\t\t( evt, data ) => {\n\t\t\t\tconst docFragmentChildren = Array.from( data.content.getChildren() as IterableIterator<ViewElement> );\n\t\t\t\tlet modelRange;\n\n\t\t\t\t// Make sure only <img> elements are dropped or pasted. Otherwise, if there some other HTML\n\t\t\t\t// mixed up, this should be handled as a regular paste.\n\t\t\t\tif ( !docFragmentChildren.every( imageUtils.isInlineImageView ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// When drag and dropping, data.targetRanges specifies where to drop because\n\t\t\t\t// this is usually a different place than the current model selection (the user\n\t\t\t\t// uses a drop marker to specify the drop location).\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\tmodelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// Pasting, however, always occurs at the current model selection.\n\t\t\t\telse {\n\t\t\t\t\tmodelRange = model.document.selection.getFirstRange();\n\t\t\t\t}\n\n\t\t\t\tconst selection = model.createSelection( modelRange );\n\n\t\t\t\t// Convert inline images into block images only when the currently selected block is empty\n\t\t\t\t// (e.g. an empty paragraph) or some object is selected (to replace it). Additionally verify\n\t\t\t\t// that `imageBlock` can actually land somewhere reachable from the drop target - inside\n\t\t\t\t// `$inlineRoot` or another limit container that disallows block content the heuristic\n\t\t\t\t// returns `'imageBlock'` for a blockless selection, but wrapping the pasted `<img>` would\n\t\t\t\t// just be upcast-stripped.\n\t\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\t\tconst canPlaceBlock = !!selectionPosition && isImageTypePlaceable( model.schema, selectionPosition, 'imageBlock' );\n\n\t\t\t\tif (\n\t\t\t\t\tcanPlaceBlock &&\n\t\t\t\t\tdetermineImageTypeForInsertionAtSelection( model.schema, selection ) === 'imageBlock'\n\t\t\t\t) {\n\t\t\t\t\tconst writer = new ViewUpcastWriter( editingView.document );\n\n\t\t\t\t\t// Wrap <img ... /> -> <figure class=\"image\"><img .../></figure>\n\t\t\t\t\tconst blockViewImages = docFragmentChildren.map(\n\t\t\t\t\t\tinlineViewImage => writer.createElement( 'figure', { class: 'image' }, inlineViewImage )\n\t\t\t\t\t);\n\n\t\t\t\t\tdata.content = writer.createDocumentFragment( blockViewImages );\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.listenTo<ClipboardContentInsertionEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'contentInsertion',\n\t\t\t( evt, data ) => {\n\t\t\t\tif ( data.method !== 'paste' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tconst range = writer.createRangeIn( data.content );\n\n\t\t\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\t\t\tif ( item.is( 'element', 'imageBlock' ) ) {\n\t\t\t\t\t\t\timageUtils.setImageNaturalSizeAttributes( item );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/ui/imageinsertformview\n */\n\nimport {\n\tView,\n\tViewCollection,\n\tsubmitHandler,\n\tFocusCycler,\n\tCollapsibleView,\n\ttype FocusableView\n} from '@ckeditor/ckeditor5-ui';\nimport { FocusTracker, KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\n\nimport '../../../theme/imageinsert.css';\n\n/**\n * The view displayed in the insert image dropdown.\n *\n * See {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n *\n * @internal\n */\nexport class ImageInsertFormView extends View {\n\t/**\n\t * Tracks information about DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * A collection of the defined integrations for inserting the images.\n\t */\n\tprivate readonly children: ViewCollection<FocusableView>;\n\n\t/**\n\t * Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t *\n\t * @param locale The localization services instance.\n\t * @param integrations An integrations object that contains components (or tokens for components) to be shown in the panel view.\n\t */\n\tconstructor( locale: Locale, integrations: Array<FocusableView> = [] ) {\n\t\tsuper( locale );\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis._focusables = new ViewCollection();\n\t\tthis.children = this.createCollection();\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tfor ( const view of integrations ) {\n\t\t\tthis.children.add( view );\n\t\t\tthis._focusables.add( view );\n\n\t\t\tif ( view instanceof CollapsibleView ) {\n\t\t\t\tthis._focusables.addMany( view.children );\n\t\t\t}\n\t\t}\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-image-insert-form'\n\t\t\t\t],\n\t\t\t\ttabindex: -1\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tfor ( const view of this._focusables ) {\n\t\t\tthis.focusTracker.add( view.element! );\n\t\t}\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\tconst stopPropagation = ( data: KeyboardEvent ) => data.stopPropagation();\n\n\t\t// Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n\t\t// keystroke handler would take over the key management in the URL input. We need to prevent\n\t\t// this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n\t\tthis.keystrokes.set( 'arrowright', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowleft', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowup', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowdown', stopPropagation );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the first {@link #_focusables focusable} in the form.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/imageinsertui\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tlogWarning,\n\ttype Locale,\n\ttype Observable\n} from '@ckeditor/ckeditor5-utils';\nimport {\n\tcreateDropdown,\n\ttype ButtonView,\n\ttype DropdownButtonView,\n\ttype DropdownView,\n\ttype FocusableView,\n\ttype MenuBarMenuListItemButtonView,\n\tMenuBarMenuListItemView,\n\tMenuBarMenuListView,\n\tMenuBarMenuView,\n\tSplitButtonView,\n\ttype View\n} from '@ckeditor/ckeditor5-ui';\nimport { IconImage } from '@ckeditor/ckeditor5-icons';\n\nimport { ImageInsertFormView } from './ui/imageinsertformview.js';\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image insert dropdown plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n * and {@glink features/images/images-inserting Insert images via source URL} documentation.\n *\n * Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n * and also the `imageInsert` dropdown as an alias for backward compatibility.\n *\n * Adds the `'menuBar:insertImage'` sub-menu to the {@link module:ui/componentfactory~ComponentFactory UI component factory}, which is\n * by default added to the `'Insert'` menu.\n */\nexport class ImageInsertUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsertUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * The dropdown view responsible for displaying the image insert UI.\n\t */\n\tpublic dropdownView?: DropdownView;\n\n\t/**\n\t * Observable property used to alter labels while some image is selected and when it is not.\n\t *\n\t * @observable\n\t */\n\tdeclare public isImageSelected: boolean;\n\n\t/**\n\t * Registered integrations map.\n\t */\n\tprivate _integrations = new Map<string, IntegrationData>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image.insert.integrations', [\n\t\t\t'upload',\n\t\t\t'assetManager',\n\t\t\t'url'\n\t\t] );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tthis.set( 'isImageSelected', false );\n\n\t\tthis.listenTo( editor.model.document, 'change', () => {\n\t\t\tthis.isImageSelected = imageUtils.isImage( selection.getSelectedElement() );\n\t\t} );\n\n\t\tconst componentCreator = ( locale: Locale ) => this._createToolbarComponent( locale );\n\t\tconst menuBarComponentCreator = ( locale: Locale ) => this._createMenuBarComponent( locale );\n\n\t\t// Register `insertImage` dropdown and add `imageInsert` dropdown as an alias for backward compatibility.\n\t\teditor.ui.componentFactory.add( 'insertImage', componentCreator );\n\t\teditor.ui.componentFactory.add( 'imageInsert', componentCreator );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:insertImage', menuBarComponentCreator );\n\t}\n\n\t/**\n\t * Registers the insert image dropdown integration.\n\t */\n\tpublic registerIntegration( {\n\t\tname,\n\t\tobservable,\n\t\tbuttonViewCreator,\n\t\tformViewCreator,\n\t\tmenuBarButtonViewCreator,\n\t\trequiresForm = false,\n\t\toverride = false\n\t}: {\n\t\tname: string;\n\t\tobservable: Observable & { isEnabled: boolean } | ( () => Observable & { isEnabled: boolean } );\n\t\tbuttonViewCreator: ( isOnlyOne: boolean ) => ButtonView;\n\t\tformViewCreator: ( isOnlyOne: boolean ) => FocusableView | Array<FocusableView>;\n\t\tmenuBarButtonViewCreator: ( isOnlyOne: boolean ) => MenuBarMenuListItemButtonView | Array<MenuBarMenuListItemButtonView>;\n\t\trequiresForm?: boolean;\n\t\toverride?: boolean;\n\t} ): void {\n\t\tif ( this._integrations.has( name ) && !override ) {\n\t\t\t/**\n\t\t\t * There are two insert-image integrations registered with the same name.\n\t\t\t *\n\t\t\t * Make sure that you do not load multiple asset manager plugins.\n\t\t\t *\n\t\t\t * @error image-insert-integration-exists\n\t\t\t */\n\t\t\tlogWarning( 'image-insert-integration-exists', { name } );\n\t\t}\n\n\t\tthis._integrations.set( name, {\n\t\t\tobservable,\n\t\t\tbuttonViewCreator,\n\t\t\tmenuBarButtonViewCreator,\n\t\t\tformViewCreator,\n\t\t\trequiresForm\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the toolbar component.\n\t */\n\tprivate _createToolbarComponent( locale: Locale ): DropdownView | FocusableView {\n\t\tconst editor = this.editor;\n\t\tconst t = locale.t;\n\n\t\tconst integrations = this._prepareIntegrations();\n\n\t\tif ( !integrations.length ) {\n\t\t\treturn null as any;\n\t\t}\n\n\t\tlet dropdownButton: SplitButtonView | DropdownButtonView | undefined;\n\t\tconst firstIntegration = integrations[ 0 ];\n\n\t\tif ( integrations.length == 1 ) {\n\t\t\t// Do not use dropdown for a single integration button (integration that does not require form view).\n\t\t\tif ( !firstIntegration.requiresForm ) {\n\t\t\t\treturn firstIntegration.buttonViewCreator( true );\n\t\t\t}\n\n\t\t\tdropdownButton = firstIntegration.buttonViewCreator( true ) as DropdownButtonView;\n\t\t} else {\n\t\t\tconst actionButton = firstIntegration.buttonViewCreator( false ) as ButtonView & FocusableView;\n\n\t\t\tdropdownButton = new SplitButtonView( locale, actionButton );\n\t\t\tdropdownButton.tooltip = true;\n\n\t\t\tdropdownButton.bind( 'label' ).to( this, 'isImageSelected', isImageSelected => isImageSelected ?\n\t\t\t\tt( 'Replace image' ) :\n\t\t\t\tt( 'Insert image' )\n\t\t\t);\n\t\t}\n\n\t\tconst dropdownView = this.dropdownView = createDropdown( locale, dropdownButton );\n\t\tconst observables = integrations.map( ( { observable } ) => typeof observable == 'function' ? observable() : observable );\n\n\t\tdropdownView.bind( 'isEnabled' ).toMany( observables, 'isEnabled', ( ...isEnabled ) => (\n\t\t\tisEnabled.some( isEnabled => isEnabled )\n\t\t) );\n\n\t\tdropdownView.once( 'change:isOpen', () => {\n\t\t\tconst integrationViews = integrations.flatMap( ( { formViewCreator } ) => formViewCreator( integrations.length == 1 ) );\n\t\t\tconst imageInsertFormView = new ImageInsertFormView( editor.locale, integrationViews );\n\n\t\t\tdropdownView.panelView.children.add( imageInsertFormView );\n\t\t} );\n\n\t\treturn dropdownView;\n\t}\n\n\t/**\n\t * Creates the menu bar component.\n\t */\n\tprivate _createMenuBarComponent( locale: Locale ): View {\n\t\tconst t = locale.t;\n\n\t\tconst integrations = this._prepareIntegrations();\n\n\t\tif ( !integrations.length ) {\n\t\t\treturn null as any;\n\t\t}\n\n\t\tconst integrationViews = integrations.flatMap( ( {\n\t\t\tmenuBarButtonViewCreator\n\t\t} ) => menuBarButtonViewCreator( integrations.length == 1 ) );\n\n\t\tconst resultView = new MenuBarMenuView( locale );\n\t\tconst listView = new MenuBarMenuListView( locale );\n\t\tresultView.panelView.children.add( listView );\n\n\t\tresultView.buttonView.set( {\n\t\t\ticon: IconImage,\n\t\t\tlabel: t( 'Image' )\n\t\t} );\n\n\t\tfor ( const integrationView of integrationViews ) {\n\t\t\tconst listItemView = new MenuBarMenuListItemView( locale, resultView );\n\n\t\t\tlistItemView.children.add( integrationView );\n\t\t\tlistView.items.add( listItemView );\n\n\t\t\tintegrationView.delegate( 'execute' ).to( resultView );\n\t\t}\n\n\t\treturn resultView;\n\t}\n\n\t/**\n\t * Validates the integrations list.\n\t */\n\tprivate _prepareIntegrations(): Array<IntegrationData> {\n\t\tconst editor = this.editor;\n\t\tconst items = editor.config.get( 'image.insert.integrations' )!;\n\t\tconst result: Array<IntegrationData> = [];\n\n\t\tif ( !items.length ) {\n\t\t\t/**\n\t\t\t * The insert image feature requires a list of integrations to be provided in the editor configuration.\n\t\t\t *\n\t\t\t * The default list of integrations is `upload`, `assetManager`, `url`. Those integrations are included\n\t\t\t * in the insert image dropdown if the given feature plugin is loaded. You should omit the `integrations`\n\t\t\t * configuration key to use the default set or provide a selected list of integrations that should be used.\n\t\t\t *\n\t\t\t * @error image-insert-integrations-not-specified\n\t\t\t */\n\t\t\tlogWarning( 'image-insert-integrations-not-specified' );\n\n\t\t\treturn result;\n\t\t}\n\n\t\tfor ( const item of items ) {\n\t\t\tif ( !this._integrations.has( item ) ) {\n\t\t\t\tif ( ![ 'upload', 'assetManager', 'url' ].includes( item ) ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The specified insert image integration name is unknown or the providing plugin is not loaded in the editor.\n\t\t\t\t\t *\n\t\t\t\t\t * @error image-insert-unknown-integration\n\t\t\t\t\t */\n\t\t\t\t\tlogWarning( 'image-insert-unknown-integration', { item } );\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult.push( this._integrations.get( item )! );\n\t\t}\n\n\t\tif ( !result.length ) {\n\t\t\t/**\n\t\t\t * The image insert feature requires integrations to be registered by separate features.\n\t\t\t *\n\t\t\t * The `insertImage` toolbar button requires integrations to be registered by other features.\n\t\t\t * For example {@link module:image/imageupload~ImageUpload ImageUpload},\n\t\t\t * {@link module:image/imageinsert~ImageInsert ImageInsert},\n\t\t\t * {@link module:image/imageinsertviaurl~ImageInsertViaUrl ImageInsertViaUrl},\n\t\t\t * {@link module:ckbox/ckbox~CKBox CKBox}\n\t\t\t *\n\t\t\t * @error image-insert-integrations-not-registered\n\t\t\t */\n\t\t\tlogWarning( 'image-insert-integrations-not-registered' );\n\t\t}\n\n\t\treturn result;\n\t}\n}\n\ntype IntegrationData = {\n\tobservable: Observable & { isEnabled: boolean } | ( () => Observable & { isEnabled: boolean } );\n\tbuttonViewCreator: ( isOnlyOne: boolean ) => ButtonView;\n\tmenuBarButtonViewCreator: ( isOnlyOne: boolean ) => MenuBarMenuListItemButtonView | Array<MenuBarMenuListItemButtonView>;\n\tformViewCreator: ( isOnlyOne: boolean ) => FocusableView | Array<FocusableView>;\n\trequiresForm: boolean;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageblock\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { Widget } from '@ckeditor/ckeditor5-widget';\n\nimport { ImageTextAlternative } from './imagetextalternative.js';\nimport { ImageBlockEditing } from './image/imageblockediting.js';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\n\nimport '../theme/image.css';\n\n/**\n * The image block plugin.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/image/imageblockediting~ImageBlockEditing},\n * * {@link module:image/imagetextalternative~ImageTextAlternative}.\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport class ImageBlock extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageBlockEditing, Widget, ImageTextAlternative, ImageInsertUI ]> {\n\t\treturn [ ImageBlockEditing, Widget, ImageTextAlternative, ImageInsertUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageBlock' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageinlineediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tClipboardPipeline,\n\ttype ClipboardInputTransformationEvent,\n\ttype ClipboardContentInsertionEvent\n} from '@ckeditor/ckeditor5-clipboard';\nimport { ViewUpcastWriter, type ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tdowncastImageAttribute,\n\tdowncastSrcsetAttribute,\n\tupcastImg\n} from './converters.js';\n\nimport { ImageEditing } from './imageediting.js';\nimport { ImageSizeAttributes } from '../imagesizeattributes.js';\nimport { ImageTypeCommand } from './imagetypecommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport {\n\tcreateInlineImageViewElement,\n\tdetermineImageTypeForInsertionAtSelection,\n\tisImageTypePlaceable\n} from './utils.js';\nimport { ImagePlaceholder } from './imageplaceholder.js';\n\n/**\n * The image inline plugin.\n *\n * It registers:\n *\n * * `<imageInline>` as an inline element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n * * converters for editing and data pipelines.\n * * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeInline'`} command that converts block images into\n * inline images.\n */\nexport class ImageInlineEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[\n\t\tImageEditing,\n\t\tImageSizeAttributes,\n\t\tImageUtils,\n\t\tImagePlaceholder,\n\t\tClipboardPipeline\n\t]> {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInlineEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Converters 'alt' and 'srcset' are added in 'ImageEditing' plugin.\n\t\tschema.register( 'imageInline', {\n\t\t\tinheritAllFrom: '$inlineObject',\n\t\t\tallowAttributes: [ 'alt', 'src', 'srcset' ],\n\t\t\t// Disallow inline images in captions (at least for now).\n\t\t\t// This is the best spot to do that because independent packages can introduce captions (ImageCaption, TableCaption, etc.).\n\t\t\tdisallowIn: [ 'caption' ]\n\t\t} );\n\n\t\tthis._setupConversion();\n\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.commands.add( 'imageTypeInline', new ImageTypeCommand( this.editor, 'imageInline' ) );\n\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * inline images (inline image widgets) and their attributes.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'dataDowncast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'imageInline',\n\t\t\t\tview: ( modelElement, { writer } ) => writer.createEmptyElement( 'img' )\n\t\t\t} );\n\n\t\tconversion.for( 'editingDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageInline',\n\t\t\t\tview: ( modelElement, { writer } ) => imageUtils.toImageWidget(\n\t\t\t\t\tcreateInlineImageViewElement( writer ), writer, t( 'image widget' )\n\t\t\t\t)\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageInline', 'src' ) )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageInline', 'alt' ) )\n\t\t\t.add( downcastSrcsetAttribute( imageUtils, 'imageInline' ) );\n\n\t\t// More image related upcasts are in 'ImageEditing' plugin.\n\t\tconversion.for( 'upcast' )\n\t\t\t.add( upcastImg( 'imageInline', imageUtils ) );\n\t}\n\n\t/**\n\t * Integrates the plugin with the clipboard pipeline.\n\t *\n\t * Idea is that the feature should recognize the user's intent when an **block** image is\n\t * pasted or dropped. If such an image is pasted/dropped into a non-empty block\n\t * (e.g. a paragraph with some text) it gets converted into an inline image on the fly.\n\t *\n\t * We assume this is the user's intent if they decided to put their image there.\n\t *\n\t * **Note**: If a block image has a caption, it will not be converted to an inline image\n\t * to avoid the confusion. Captions are added on purpose and they should never be lost\n\t * in the clipboard pipeline.\n\t *\n\t * See the `ImageBlockEditing` for the similar integration that works in the opposite direction.\n\t *\n\t * The feature also sets image `width` and `height` attributes when pasting.\n\t */\n\tprivate _setupClipboardIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'inputTransformation',\n\t\t\t( evt, data ) => {\n\t\t\t\tconst docFragmentChildren = Array.from( data.content.getChildren() as IterableIterator<ViewElement> );\n\t\t\t\tlet modelRange;\n\n\t\t\t\t// Make sure only <figure class=\"image\"></figure> elements are dropped or pasted. Otherwise, if there some other HTML\n\t\t\t\t// mixed up, this should be handled as a regular paste.\n\t\t\t\tif ( !docFragmentChildren.every( imageUtils.isBlockImageView ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// When drag and dropping, data.targetRanges specifies where to drop because\n\t\t\t\t// this is usually a different place than the current model selection (the user\n\t\t\t\t// uses a drop marker to specify the drop location).\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\tmodelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// Pasting, however, always occurs at the current model selection.\n\t\t\t\telse {\n\t\t\t\t\tmodelRange = model.document.selection.getFirstRange();\n\t\t\t\t}\n\n\t\t\t\tconst selection = model.createSelection( modelRange );\n\n\t\t\t\t// Convert block images into inline images only when pasting or dropping into non-empty blocks\n\t\t\t\t// and when the block is not an object (e.g. pasting to replace another widget). Also force\n\t\t\t\t// the unwrap when `imageBlock` cannot land at the target (e.g. inside `$inlineRoot`) - in\n\t\t\t\t// that case the heuristic still returns `'imageBlock'` for a blockless selection, but the\n\t\t\t\t// resulting `<figure>` would be upcast-stripped.\n\t\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\t\tconst canPlaceBlock = !!selectionPosition && isImageTypePlaceable( model.schema, selectionPosition, 'imageBlock' );\n\n\t\t\t\tif (\n\t\t\t\t\t!canPlaceBlock ||\n\t\t\t\t\tdetermineImageTypeForInsertionAtSelection( model.schema, selection ) === 'imageInline'\n\t\t\t\t) {\n\t\t\t\t\tconst writer = new ViewUpcastWriter( editingView.document );\n\n\t\t\t\t\t// Unwrap <figure class=\"image\"><img .../></figure> -> <img ... />\n\t\t\t\t\t// but <figure class=\"image\"><img .../><figcaption>...</figcaption></figure> -> stays the same\n\t\t\t\t\tconst inlineViewImages = docFragmentChildren.map( blockViewImage => {\n\t\t\t\t\t// If there's just one child, it can be either <img /> or <a><img></a>.\n\t\t\t\t\t// If there are other children than <img>, this means that the block image\n\t\t\t\t\t// has a caption or some other features and this kind of image should be\n\t\t\t\t\t// pasted/dropped without modifications.\n\t\t\t\t\t\tif ( blockViewImage.childCount === 1 ) {\n\t\t\t\t\t\t// Pass the attributes which are present only in the <figure> to the <img>\n\t\t\t\t\t\t// (e.g. the style=\"width:10%\" attribute applied by the ImageResize plugin).\n\t\t\t\t\t\t\tArray.from( blockViewImage.getAttributes() )\n\t\t\t\t\t\t\t\t.forEach( attribute => writer.setAttribute(\n\t\t\t\t\t\t\t\t\t...attribute,\n\t\t\t\t\t\t\t\t\timageUtils.findViewImgElement( blockViewImage )!\n\t\t\t\t\t\t\t\t) );\n\n\t\t\t\t\t\t\treturn blockViewImage.getChild( 0 )!;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn blockViewImage;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\tdata.content = writer.createDocumentFragment( inlineViewImages );\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.listenTo<ClipboardContentInsertionEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'contentInsertion',\n\t\t\t( evt, data ) => {\n\t\t\t\tif ( data.method !== 'paste' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tconst range = writer.createRangeIn( data.content );\n\n\t\t\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\t\t\tif ( item.is( 'element', 'imageInline' ) ) {\n\t\t\t\t\t\t\timageUtils.setImageNaturalSizeAttributes( item );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinline\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { Widget } from '@ckeditor/ckeditor5-widget';\n\nimport { ImageTextAlternative } from './imagetextalternative.js';\nimport { ImageInlineEditing } from './image/imageinlineediting.js';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\n\nimport '../theme/image.css';\n\n/**\n * The image inline plugin.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/image/imageinlineediting~ImageInlineEditing},\n * * {@link module:image/imagetextalternative~ImageTextAlternative}.\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport class ImageInline extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageInlineEditing, Widget, ImageTextAlternative, ImageInsertUI ]> {\n\t\treturn [ ImageInlineEditing, Widget, ImageTextAlternative, ImageInsertUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInline' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageBlock } from './imageblock.js';\nimport { ImageInline } from './imageinline.js';\n\nimport '../theme/image.css';\n\n/**\n * The image plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-overview image feature} documentation.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/imageblock~ImageBlock},\n * * {@link module:image/imageinline~ImageInline},\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport class Image extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageBlock, ImageInline ]> {\n\t\treturn [ ImageBlock, ImageInline ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Image' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/imagecaptionutils\n */\n\nimport type { ModelDocumentSelection, ModelElement, ModelSelection, ViewElement, Match } from '@ckeditor/ckeditor5-engine';\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image caption utilities plugin.\n */\nexport class ImageCaptionUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionUtils' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * Returns the caption model element from a given image element. Returns `null` if no caption is found.\n\t */\n\tpublic getCaptionFromImageModelElement( imageModelElement: ModelElement ): ModelElement | null {\n\t\tfor ( const node of imageModelElement.getChildren() ) {\n\t\t\tif ( !!node && node.is( 'element', 'caption' ) ) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.\n\t */\n\tpublic getCaptionFromModelSelection( selection: ModelSelection | ModelDocumentSelection ): ModelElement | null {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\t\tconst captionElement = selection.getFirstPosition()!.findAncestor( 'caption' );\n\n\t\tif ( !captionElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( imageUtils.isBlockImage( captionElement.parent as ModelElement ) ) {\n\t\t\treturn captionElement;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a `<figcaption>` element that is placed\n\t * inside the image `<figure>` element.\n\t * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element\n\t * cannot be matched.\n\t */\n\tpublic matchImageCaptionViewElement( element: ViewElement ): Match | null {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// Convert only captions for images.\n\t\tif ( element.name == 'figcaption' && imageUtils.isBlockImageView( element.parent as ViewElement ) ) {\n\t\t\treturn { name: true };\n\t\t}\n\n\t\treturn null;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/toggleimagecaptioncommand\n */\n\nimport type { ModelElement, ModelWriter } from '@ckeditor/ckeditor5-engine';\nimport { Command } from '@ckeditor/ckeditor5-core';\n\nimport { ImageBlockEditing } from '../image/imageblockediting.js';\nimport { isImageTypePlaceable } from '../image/utils.js';\nimport { type ImageCaptionUtils } from './imagecaptionutils.js';\nimport { type ImageUtils } from '../imageutils.js';\nimport { type ImageCaptionEditing } from './imagecaptionediting.js';\n\n/**\n * The toggle image caption command.\n *\n * This command is registered by {@link module:image/imagecaption/imagecaptionediting~ImageCaptionEditing} as the\n * `'toggleImageCaption'` editor command.\n *\n * Executing this command:\n *\n * * either adds or removes the image caption of a selected image (depending on whether the caption is present or not),\n * * removes the image caption if the selection is anchored in one.\n *\n * ```ts\n * // Toggle the presence of the caption.\n * editor.execute( 'toggleImageCaption' );\n * ```\n *\n * **Note**: Upon executing this command, the selection will be set on the image if previously anchored in the caption element.\n *\n * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using\n * the `focusCaptionOnShow` option:\n *\n * ```ts\n * editor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n * ```\n */\nexport class ToggleImageCaptionCommand extends Command {\n\tdeclare public value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Only block images can get captions.\n\t\tif ( !editor.plugins.has( ImageBlockEditing ) ) {\n\t\t\tthis.isEnabled = false;\n\t\t\tthis.value = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst selection = editor.model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\tif ( !selectedElement ) {\n\t\t\tconst ancestorCaptionElement = imageCaptionUtils.getCaptionFromModelSelection( selection );\n\n\t\t\tthis.isEnabled = !!ancestorCaptionElement;\n\t\t\tthis.value = !!ancestorCaptionElement;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Block images support captions by default but the command should also be enabled for inline\n\t\t// images because toggling the caption when one is selected should convert it into a block image.\n\t\tthis.isEnabled = imageUtils.isImage( selectedElement );\n\n\t\t// For an inline image the toggle requires an inline → block conversion. Make sure that\n\t\t// `imageBlock` can actually land somewhere reachable from the current position (e.g. inside\n\t\t// `$inlineRoot` or another limit ancestor that disallows `imageBlock`, the conversion would\n\t\t// otherwise be a no-op and the writer would still try to append the caption to the inline\n\t\t// image - which the schema rejects).\n\t\tif ( this.isEnabled && imageUtils.isInlineImage( selectedElement ) ) {\n\t\t\tconst position = editor.model.createPositionBefore( selectedElement );\n\n\t\t\tthis.isEnabled = isImageTypePlaceable( editor.model.schema, position, 'imageBlock' );\n\t\t}\n\n\t\tif ( !this.isEnabled ) {\n\t\t\tthis.value = false;\n\t\t} else {\n\t\t\tthis.value = !!imageCaptionUtils.getCaptionFromImageModelElement( selectedElement );\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * ```ts\n\t * editor.execute( 'toggleImageCaption' );\n\t * ```\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { focusCaptionOnShow?: boolean } = {} ): void {\n\t\tconst { focusCaptionOnShow } = options;\n\n\t\tthis.editor.model.change( writer => {\n\t\t\tif ( this.value ) {\n\t\t\t\tthis._hideImageCaption( writer );\n\t\t\t} else {\n\t\t\t\tthis._showImageCaption( writer, focusCaptionOnShow );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the caption of the `<imageBlock>` or `<imageInline>`. Also:\n\t *\n\t * * it converts `<imageInline>` to `<imageBlock>` to show the caption,\n\t * * it attempts to restore the caption content from the `ImageCaptionEditing` caption registry,\n\t * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.\n\t */\n\tprivate _showImageCaption( writer: ModelWriter, focusCaptionOnShow?: boolean ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst imageCaptionEditing: ImageCaptionEditing = this.editor.plugins.get( 'ImageCaptionEditing' );\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tlet selectedImage = selection.getSelectedElement()!;\n\n\t\tconst savedCaption = imageCaptionEditing._getSavedCaption( selectedImage );\n\n\t\t// Convert imageInline -> image first.\n\t\tif ( imageUtils.isInlineImage( selectedImage ) ) {\n\t\t\tthis.editor.execute( 'imageTypeBlock' );\n\n\t\t\t// Executing the command created a new model element. Let's pick it again.\n\t\t\tselectedImage = selection.getSelectedElement()!;\n\t\t}\n\n\t\t// Try restoring the caption from the ImageCaptionEditing plugin storage.\n\t\tconst newCaptionElement = savedCaption || writer.createElement( 'caption' );\n\n\t\twriter.append( newCaptionElement, selectedImage );\n\n\t\tif ( focusCaptionOnShow ) {\n\t\t\twriter.setSelection( newCaptionElement, 'in' );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the caption of a selected image (or an image caption the selection is anchored to).\n\t *\n\t * The content of the caption is stored in the `ImageCaptionEditing` caption registry to make this\n\t * a reversible action.\n\t */\n\tprivate _hideImageCaption( writer: ModelWriter ): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageCaptionEditing: ImageCaptionEditing = editor.plugins.get( 'ImageCaptionEditing' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tlet selectedImage = selection.getSelectedElement()!;\n\t\tlet captionElement: ModelElement;\n\n\t\tif ( selectedImage ) {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromImageModelElement( selectedImage )!;\n\t\t} else {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromModelSelection( selection )!;\n\t\t\tselectedImage = captionElement!.parent as ModelElement;\n\t\t}\n\n\t\t// Store the caption content so it can be restored quickly if the user changes their mind even if they toggle image<->imageInline.\n\t\timageCaptionEditing._saveCaption( selectedImage, captionElement );\n\n\t\twriter.setSelection( selectedImage, 'on' );\n\t\twriter.remove( captionElement );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/imagecaptionediting\n */\n\nimport { type Editor, Plugin, type CommandExecuteEvent, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ModelElement, enableViewPlaceholder, type ModelDocumentChangeEvent, type DifferItemAttribute } from '@ckeditor/ckeditor5-engine';\nimport { toWidgetEditable } from '@ckeditor/ckeditor5-widget';\nimport type { GetCallback } from '@ckeditor/ckeditor5-utils';\n\nimport { ToggleImageCaptionCommand } from './toggleimagecaptioncommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport { ImageCaptionUtils } from './imagecaptionutils.js';\n\n/**\n * The image caption engine plugin. It is responsible for:\n *\n * * registering converters for the caption element,\n * * registering converters for the caption model attribute,\n * * registering the {@link module:image/imagecaption/toggleimagecaptioncommand~ToggleImageCaptionCommand `toggleImageCaption`} command.\n */\nexport class ImageCaptionEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils, ImageCaptionUtils ]> {\n\t\treturn [ ImageUtils, ImageCaptionUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * A map that keeps saved JSONified image captions and image model elements they are\n\t * associated with.\n\t *\n\t * To learn more about this system, see {@link #_saveCaption}.\n\t */\n\tprivate _savedCaptionsMap: WeakMap<ModelElement, unknown>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._savedCaptionsMap = new WeakMap();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Schema configuration.\n\t\tif ( !schema.isRegistered( 'caption' ) ) {\n\t\t\tschema.register( 'caption', {\n\t\t\t\tallowIn: 'imageBlock',\n\t\t\t\tallowContentOf: '$block',\n\t\t\t\tisLimit: true\n\t\t\t} );\n\t\t} else {\n\t\t\tschema.extend( 'caption', {\n\t\t\t\tallowIn: 'imageBlock'\n\t\t\t} );\n\t\t}\n\n\t\teditor.commands.add( 'toggleImageCaption', new ToggleImageCaptionCommand( this.editor ) );\n\n\t\tthis._setupConversion();\n\t\tthis._setupImageTypeCommandsIntegration();\n\t\tthis._registerCaptionReconversion();\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * image captions.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst t = editor.t;\n\n\t\t// View -> model converter for the data pipeline.\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tview: element => imageCaptionUtils.matchImageCaptionViewElement( element ),\n\t\t\tmodel: 'caption'\n\t\t} );\n\n\t\t// Model -> view converter for the data pipeline.\n\t\teditor.conversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !imageUtils.isBlockImage( modelElement.parent as ModelElement ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn writer.createContainerElement( 'figcaption' );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> view converter for the editing pipeline.\n\t\teditor.conversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !imageUtils.isBlockImage( modelElement.parent as ModelElement ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst figcaptionElement = writer.createEditableElement( 'figcaption' );\n\t\t\t\twriter.setCustomProperty( 'imageCaption', true, figcaptionElement );\n\n\t\t\t\tfigcaptionElement.placeholder = t( 'Enter image caption' );\n\t\t\t\tenableViewPlaceholder( {\n\t\t\t\t\tview,\n\t\t\t\t\telement: figcaptionElement,\n\t\t\t\t\tkeepOnFocus: true\n\t\t\t\t} );\n\n\t\t\t\tconst imageAlt = ( modelElement.parent as ModelElement ).getAttribute( 'alt' ) as string;\n\t\t\t\tconst label = imageAlt ? t( 'Caption for image: %0', [ imageAlt ] ) : t( 'Caption for the image' );\n\n\t\t\t\treturn toWidgetEditable( figcaptionElement, writer, { label } );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Integrates with {@link module:image/image/imagetypecommand~ImageTypeCommand image type commands}\n\t * to make sure the caption is preserved when the type of an image changes so it can be restored\n\t * in the future if the user decides they want their caption back.\n\t */\n\tprivate _setupImageTypeCommandsIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst imageTypeInlineCommand = editor.commands.get( 'imageTypeInline' );\n\t\tconst imageTypeBlockCommand = editor.commands.get( 'imageTypeBlock' );\n\n\t\tconst handleImageTypeChange: GetCallback<CommandExecuteEvent> = evt => {\n\t\t\t// The image type command execution can be unsuccessful.\n\t\t\tif ( !evt.return ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { oldElement, newElement } = evt.return as { oldElement: ModelElement; newElement: ModelElement };\n\n\t\t\t/* istanbul ignore if: paranoid check -- @preserve */\n\t\t\tif ( !oldElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( imageUtils.isBlockImage( oldElement ) ) {\n\t\t\t\tconst oldCaptionElement = imageCaptionUtils.getCaptionFromImageModelElement( oldElement );\n\n\t\t\t\t// If the old element was a captioned block image (the caption was visible),\n\t\t\t\t// simply save it so it can be restored.\n\t\t\t\tif ( oldCaptionElement ) {\n\t\t\t\t\tthis._saveCaption( newElement, oldCaptionElement );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst savedOldElementCaption = this._getSavedCaption( oldElement );\n\n\t\t\t// If either:\n\t\t\t//\n\t\t\t// * the block image didn't have a visible caption,\n\t\t\t// * the block image caption was hidden (and already saved),\n\t\t\t// * the inline image was passed\n\t\t\t//\n\t\t\t// just try to \"pass\" the saved caption from the old image to the new image\n\t\t\t// so it can be retrieved in the future if the user wants it back.\n\t\t\tif ( savedOldElementCaption ) {\n\t\t\t\t// Note: Since we're writing to a WeakMap, we don't bother with removing the\n\t\t\t\t// [ oldElement, savedOldElementCaption ] pair from it.\n\t\t\t\tthis._saveCaption( newElement, savedOldElementCaption );\n\t\t\t}\n\t\t};\n\n\t\t// Presence of the commands depends on the Image(Inline|Block)Editing plugins loaded in the editor.\n\t\tif ( imageTypeInlineCommand ) {\n\t\t\tthis.listenTo<CommandExecuteEvent>( imageTypeInlineCommand, 'execute', handleImageTypeChange, { priority: 'low' } );\n\t\t}\n\n\t\tif ( imageTypeBlockCommand ) {\n\t\t\tthis.listenTo<CommandExecuteEvent>( imageTypeBlockCommand, 'execute', handleImageTypeChange, { priority: 'low' } );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the saved {@link module:engine/model/element~ModelElement#toJSON JSONified} caption\n\t * of an image model element.\n\t *\n\t * See {@link #_saveCaption}.\n\t *\n\t * @internal\n\t * @param imageModelElement The model element the caption should be returned for.\n\t * @returns The model caption element or `null` if there is none.\n\t */\n\tpublic _getSavedCaption( imageModelElement: ModelElement ): ModelElement | null {\n\t\tconst jsonObject = this._savedCaptionsMap.get( imageModelElement );\n\n\t\treturn jsonObject ? ModelElement.fromJSON( jsonObject ) : null;\n\t}\n\n\t/**\n\t * Saves a {@link module:engine/model/element~ModelElement#toJSON JSONified} caption for\n\t * an image element to allow restoring it in the future.\n\t *\n\t * A caption is saved every time it gets hidden and/or the type of an image changes. The\n\t * user should be able to restore it on demand.\n\t *\n\t * **Note**: The caption cannot be stored in the image model element attribute because,\n\t * for instance, when the model state propagates to collaborators, the attribute would get\n\t * lost (mainly because it does not convert to anything when the caption is hidden) and\n\t * the states of collaborators' models would de-synchronize causing numerous issues.\n\t *\n\t * See {@link #_getSavedCaption}.\n\t *\n\t * @internal\n\t * @param imageModelElement The model element the caption is saved for.\n\t * @param caption The caption model element to be saved.\n\t */\n\tpublic _saveCaption( imageModelElement: ModelElement, caption: ModelElement ): void {\n\t\tthis._savedCaptionsMap.set( imageModelElement, caption.toJSON() );\n\t}\n\n\t/**\n\t * Reconverts image caption when image alt attribute changes.\n\t * The change of alt attribute is reflected in caption's aria-label attribute.\n\t */\n\tprivate _registerCaptionReconversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\n\t\tmodel.document.on<ModelDocumentChangeEvent>( 'change:data', () => {\n\t\t\tconst changes = model.document.differ.getChanges();\n\n\t\t\tfor ( const change of changes as Array<DifferItemAttribute> ) {\n\t\t\t\tif ( change.attributeKey !== 'alt' ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst image = change.range.start.nodeAfter as ModelElement;\n\n\t\t\t\tif ( imageUtils.isBlockImage( image ) ) {\n\t\t\t\t\tconst caption = imageCaptionUtils.getCaptionFromImageModelElement( image );\n\n\t\t\t\t\tif ( !caption ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\teditor.editing.reconvertItem( caption );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/imagecaptionui\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ButtonView } from '@ckeditor/ckeditor5-ui';\nimport { IconCaption } from '@ckeditor/ckeditor5-icons';\nimport { ImageCaptionUtils } from './imagecaptionutils.js';\nimport { type ToggleImageCaptionCommand } from './toggleimagecaptioncommand.js';\n\n/**\n * The image caption UI plugin. It introduces the `'toggleImageCaption'` UI button.\n */\nexport class ImageCaptionUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageCaptionUtils ]> {\n\t\treturn [ ImageCaptionUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'toggleImageCaption', locale => {\n\t\t\tconst command: ToggleImageCaptionCommand = editor.commands.get( 'toggleImageCaption' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\ticon: IconCaption,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\t\t\tview.bind( 'label' ).to( command, 'value', value => value ? t( 'Toggle caption off' ) : t( 'Toggle caption on' ) );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n\n\t\t\t\t// Scroll to the selection and highlight the caption if the caption showed up.\n\t\t\t\tconst modelCaptionElement = imageCaptionUtils.getCaptionFromModelSelection( editor.model.document.selection );\n\n\t\t\t\tif ( modelCaptionElement ) {\n\t\t\t\t\tconst figcaptionElement = editor.editing.mapper.toViewElement( modelCaptionElement );\n\n\t\t\t\t\teditingView.scrollToTheSelection();\n\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( 'image__caption_highlighted', figcaptionElement! );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageCaptionEditing } from './imagecaption/imagecaptionediting.js';\nimport { ImageCaptionUI } from './imagecaption/imagecaptionui.js';\n\nimport '../theme/imagecaption.css';\n\n/**\n * The image caption plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-captions image caption} documentation.\n */\nexport class ImageCaption extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageCaptionEditing, ImageCaptionUI ]> {\n\t\treturn [ ImageCaptionEditing, ImageCaptionUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaption' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/utils\n */\n\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\nimport { global } from '@ckeditor/ckeditor5-utils';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * Creates a regular expression used to test for image files.\n *\n * ```ts\n * const imageType = createImageTypeRegExp( [ 'png', 'jpeg', 'svg+xml', 'vnd.microsoft.icon' ] );\n *\n * console.log( 'is supported image', imageType.test( file.type ) );\n * ```\n */\nexport function createImageTypeRegExp( types: Array<string> ): RegExp {\n\t// Sanitize the MIME type name which may include: \"+\", \"-\" or \".\".\n\tconst regExpSafeNames = types.map( type => type.replace( '+', '\\\\+' ) );\n\n\treturn new RegExp( `^image\\\\/(${ regExpSafeNames.join( '|' ) })$` );\n}\n\n/**\n * Creates a promise that fetches the image local source (Base64 or blob) and resolves with a `File` object.\n *\n * @internal\n * @param image Image whose source to fetch.\n * @returns A promise which resolves when an image source is fetched and converted to a `File` instance.\n * It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n */\nexport function fetchLocalImage( image: ViewElement ): Promise<File> {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst imageSrc = image.getAttribute( 'src' )!;\n\n\t\t// Fetch works asynchronously and so does not block browser UI when processing data.\n\t\tfetch( imageSrc )\n\t\t\t.then( resource => resource.blob() )\n\t\t\t.then( blob => {\n\t\t\t\tconst mimeType = getImageMimeType( blob, imageSrc );\n\t\t\t\tconst ext = mimeType.replace( 'image/', '' );\n\t\t\t\tconst filename = `image.${ ext }`;\n\t\t\t\tconst file = new File( [ blob ], filename, { type: mimeType } );\n\n\t\t\t\tresolve( file );\n\t\t\t} )\n\t\t\t.catch( err => {\n\t\t\t\t// Fetch fails only, if it can't make a request due to a network failure or if anything prevented the request\n\t\t\t\t// from completing, i.e. the Content Security Policy rules. It is not possible to detect the exact cause of failure,\n\t\t\t\t// so we are just trying the fallback solution, if general TypeError is thrown.\n\t\t\t\treturn err && err.name === 'TypeError' ?\n\t\t\t\t\tconvertLocalImageOnCanvas( imageSrc ).then( resolve ).catch( reject ) :\n\t\t\t\t\treject( err );\n\t\t\t} );\n\t} );\n}\n\n/**\n * Checks whether a given node is an image element with a local source (Base64 or blob).\n *\n * @param node The node to check.\n * @internal\n */\nexport function isLocalImage( imageUtils: ImageUtils, node: ViewElement ): boolean {\n\tif ( !imageUtils.isInlineImageView( node ) || !node.getAttribute( 'src' ) ) {\n\t\treturn false;\n\t}\n\n\treturn !!node.getAttribute( 'src' )!.match( /^data:image\\/\\w+;base64,/g ) ||\n\t\t!!node.getAttribute( 'src' )!.match( /^blob:/g );\n}\n\n/**\n * Extracts an image type based on its blob representation or its source.\n * @param blob Image blob representation.\n * @param src Image `src` attribute value.\n */\nfunction getImageMimeType( blob: Blob, src: string ): string {\n\tif ( blob.type ) {\n\t\treturn blob.type;\n\t} else if ( src.match( /data:(image\\/\\w+);base64/ ) ) {\n\t\treturn src.match( /data:(image\\/\\w+);base64/ )![ 1 ].toLowerCase();\n\t} else {\n\t\t// Fallback to 'jpeg' as common extension.\n\t\treturn 'image/jpeg';\n\t}\n}\n\n/**\n * Creates a promise that converts the image local source (Base64 or blob) to a blob using canvas and resolves\n * with a `File` object.\n * @param imageSrc Image `src` attribute value.\n * @returns A promise which resolves when an image source is converted to a `File` instance.\n * It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n */\nfunction convertLocalImageOnCanvas( imageSrc: string ): Promise<File> {\n\treturn getBlobFromCanvas( imageSrc ).then( blob => {\n\t\tconst mimeType = getImageMimeType( blob, imageSrc );\n\t\tconst ext = mimeType.replace( 'image/', '' );\n\t\tconst filename = `image.${ ext }`;\n\n\t\treturn new File( [ blob ], filename, { type: mimeType } );\n\t} );\n}\n\n/**\n * Creates a promise that resolves with a `Blob` object converted from the image source (Base64 or blob).\n * @param imageSrc Image `src` attribute value.\n */\nfunction getBlobFromCanvas( imageSrc: string ): Promise<Blob> {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst image = global.document.createElement( 'img' );\n\n\t\timage.addEventListener( 'load', () => {\n\t\t\tconst canvas = global.document.createElement( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst ctx = canvas.getContext( '2d' )!;\n\n\t\t\tctx.drawImage( image, 0, 0 );\n\n\t\t\tcanvas.toBlob( blob => blob ? resolve( blob ) : reject() );\n\t\t} );\n\n\t\timage.addEventListener( 'error', () => reject() );\n\n\t\timage.src = imageSrc;\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/imageuploadui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport {\n\tFileDialogButtonView,\n\tMenuBarMenuListItemFileDialogButtonView,\n\ttype ButtonView,\n\ttype MenuBarMenuListItemButtonView\n} from '@ckeditor/ckeditor5-ui';\nimport { IconImageUpload } from '@ckeditor/ckeditor5-icons';\nimport { createImageTypeRegExp } from './utils.js';\nimport { type ImageInsertUI } from '../imageinsert/imageinsertui.js';\n\n/**\n * The image upload button plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature} documentation.\n *\n * Adds the `'uploadImage'` button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n * and also the `imageUpload` button as an alias for backward compatibility.\n *\n * Adds the `'menuBar:uploadImage'` menu button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}.\n *\n * It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are the default components\n * through which image upload is available.\n */\nexport class ImageUploadUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Setup `uploadImage` button and add `imageUpload` button as an alias for backward compatibility.\n\t\teditor.ui.componentFactory.add( 'uploadImage', () => this._createToolbarButton() );\n\t\teditor.ui.componentFactory.add( 'imageUpload', () => this._createToolbarButton() );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:uploadImage', () => this._createMenuBarButton( 'standalone' ) );\n\n\t\tif ( editor.plugins.has( 'ImageInsertUI' ) ) {\n\t\t\teditor.plugins.get( 'ImageInsertUI' ).registerIntegration( {\n\t\t\t\tname: 'upload',\n\t\t\t\tobservable: () => editor.commands.get( 'uploadImage' )!,\n\t\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\t\tmenuBarButtonViewCreator: isOnly => this._createMenuBarButton( isOnly ? 'insertOnly' : 'insertNested' )\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Creates the base for various kinds of the button component provided by this feature.\n\t */\n\tprivate _createButton<T extends typeof FileDialogButtonView | typeof MenuBarMenuListItemFileDialogButtonView>(\n\t\tButtonClass: T\n\t): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command = editor.commands.get( 'uploadImage' )!;\n\t\tconst imageTypes = editor.config.get( 'image.upload.types' )!;\n\t\tconst imageTypesRegExp = createImageTypeRegExp( imageTypes );\n\n\t\tconst view = new ButtonClass( editor.locale ) as InstanceType<T>;\n\t\tconst t = locale.t;\n\n\t\tview.set( {\n\t\t\tacceptedType: imageTypes.map( type => `image/${ type }` ).join( ',' ),\n\t\t\tallowMultipleFiles: true,\n\t\t\tlabel: t( 'Upload from computer' ),\n\t\t\ticon: IconImageUpload\n\t\t} );\n\n\t\tview.bind( 'isEnabled' ).to( command );\n\n\t\tview.on( 'done', ( evt, files: FileList ) => {\n\t\t\tconst imagesToUpload = Array.from( files ).filter( file => imageTypesRegExp.test( file.type ) );\n\n\t\t\tif ( imagesToUpload.length ) {\n\t\t\t\teditor.execute( 'uploadImage', { file: imagesToUpload } );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t}\n\t\t} );\n\n\t\treturn view;\n\t}\n\n\t/**\n\t * Creates a simple toolbar button, with an icon and a tooltip.\n\t */\n\tprivate _createToolbarButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI: ImageInsertUI = this.editor.plugins.get( 'ImageInsertUI' );\n\t\tconst uploadImageCommand = this.editor.commands.get( 'uploadImage' )!;\n\n\t\tconst button = this._createButton( FileDialogButtonView );\n\n\t\tbutton.tooltip = true;\n\t\tbutton.bind( 'label' ).to(\n\t\t\timageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tuploadImageCommand,\n\t\t\t'isAccessAllowed',\n\t\t\t( isImageSelected, isAccessAllowed ) => {\n\t\t\t\tif ( !isAccessAllowed ) {\n\t\t\t\t\treturn t( 'You have no image upload permissions.' );\n\t\t\t\t}\n\n\t\t\t\treturn isImageSelected ? t( 'Replace image from computer' ) : t( 'Upload image from computer' );\n\t\t\t}\n\t\t);\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t */\n\tprivate _createDropdownButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI: ImageInsertUI = this.editor.plugins.get( 'ImageInsertUI' );\n\n\t\tconst button = this._createButton( FileDialogButtonView );\n\n\t\tbutton.withText = true;\n\n\t\tbutton.bind( 'label' ).to(\n\t\t\timageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tisImageSelected => isImageSelected ? t( 'Replace from computer' ) : t( 'Upload from computer' )\n\t\t);\n\n\t\tbutton.on( 'execute', () => {\n\t\t\timageInsertUI.dropdownView!.isOpen = false;\n\t\t} );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the menu bar.\n\t */\n\tprivate _createMenuBarButton( type: 'standalone' | 'insertOnly' | 'insertNested' ): MenuBarMenuListItemButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createButton( MenuBarMenuListItemFileDialogButtonView );\n\n\t\tbutton.withText = true;\n\n\t\tswitch ( type ) {\n\t\t\tcase 'standalone':\n\t\t\t\tbutton.label = t( 'Image from computer' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertOnly':\n\t\t\t\tbutton.label = t( 'Image' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertNested':\n\t\t\t\tbutton.label = t( 'From computer' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn button;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/imageuploadprogress\n */\n\nimport { type Editor, Plugin } from '@ckeditor/ckeditor5-core';\nimport { FileRepository, type FileLoader } from '@ckeditor/ckeditor5-upload';\n\nimport '../../theme/imageuploadprogress.css';\nimport '../../theme/imageuploadicon.css';\nimport '../../theme/imageuploadloader.css';\nimport type { GetCallback } from '@ckeditor/ckeditor5-utils';\nimport type {\n\tViewDowncastWriter,\n\tEditingView,\n\tViewElement,\n\tViewContainerElement,\n\tViewUIElement,\n\tDowncastAttributeEvent,\n\tModelElement\n} from '@ckeditor/ckeditor5-engine';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image upload progress plugin.\n * It shows a placeholder when the image is read from the disk and a progress bar while the image is uploading.\n */\nexport class ImageUploadProgress extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadProgress' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The image placeholder that is displayed before real image data can be accessed.\n\t *\n\t * For the record, this image is a 1x1 px GIF with an aspect ratio set by CSS.\n\t */\n\tprivate placeholder: string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.placeholder = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Upload status change - update image's view according to that status.\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.editing.downcastDispatcher.on<DowncastAttributeEvent>(\n\t\t\t\t'attribute:uploadStatus:imageBlock',\n\t\t\t\tthis.uploadStatusChange\n\t\t\t);\n\t\t}\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.editing.downcastDispatcher.on<DowncastAttributeEvent>(\n\t\t\t\t'attribute:uploadStatus:imageInline',\n\t\t\t\tthis.uploadStatusChange\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * This method is called each time the image `uploadStatus` attribute is changed.\n\t *\n\t * @param evt An object containing information about the fired event.\n\t * @param data Additional information about the change.\n\t */\n\tprivate uploadStatusChange: GetCallback<DowncastAttributeEvent> = ( evt, data, conversionApi ) => {\n\t\tconst editor = this.editor;\n\t\tconst modelImage = data.item as ModelElement;\n\t\tconst uploadId = modelImage.getAttribute( 'uploadId' ) as string | number;\n\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst status = uploadId ? data.attributeNewValue : null;\n\t\tconst placeholder = this.placeholder;\n\t\tconst viewFigure = editor.editing.mapper.toViewElement( modelImage )! as ViewContainerElement;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\tif ( status == 'reading' ) {\n\t\t\t// Start \"appearing\" effect and show placeholder with infinite progress bar on the top\n\t\t\t// while image is read from disk.\n\t\t\t_startAppearEffect( viewFigure, viewWriter );\n\t\t\t_showPlaceholder( imageUtils, placeholder, viewFigure, viewWriter );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Show progress bar on the top of the image when image is uploading.\n\t\tif ( status == 'uploading' ) {\n\t\t\tconst loader = fileRepository.loaders.get( uploadId );\n\n\t\t\t// Start appear effect if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n\t\t\t_startAppearEffect( viewFigure, viewWriter );\n\n\t\t\tif ( !loader ) {\n\t\t\t\t// There is no loader associated with uploadId - this means that image came from external changes.\n\t\t\t\t// In such cases we still want to show the placeholder until image is fully uploaded.\n\t\t\t\t// Show placeholder if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n\t\t\t\t_showPlaceholder( imageUtils, placeholder, viewFigure, viewWriter );\n\t\t\t} else {\n\t\t\t\t// Hide placeholder and initialize progress bar showing upload progress.\n\t\t\t\t_hidePlaceholder( viewFigure, viewWriter );\n\t\t\t\t_showProgressBar( viewFigure, viewWriter, loader, editor.editing.view );\n\t\t\t\t_displayLocalImage( imageUtils, viewFigure!, viewWriter, loader );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( status == 'complete' && fileRepository.loaders.get( uploadId ) ) {\n\t\t\t_showCompleteIcon( viewFigure, viewWriter, editor.editing.view );\n\t\t}\n\n\t\t// Clean up.\n\t\t_hideProgressBar( viewFigure, viewWriter );\n\t\t_hidePlaceholder( viewFigure, viewWriter );\n\t\t_stopAppearEffect( viewFigure, viewWriter );\n\t};\n}\n\n/**\n * Adds ck-appear class to the image figure if one is not already applied.\n */\nfunction _startAppearEffect( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\tif ( !viewFigure.hasClass( 'ck-appear' ) ) {\n\t\twriter.addClass( 'ck-appear', viewFigure );\n\t}\n}\n\n/**\n * Removes ck-appear class to the image figure if one is not already removed.\n */\nfunction _stopAppearEffect( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\twriter.removeClass( 'ck-appear', viewFigure );\n}\n\n/**\n * Shows placeholder together with infinite progress bar on given image figure.\n */\nfunction _showPlaceholder( imageUtils: ImageUtils, placeholder: string, viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\tif ( !viewFigure.hasClass( 'ck-image-upload-placeholder' ) ) {\n\t\twriter.addClass( 'ck-image-upload-placeholder', viewFigure );\n\t}\n\n\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\tif ( viewImg.getAttribute( 'src' ) !== placeholder ) {\n\t\twriter.setAttribute( 'src', placeholder, viewImg );\n\t}\n\n\tif ( !_getUIElement( viewFigure, 'placeholder' ) ) {\n\t\twriter.insert( writer.createPositionAfter( viewImg ), _createPlaceholder( writer ) );\n\t}\n}\n\n/**\n * Removes placeholder together with infinite progress bar on given image figure.\n */\nfunction _hidePlaceholder( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\tif ( viewFigure.hasClass( 'ck-image-upload-placeholder' ) ) {\n\t\twriter.removeClass( 'ck-image-upload-placeholder', viewFigure );\n\t}\n\n\t_removeUIElement( viewFigure, writer, 'placeholder' );\n}\n\n/**\n * Shows progress bar displaying upload progress.\n * Attaches it to the file loader to update when upload percentace is changed.\n */\nfunction _showProgressBar( viewFigure: ViewContainerElement, writer: ViewDowncastWriter, loader: FileLoader, view: EditingView ) {\n\tconst progressBar = _createProgressBar( writer );\n\twriter.insert( writer.createPositionAt( viewFigure, 'end' ), progressBar );\n\n\t// Update progress bar width when uploadedPercent is changed.\n\tloader.on( 'change:uploadedPercent', ( evt, name, value ) => {\n\t\tview.change( writer => {\n\t\t\twriter.setStyle( 'width', value + '%', progressBar );\n\t\t} );\n\t} );\n}\n\n/**\n * Hides upload progress bar.\n */\nfunction _hideProgressBar( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\t_removeUIElement( viewFigure, writer, 'progressBar' );\n}\n\n/**\n * Shows complete icon and hides after a certain amount of time.\n */\nfunction _showCompleteIcon( viewFigure: ViewContainerElement, writer: ViewDowncastWriter, view: EditingView ) {\n\tconst completeIcon = writer.createUIElement( 'div', { class: 'ck-image-upload-complete-icon' } );\n\n\twriter.insert( writer.createPositionAt( viewFigure, 'end' ), completeIcon );\n\n\tsetTimeout( () => {\n\t\tview.change( writer => writer.remove( writer.createRangeOn( completeIcon ) ) );\n\t}, 3000 );\n}\n\n/**\n * Create progress bar element using {@link module:engine/view/uielement~ViewUIElement}.\n */\nfunction _createProgressBar( writer: ViewDowncastWriter ): ViewUIElement {\n\tconst progressBar = writer.createUIElement( 'div', { class: 'ck-progress-bar' } );\n\n\twriter.setCustomProperty( 'progressBar', true, progressBar );\n\n\treturn progressBar;\n}\n\n/**\n * Create placeholder element using {@link module:engine/view/uielement~ViewUIElement}.\n */\nfunction _createPlaceholder( writer: ViewDowncastWriter ): ViewUIElement {\n\tconst placeholder = writer.createUIElement( 'div', { class: 'ck-upload-placeholder-loader' } );\n\n\twriter.setCustomProperty( 'placeholder', true, placeholder );\n\n\treturn placeholder;\n}\n\n/**\n * Returns {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n * Returns `undefined` if element is not found.\n */\nfunction _getUIElement( imageFigure: ViewElement, uniqueProperty: string ): ViewUIElement | undefined {\n\tfor ( const child of imageFigure.getChildren() ) {\n\t\tif ( ( child as ViewElement ).getCustomProperty( uniqueProperty ) ) {\n\t\t\treturn child as ViewUIElement;\n\t\t}\n\t}\n}\n\n/**\n * Removes {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n */\nfunction _removeUIElement( viewFigure: ViewContainerElement, writer: ViewDowncastWriter, uniqueProperty: string ) {\n\tconst element = _getUIElement( viewFigure, uniqueProperty );\n\n\tif ( element ) {\n\t\twriter.remove( writer.createRangeOn( element ) );\n\t}\n}\n\n/**\n * Displays local data from file loader.\n */\nfunction _displayLocalImage( imageUtils: ImageUtils, viewFigure: ViewElement, writer: ViewDowncastWriter, loader: FileLoader ) {\n\tif ( loader.data ) {\n\t\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\t\twriter.setAttribute( 'src', loader.data, viewImg );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/uploadimagecommand\n */\n\nimport { FileRepository } from '@ckeditor/ckeditor5-upload';\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { toArray, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\nimport type { ModelPosition } from '@ckeditor/ckeditor5-engine';\n\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The upload image command.\n *\n * The command is registered by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin as `uploadImage`\n * and it is also available via aliased `imageUpload` name.\n *\n * In order to upload an image at the current selection position\n * (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n * execute the command and pass the native image file instance:\n *\n * ```ts\n * this.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n * \t// Assuming that only images were pasted:\n * \tconst images = Array.from( data.dataTransfer.files );\n *\n * \t// Upload the first image:\n * \teditor.execute( 'uploadImage', { file: images[ 0 ] } );\n * } );\n * ```\n *\n * It is also possible to insert multiple images at once:\n *\n * ```ts\n * editor.execute( 'uploadImage', {\n * \tfile: [\n * \t\tfile1,\n * \t\tfile2\n * \t]\n * } );\n * ```\n */\nexport class UploadImageCommand extends Command {\n\t/**\n\t * The command property: `false` if there is no permission on image upload, otherwise `true`.\n\t *\n\t * @observable\n\t * @internal\n\t */\n\tdeclare public isAccessAllowed: boolean;\n\n\t/**\n\t * Creates an instance of the `imageUlpoad` command. When executed, the command upload one of\n\t * the currently selected image from computer.\n\t *\n\t * @param editor The editor instance.\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.set( 'isAccessAllowed', true );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst selectedElement = editor.model.document.selection.getSelectedElement()!;\n\n\t\t// TODO: This needs refactoring.\n\t\tthis.isEnabled = imageUtils.isImageAllowed() || imageUtils.isImage( selectedElement );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.file The image file or an array of image files to upload.\n\t */\n\tpublic override execute( options: { file: ArrayOrItem<File> } ): void {\n\t\tconst files = toArray( options.file );\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// In case of multiple files, each file (starting from the 2nd) will be inserted at a position that\n\t\t// follows the previous one. That will move the selection and, to stay on the safe side and make sure\n\t\t// all images inherit the same selection attributes, they are collected beforehand.\n\t\t//\n\t\t// Applying these attributes ensures, for instance, that inserting an (inline) image into a link does\n\t\t// not split that link but preserves its continuity.\n\t\t//\n\t\t// Note: Selection attributes that do not make sense for images will be filtered out by insertImage() anyway.\n\t\tconst selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n\t\tfiles.forEach( ( file, index ) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\t// Inserting of an inline image replace the selected element and make a selection on the inserted image.\n\t\t\t// Therefore inserting multiple inline images requires creating position after each element.\n\t\t\tif ( index && selectedElement && imageUtils.isImage( selectedElement ) ) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter( selectedElement );\n\n\t\t\t\tthis._uploadImage( file, selectionAttributes, position );\n\t\t\t} else {\n\t\t\t\tthis._uploadImage( file, selectionAttributes );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Handles uploading single file.\n\t */\n\tprivate _uploadImage( file: File, attributes: object, position?: ModelPosition ): void {\n\t\tconst editor = this.editor;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst loader = fileRepository.createLoader( file );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Do not throw when upload adapter is not set. FileRepository will log an error anyway.\n\t\tif ( !loader ) {\n\t\t\treturn;\n\t\t}\n\n\t\timageUtils.insertImage( { ...attributes, uploadId: loader.id }, position );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/imageuploadediting\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tViewUpcastWriter,\n\ttype ModelElement,\n\ttype ModelItem,\n\ttype ModelWriter,\n\ttype ViewDataTransfer,\n\ttype ViewElement,\n\ttype ModelNodeAttributes,\n\ttype DowncastAttributeEvent,\n\ttype UpcastElementEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Notification } from '@ckeditor/ckeditor5-ui';\nimport {\n\tClipboardPipeline,\n\ttype ViewDocumentClipboardInputEvent,\n\ttype ClipboardInputTransformationEvent\n} from '@ckeditor/ckeditor5-clipboard';\nimport { FileRepository, type UploadResponse, type FileLoader } from '@ckeditor/ckeditor5-upload';\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nimport { ImageUtils } from '../imageutils.js';\nimport { UploadImageCommand } from './uploadimagecommand.js';\nimport { createImageTypeRegExp, fetchLocalImage, isLocalImage } from './utils.js';\n\n/**\n * The editing part of the image upload feature. It registers the `'uploadImage'` command\n * and the `imageUpload` command as an aliased name.\n *\n * When an image is uploaded, it fires the {@link ~ImageUploadEditing#event:uploadComplete `uploadComplete`} event\n * that allows adding custom attributes to the {@link module:engine/model/element~ModelElement image element}.\n */\nexport class ImageUploadEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ FileRepository, Notification, ClipboardPipeline, ImageUtils ]> {\n\t\treturn [ FileRepository, Notification, ClipboardPipeline, ImageUtils ];\n\t}\n\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t * model elements during the upload.\n\t *\n\t * Model element of the uploaded image can change, for instance, when {@link module:image/image/imagetypecommand~ImageTypeCommand}\n\t * is executed as a result of adding caption or changing image style. As a result, the upload logic must keep track of the model\n\t * element (reference) and resolve the upload for the correct model element (instead of the one that landed in the `$graveyard`\n\t * after image type changed).\n\t */\n\tprivate readonly _uploadImageElements: Map<string, Set<ModelElement>>;\n\n\t/**\n\t * An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t * upload responses for handling images dragged during their upload process. When such images are later\n\t * dropped, their original upload IDs no longer exist in the registry (as the original upload completed).\n\t * This map preserves the upload responses to properly handle such cases.\n\t */\n\tprivate readonly _uploadedImages = new Map<string, UploadResponse>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image', {\n\t\t\tupload: {\n\t\t\t\ttypes: [ 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff' ]\n\t\t\t}\n\t\t} );\n\n\t\tthis._uploadImageElements = new Map();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst doc = editor.model.document;\n\t\tconst conversion = editor.conversion;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\t\tconst imageTypes = createImageTypeRegExp( editor.config.get( 'image.upload.types' )! );\n\t\tconst uploadImageCommand = new UploadImageCommand( editor );\n\n\t\t// Register `uploadImage` command and add `imageUpload` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'uploadImage', uploadImageCommand );\n\t\teditor.commands.add( 'imageUpload', uploadImageCommand );\n\n\t\t// Register upcast converter for uploadId.\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'uploadId'\n\t\t\t\t},\n\t\t\t\tmodel: 'uploadId'\n\t\t\t} )\n\n\t\t\t// Handle the case when the image is not fully uploaded yet but it's being moved.\n\t\t\t// See more: https://github.com/ckeditor/ckeditor5/pull/17327\n\t\t\t.add( dispatcher => dispatcher.on<UpcastElementEvent>( 'element:img', ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.test( data.viewItem, { attributes: [ 'data-ck-upload-id' ] } ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst uploadId = data.viewItem.getAttribute( 'data-ck-upload-id' );\n\n\t\t\t\tif ( !uploadId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// The `<img>` was not converted to a model image element (e.g. an inline root only allows\n\t\t\t\t// inline content and the image was not allowed), so there is nothing to set the upload data on.\n\t\t\t\tif ( !data.modelRange ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst [ modelElement ] = Array.from( data.modelRange.getItems( { shallow: true } ) );\n\t\t\t\tconst loader = fileRepository.loaders.get( uploadId as string );\n\n\t\t\t\tif ( modelElement ) {\n\t\t\t\t\t// Handle case when `uploadId` is set on the image element but the loader is not present in the registry.\n\t\t\t\t\t// It may happen when the image was successfully uploaded and the loader was removed from the registry.\n\t\t\t\t\t// It's still present in the `_uploadedImages` map though. It's why we do not place this line in the condition below.\n\t\t\t\t\tconversionApi.writer.setAttribute( 'uploadId', uploadId, modelElement );\n\t\t\t\t\tconversionApi.consumable.consume( data.viewItem, { attributes: [ 'data-ck-upload-id' ] } );\n\n\t\t\t\t\tif ( loader && loader.data ) {\n\t\t\t\t\t\tconversionApi.writer.setAttribute( 'uploadStatus', loader.status, modelElement );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, { priority: 'low' } ) );\n\n\t\t// Handle pasted images.\n\t\t// For every image file, a new file loader is created and a placeholder image is\n\t\t// inserted into the content. Then, those images are uploaded once they appear in the model\n\t\t// (see Document#change listener below).\n\t\tthis.listenTo<ViewDocumentClipboardInputEvent>( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n\t\t\t// Skip if non empty HTML data is included.\n\t\t\t// https://github.com/ckeditor/ckeditor5-upload/issues/68\n\t\t\tif ( isHtmlInDataTransfer( data.dataTransfer ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst images = Array.from( data.dataTransfer.files ).filter( file => {\n\t\t\t\t// See https://github.com/ckeditor/ckeditor5-image/pull/254.\n\t\t\t\tif ( !file ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn imageTypes.test( file.type );\n\t\t\t} );\n\n\t\t\tif ( !images.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\t// Set selection to paste target.\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\twriter.setSelection( data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) ) );\n\t\t\t\t}\n\n\t\t\t\teditor.execute( 'uploadImage', { file: images } );\n\t\t\t} );\n\n\t\t\tconst uploadImageCommand = editor.commands.get( 'uploadImage' )!;\n\n\t\t\tif ( !uploadImageCommand.isAccessAllowed ) {\n\t\t\t\tconst notification: Notification = editor.plugins.get( 'Notification' );\n\t\t\t\tconst t = editor.locale.t;\n\n\t\t\t\tnotification.showWarning( t( 'You have no image upload permissions.' ), {\n\t\t\t\t\tnamespace: 'image'\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t// Handle HTML pasted with images with base64 or blob sources.\n\t\t// For every image file, a new file loader is created and a placeholder image is\n\t\t// inserted into the content. Then, those images are uploaded once they appear in the model\n\t\t// (see Document#change listener below).\n\t\tthis.listenTo<ClipboardInputTransformationEvent>( clipboardPipeline, 'inputTransformation', ( evt, data ) => {\n\t\t\tconst fetchableImages = Array.from( editor.editing.view.createRangeIn( data.content ) )\n\t\t\t\t.map( value => value.item as ViewElement )\n\t\t\t\t.filter( viewElement =>\n\t\t\t\t\tisLocalImage( imageUtils, viewElement ) &&\n\t\t\t\t\t!viewElement.getAttribute( 'uploadProcessed' ) )\n\t\t\t\t.map( viewElement => { return { promise: fetchLocalImage( viewElement ), imageElement: viewElement }; } );\n\n\t\t\tif ( !fetchableImages.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst writer = new ViewUpcastWriter( editor.editing.view.document );\n\n\t\t\tfor ( const fetchableImage of fetchableImages ) {\n\t\t\t\t// Set attribute marking that the image was processed already.\n\t\t\t\twriter.setAttribute( 'uploadProcessed', true, fetchableImage.imageElement );\n\n\t\t\t\tconst loader = fileRepository.createLoader( fetchableImage.promise );\n\n\t\t\t\tif ( loader ) {\n\t\t\t\t\twriter.setAttribute( 'src', '', fetchableImage.imageElement );\n\t\t\t\t\twriter.setAttribute( 'uploadId', loader.id, fetchableImage.imageElement );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Prevents from the browser redirecting to the dropped image.\n\t\teditor.editing.view.document.on( 'dragover', ( evt, data ) => {\n\t\t\tdata.preventDefault();\n\t\t} );\n\n\t\t// Upload placeholder images that appeared in the model.\n\t\tdoc.on( 'change', () => {\n\t\t\t// Note: Reversing changes to start with insertions and only then handle removals. If it was the other way around,\n\t\t\t// loaders for **all** images that land in the $graveyard would abort while in fact only those that were **not** replaced\n\t\t\t// by other images should be aborted.\n\t\t\tconst changes = doc.differ.getChanges( { includeChangesInGraveyard: true } ).reverse();\n\t\t\tconst insertedImagesIds = new Set();\n\n\t\t\tfor ( const entry of changes ) {\n\t\t\t\tif ( entry.type == 'insert' && entry.name != '$text' ) {\n\t\t\t\t\tconst item = entry.position.nodeAfter!;\n\t\t\t\t\tconst isInsertedInGraveyard = entry.position.root.rootName == '$graveyard';\n\n\t\t\t\t\tfor ( const imageElement of getImagesFromChangeItem( editor, item ) ) {\n\t\t\t\t\t\t// Check if the image element still has upload id.\n\t\t\t\t\t\tconst uploadId = imageElement.getAttribute( 'uploadId' ) as string;\n\t\t\t\t\t\tconst uploadStatus = imageElement.getAttribute( 'uploadStatus' );\n\n\t\t\t\t\t\t// Check if status is complete to ensure that there were no additional reconversions\n\t\t\t\t\t\t// in the same batch that set the status to 'complete'. It may happen when list item\n\t\t\t\t\t\t// performed refresh of its children (including images) because `uploadStatus` attribute\n\t\t\t\t\t\t// has been changed.\n\t\t\t\t\t\tif ( !uploadId || uploadStatus == 'complete' ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if the image is loaded on this client.\n\t\t\t\t\t\tconst loader = fileRepository.loaders.get( uploadId );\n\n\t\t\t\t\t\tif ( !loader ) {\n\t\t\t\t\t\t\t// If the loader does not exist, it means that the image was already uploaded\n\t\t\t\t\t\t\t// and the loader promise was removed from the registry. In that scenario we need\n\t\t\t\t\t\t\t// to restore response object from the internal map.\n\t\t\t\t\t\t\tif ( !isInsertedInGraveyard && this._uploadedImages.has( uploadId ) ) {\n\t\t\t\t\t\t\t\t// Fire `uploadComplete` to set proper attributes on the image element.\n\t\t\t\t\t\t\t\teditor.model.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'complete', imageElement );\n\n\t\t\t\t\t\t\t\t\tthis.fire<ImageUploadCompleteEvent>( 'uploadComplete', {\n\t\t\t\t\t\t\t\t\t\tdata: this._uploadedImages.get( uploadId )!,\n\t\t\t\t\t\t\t\t\t\timageElement: imageElement as ModelElement\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t// While it makes sense to remove the image from the `_uploadedImages` map here,\n\t\t\t\t\t\t\t\t// it's counterintuitive for the user that pastes image in uploading several times.\n\t\t\t\t\t\t\t\t// It'll work the first time, but the next time the image will be empty because the\n\t\t\t\t\t\t\t\t// `_uploadedImages` no longer contain the response.\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isInsertedInGraveyard ) {\n\t\t\t\t\t\t\t// If the image was inserted to the graveyard for good (**not** replaced by another image),\n\t\t\t\t\t\t\t// only then abort the loading process.\n\t\t\t\t\t\t\tif ( !insertedImagesIds.has( uploadId ) ) {\n\t\t\t\t\t\t\t\t// ... but abort it only if all remain images that share the same loader are in the graveyard too.\n\t\t\t\t\t\t\t\t// This is to prevent situation when we have two images in uploading state and one of them is being\n\t\t\t\t\t\t\t\t// placed in the graveyard (e.g. using undo). The other one should not be aborted.\n\t\t\t\t\t\t\t\tconst allImagesThatShareUploaderInGraveyard = Array\n\t\t\t\t\t\t\t\t\t.from( this._uploadImageElements.get( uploadId )! )\n\t\t\t\t\t\t\t\t\t.every( element => element.root.rootName == '$graveyard' );\n\n\t\t\t\t\t\t\t\tif ( allImagesThatShareUploaderInGraveyard ) {\n\t\t\t\t\t\t\t\t\tloader.abort();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Remember the upload id of the inserted image. If it acted as a replacement for another\n\t\t\t\t\t\t\t// image (which landed in the $graveyard), the related loader will not be aborted because\n\t\t\t\t\t\t\t// this is still the same image upload.\n\t\t\t\t\t\t\tinsertedImagesIds.add( uploadId );\n\n\t\t\t\t\t\t\t// Keep the mapping between the upload ID and the image model element so the upload\n\t\t\t\t\t\t\t// can later resolve in the context of the correct model element. The model element could\n\t\t\t\t\t\t\t// change for the same upload if one image was replaced by another (e.g. image type was changed),\n\t\t\t\t\t\t\t// so this may also replace an existing mapping.\n\t\t\t\t\t\t\tif ( !this._uploadImageElements.has( uploadId ) ) {\n\t\t\t\t\t\t\t\tthis._uploadImageElements.set( uploadId, new Set( [ imageElement as ModelElement ] ) );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._uploadImageElements.get( uploadId )!.add( imageElement as ModelElement );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( loader.status == 'idle' ) {\n\t\t\t\t\t\t\t\t// If the image was inserted into content and has not been loaded yet, start loading it.\n\t\t\t\t\t\t\t\tthis._readAndUpload( loader );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Set the default handler for feeding the image element with `src` and `srcset` attributes.\n\t\t// Also set the natural `width` and `height` attributes (if not already set).\n\t\tthis.on<ImageUploadCompleteEvent>( 'uploadComplete', ( evt, { imageElement, data } ) => {\n\t\t\tconst urls = data.urls ? data.urls as Record<string, unknown> : data;\n\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\twriter.setAttribute( 'src', urls.default, imageElement );\n\t\t\t\tthis._parseAndSetSrcsetAttributeOnImage( urls, imageElement, writer );\n\t\t\t\timageUtils.setImageNaturalSizeAttributes( imageElement );\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\t// Setup schema to allow uploadId and uploadStatus for images.\n\t\t// Wait for ImageBlockEditing or ImageInlineEditing to register their elements first,\n\t\t// that's why doing this in afterInit() instead of init().\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', {\n\t\t\t\tallowAttributes: [ 'uploadId', 'uploadStatus' ]\n\t\t\t} );\n\n\t\t\tthis._registerConverters( 'imageBlock' );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tschema.extend( 'imageInline', {\n\t\t\t\tallowAttributes: [ 'uploadId', 'uploadStatus' ]\n\t\t\t} );\n\n\t\t\tthis._registerConverters( 'imageInline' );\n\t\t}\n\t}\n\n\t/**\n\t * Reads and uploads an image.\n\t *\n\t * The image is read from the disk and as a Base64-encoded string it is set temporarily to\n\t * `image[src]`. When the image is successfully uploaded, the temporary data is replaced with the target\n\t * image's URL (the URL to the uploaded image on the server).\n\t */\n\tprotected _readAndUpload( loader: FileLoader ): Promise<void> {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst t = editor.locale.t;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst notification = editor.plugins.get( Notification );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageUploadElements = this._uploadImageElements;\n\n\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\tconst elements = imageUploadElements.get( loader.id )!;\n\n\t\t\tfor ( const element of elements ) {\n\t\t\t\twriter.setAttribute( 'uploadStatus', 'reading', element );\n\t\t\t}\n\t\t} );\n\n\t\treturn loader.read()\n\t\t\t.then( () => {\n\t\t\t\tconst promise = loader.upload();\n\n\t\t\t\tif ( editor.ui ) {\n\t\t\t\t\teditor.ui.ariaLiveAnnouncer.announce( t( 'Uploading image' ) );\n\t\t\t\t}\n\n\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\t// Force re–paint in Safari. Without it, the image will display with a wrong size.\n\t\t\t\t\t// https://github.com/ckeditor/ckeditor5/issues/1975\n\t\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\t\tif ( env.isSafari ) {\n\t\t\t\t\t\tconst viewFigure = editor.editing.mapper.toViewElement( imageElement )!;\n\t\t\t\t\t\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\t\t\t\t\t\teditor.editing.view.once( 'render', () => {\n\t\t\t\t\t\t\t// Early returns just to be safe. There might be some code ran\n\t\t\t\t\t\t\t// in between the outer scope and this callback.\n\t\t\t\t\t\t\tif ( !viewImg.parent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst domFigure = editor.editing.view.domConverter.mapViewToDom( viewImg.parent ) as HTMLElement | undefined;\n\n\t\t\t\t\t\t\tif ( !domFigure ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst originalDisplay = domFigure.style.display;\n\n\t\t\t\t\t\t\tdomFigure.style.display = 'none';\n\n\t\t\t\t\t\t\t// Make sure this line will never be removed during minification for having \"no effect\".\n\t\t\t\t\t\t\t( domFigure as any )._ckHack = domFigure.offsetHeight;\n\n\t\t\t\t\t\t\tdomFigure.style.display = originalDisplay;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'uploading', imageElement );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn promise;\n\t\t\t} )\n\t\t\t.then( data => {\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'complete', imageElement );\n\t\t\t\t\t\tthis.fire<ImageUploadCompleteEvent>( 'uploadComplete', { data, imageElement } );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( editor.ui ) {\n\t\t\t\t\t\teditor.ui.ariaLiveAnnouncer.announce( t( 'Image upload complete' ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._uploadedImages.set( loader.id, data );\n\t\t\t\t} );\n\n\t\t\t\tclean();\n\t\t\t} )\n\t\t\t.catch( error => {\n\t\t\t\tif ( editor.ui ) {\n\t\t\t\t\teditor.ui.ariaLiveAnnouncer.announce( t( 'Error during image upload' ) );\n\t\t\t\t}\n\n\t\t\t\t// If status is not 'error' nor 'aborted' - throw error because it means that something else went wrong,\n\t\t\t\t// it might be generic error and it would be real pain to find what is going on.\n\t\t\t\tif ( loader.status !== 'error' && loader.status !== 'aborted' ) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Might be 'aborted'.\n\t\t\t\tif ( loader.status == 'error' && error ) {\n\t\t\t\t\tnotification.showWarning( error, {\n\t\t\t\t\t\ttitle: t( 'Upload failed' ),\n\t\t\t\t\t\tnamespace: 'upload'\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Permanently remove image from insertion batch.\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\t\t// Handle situation when the image has been removed and then `abort` exception was thrown.\n\t\t\t\t\t\t// See: https://github.com/ckeditor/ckeditor5-commercial/issues/6817\n\t\t\t\t\t\tif ( imageElement.root.rootName !== '$graveyard' ) {\n\t\t\t\t\t\t\twriter.remove( imageElement );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tclean();\n\t\t\t} );\n\n\t\tfunction clean() {\n\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\twriter.removeAttribute( 'uploadId', imageElement );\n\t\t\t\t\twriter.removeAttribute( 'uploadStatus', imageElement );\n\t\t\t\t}\n\n\t\t\t\timageUploadElements.delete( loader.id );\n\t\t\t} );\n\n\t\t\tfileRepository.destroyLoader( loader );\n\t\t}\n\t}\n\n\t/**\n\t * Creates the `srcset` attribute based on a given file upload response and sets it as an attribute to a specific image element.\n\t *\n\t * @param data Data object from which `srcset` will be created.\n\t * @param image The image element on which the `srcset` attribute will be set.\n\t */\n\tprotected _parseAndSetSrcsetAttributeOnImage( data: Record<string, unknown>, image: ModelElement, writer: ModelWriter ): void {\n\t\t// Srcset attribute for responsive images support.\n\t\tlet maxWidth = 0;\n\n\t\tconst srcsetAttribute = Object.keys( data )\n\t\t\t// Filter out keys that are not integers.\n\t\t\t.filter( key => {\n\t\t\t\tconst width = parseInt( key, 10 );\n\n\t\t\t\tif ( !isNaN( width ) ) {\n\t\t\t\t\tmaxWidth = Math.max( maxWidth, width );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} )\n\n\t\t\t// Convert each key to srcset entry.\n\t\t\t.map( key => `${ data[ key ] } ${ key }w` )\n\n\t\t\t// Join all entries.\n\t\t\t.join( ', ' );\n\n\t\tif ( srcsetAttribute != '' ) {\n\t\t\tconst attributes: ModelNodeAttributes = {\n\t\t\t\tsrcset: srcsetAttribute\n\t\t\t};\n\n\t\t\tif ( !image.hasAttribute( 'width' ) && !image.hasAttribute( 'height' ) ) {\n\t\t\t\tattributes.width = maxWidth;\n\t\t\t}\n\n\t\t\twriter.setAttributes( attributes, image );\n\t\t}\n\t}\n\n\t/**\n\t * Registers image upload converters.\n\t *\n\t * @param imageType The type of the image.\n\t */\n\tprivate _registerConverters( imageType: 'imageBlock' | 'imageInline' ) {\n\t\tconst { conversion, plugins } = this.editor;\n\n\t\tconst fileRepository = plugins.get( FileRepository );\n\t\tconst imageUtils = plugins.get( ImageUtils );\n\n\t\t// It sets `data-ck-upload-id` attribute on the view image elements that are not fully uploaded.\n\t\t// It avoids the situation when image disappears when it's being moved and upload is not finished yet.\n\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/16967\n\t\tconversion.for( 'dataDowncast' ).add( dispatcher => {\n\t\t\tdispatcher.on<DowncastAttributeEvent>( `attribute:uploadId:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst loader = fileRepository.loaders.get( data.attributeNewValue as string );\n\n\t\t\t\tif ( !loader || !loader.data ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item as ModelElement )!;\n\t\t\t\tconst img = imageUtils.findViewImgElement( viewElement );\n\n\t\t\t\tif ( img ) {\n\t\t\t\t\tconversionApi.consumable.consume( data.item, evt.name );\n\t\t\t\t\tconversionApi.writer.setAttribute( 'data-ck-upload-id', loader.id, img );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n/**\n * TODO move this to the clipboard package.\n *\n * Returns `true` if non-empty `text/html` is included in the data transfer.\n */\nexport function isHtmlInDataTransfer( dataTransfer: ViewDataTransfer ): boolean {\n\treturn Array.from( dataTransfer.types ).includes( 'text/html' ) && dataTransfer.getData( 'text/html' ) !== '';\n}\n\nfunction getImagesFromChangeItem( editor: Editor, item: ModelItem ): Array<ModelItem> {\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn Array.from( editor.model.createRangeOn( item ) )\n\t\t.filter( value => imageUtils.isImage( value.item as ModelElement ) )\n\t\t.map( value => value.item );\n}\n\n/**\n * An event fired when an image is uploaded. You can hook into this event to provide\n * custom attributes to the {@link module:engine/model/element~ModelElement image element} based on the data from\n * the server.\n *\n * ```ts\n * const imageUploadEditing = editor.plugins.get( 'ImageUploadEditing' );\n *\n * imageUploadEditing.on( 'uploadComplete', ( evt, { data, imageElement } ) => {\n * \teditor.model.change( writer => {\n * \t\twriter.setAttribute( 'someAttribute', 'foo', imageElement );\n * \t} );\n * } );\n * ```\n *\n * You can also stop the default handler that sets the `src` and `srcset` attributes\n * if you want to provide custom values for these attributes.\n *\n * ```ts\n * imageUploadEditing.on( 'uploadComplete', ( evt, { data, imageElement } ) => {\n * \tevt.stop();\n * } );\n * ```\n *\n * **Note**: This event is fired by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin.\n *\n * @eventName ~ImageUploadEditing#uploadComplete\n * @param data The `uploadComplete` event data.\n */\nexport type ImageUploadCompleteEvent = {\n\tname: 'uploadComplete';\n\targs: [ data: ImageUploadCompleteData];\n};\n\nexport type ImageUploadCompleteData = {\n\n\t/**\n\t * The data coming from the upload adapter.\n\t */\n\tdata: UploadResponse;\n\n\t/**\n\t * The model {@link module:engine/model/element~ModelElement image element} that can be customized.\n\t */\n\timageElement: ModelElement;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageUploadUI } from './imageupload/imageuploadui.js';\nimport { ImageUploadProgress } from './imageupload/imageuploadprogress.js';\nimport { ImageUploadEditing } from './imageupload/imageuploadediting.js';\n\n/**\n * The image upload plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload image upload feature} documentation.\n *\n * This plugin does not do anything directly, but it loads a set of specific plugins to enable image uploading:\n *\n * * {@link module:image/imageupload/imageuploadediting~ImageUploadEditing},\n * * {@link module:image/imageupload/imageuploadui~ImageUploadUI},\n * * {@link module:image/imageupload/imageuploadprogress~ImageUploadProgress}.\n */\nexport class ImageUpload extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUpload' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUploadEditing, ImageUploadUI, ImageUploadProgress ]> {\n\t\treturn [ ImageUploadEditing, ImageUploadUI, ImageUploadProgress ];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/ui/imageinserturlview\n */\n\nimport {\n\tView,\n\tLabeledFieldView,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\ttype InputTextView\n} from '@ckeditor/ckeditor5-ui';\nimport { KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The insert an image via URL view.\n *\n * See {@link module:image/imageinsert/imageinsertviaurlui~ImageInsertViaUrlUI}.\n *\n * @internal\n */\nexport class ImageInsertUrlView extends View {\n\t/**\n\t * The URL input field view.\n\t */\n\tpublic urlInputView: LabeledFieldView<InputTextView>;\n\n\t/**\n\t * The value of the URL input.\n\t *\n\t * @observable\n\t */\n\tdeclare public imageURLInputValue: string;\n\n\t/**\n\t * Observable property used to alter labels while some image is selected and when it is not.\n\t *\n\t * @observable\n\t */\n\tdeclare public isImageSelected: boolean;\n\n\t/**\n\t * Observable property indicating whether the form interactive elements should be enabled.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t *\n\t * @param locale The localization services instance.\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.set( 'imageURLInputValue', '' );\n\t\tthis.set( 'isImageSelected', false );\n\t\tthis.set( 'isEnabled', true );\n\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\tthis.urlInputView = this._createUrlInputView();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-image-insert-url'\n\t\t\t\t],\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tthis.urlInputView,\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-image-insert-url__action-row'\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates the {@link #urlInputView}.\n\t */\n\tprivate _createUrlInputView() {\n\t\tconst locale = this.locale!;\n\t\tconst t = locale.t;\n\t\tconst urlInputView = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\turlInputView.bind( 'label' ).to( this, 'isImageSelected',\n\t\t\tvalue => value ? t( 'Update image URL' ) : t( 'Insert image via URL' )\n\t\t);\n\n\t\turlInputView.bind( 'isEnabled' ).to( this );\n\n\t\turlInputView.fieldView.inputMode = 'url';\n\t\turlInputView.fieldView.placeholder = 'https://example.com/image.png';\n\n\t\turlInputView.fieldView.bind( 'value' ).to( this, 'imageURLInputValue', ( value: string ) => value || '' );\n\t\turlInputView.fieldView.on( 'input', () => {\n\t\t\tthis.imageURLInputValue = urlInputView.fieldView.element!.value.trim();\n\t\t} );\n\n\t\treturn urlInputView;\n\t}\n\n\t/**\n\t * Focuses the view.\n\t */\n\tpublic focus(): void {\n\t\tthis.urlInputView.focus();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/imageinsertviaurlui\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ButtonView, Dialog, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';\nimport { IconImageUrl } from '@ckeditor/ckeditor5-icons';\n\nimport { ImageInsertUI } from './imageinsertui.js';\nimport { ImageInsertUrlView } from './ui/imageinserturlview.js';\n\n/**\n * The image insert via URL plugin (UI part).\n *\n * The plugin introduces two UI components to the {@link module:ui/componentfactory~ComponentFactory UI component factory}:\n *\n * * the `'insertImageViaUrl'` toolbar button,\n * * the `'menuBar:insertImageViaUrl'` menu bar component.\n *\n * It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are default components\n * through which inserting image via URL is available.\n */\nexport class ImageInsertViaUrlUI extends Plugin {\n\tprivate _imageInsertUI!: ImageInsertUI;\n\tprivate _formView?: ImageInsertUrlView;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsertViaUrlUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageInsertUI, Dialog ]> {\n\t\treturn [ ImageInsertUI, Dialog ];\n\t}\n\n\tpublic init(): void {\n\t\tthis.editor.ui.componentFactory.add( 'insertImageViaUrl', () => this._createToolbarButton() );\n\t\tthis.editor.ui.componentFactory.add( 'menuBar:insertImageViaUrl', () => this._createMenuBarButton( 'standalone' ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._imageInsertUI = this.editor.plugins.get( 'ImageInsertUI' );\n\n\t\tthis._imageInsertUI.registerIntegration( {\n\t\t\tname: 'url',\n\t\t\tobservable: () => this.editor.commands.get( 'insertImage' )!,\n\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\tmenuBarButtonViewCreator: isOnly => this._createMenuBarButton( isOnly ? 'insertOnly' : 'insertNested' )\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the base for various kinds of the button component provided by this feature.\n\t */\n\tprivate _createInsertUrlButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>(\n\t\tButtonClass: T\n\t): InstanceType<T> {\n\t\tconst button = new ButtonClass( this.editor.locale ) as InstanceType<T>;\n\n\t\tbutton.icon = IconImageUrl;\n\t\tbutton.on( 'execute', () => {\n\t\t\tthis._showModal();\n\t\t} );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a simple toolbar button, with an icon and a tooltip.\n\t */\n\tprivate _createToolbarButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton( ButtonView );\n\n\t\tbutton.tooltip = true;\n\t\tbutton.bind( 'label' ).to(\n\t\t\tthis._imageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tisImageSelected => isImageSelected ? t( 'Update image URL' ) : t( 'Insert image via URL' )\n\t\t);\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t */\n\tprivate _createDropdownButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton( ButtonView );\n\n\t\tbutton.withText = true;\n\t\tbutton.bind( 'label' ).to(\n\t\t\tthis._imageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tisImageSelected => isImageSelected ? t( 'Update image URL' ) : t( 'Insert via URL' )\n\t\t);\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the menu bar.\n\t */\n\tprivate _createMenuBarButton( type: 'standalone' | 'insertOnly' | 'insertNested' ): MenuBarMenuListItemButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton( MenuBarMenuListItemButtonView );\n\n\t\tbutton.withText = true;\n\n\t\tswitch ( type ) {\n\t\t\tcase 'standalone':\n\t\t\t\tbutton.label = t( 'Image via URL' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertOnly':\n\t\t\t\tbutton.label = t( 'Image' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertNested':\n\t\t\t\tbutton.label = t( 'Via URL' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates the form view used to submit the image URL.\n\t */\n\tprivate _createInsertUrlView(): ImageInsertUrlView {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\n\t\tconst replaceImageSourceCommand = editor.commands.get( 'replaceImageSource' )!;\n\t\tconst insertImageCommand = editor.commands.get( 'insertImage' )!;\n\n\t\tconst imageInsertUrlView = new ImageInsertUrlView( locale );\n\n\t\timageInsertUrlView.bind( 'isImageSelected' ).to( this._imageInsertUI );\n\t\timageInsertUrlView.bind( 'isEnabled' ).toMany( [ insertImageCommand, replaceImageSourceCommand ], 'isEnabled', ( ...isEnabled ) => (\n\t\t\tisEnabled.some( isCommandEnabled => isCommandEnabled )\n\t\t) );\n\n\t\treturn imageInsertUrlView;\n\t}\n\n\t/**\n\t * Shows the insert image via URL form view in a modal.\n\t */\n\tprivate _showModal() {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst t = locale.t;\n\t\tconst dialog = editor.plugins.get( 'Dialog' );\n\n\t\tif ( !this._formView ) {\n\t\t\tthis._formView = this._createInsertUrlView();\n\t\t\tthis._formView.on( 'submit', () => this._handleSave() );\n\t\t}\n\n\t\tconst replaceImageSourceCommand = editor.commands.get( 'replaceImageSource' )!;\n\t\tthis._formView.imageURLInputValue = replaceImageSourceCommand.value || '';\n\n\t\tdialog.show( {\n\t\t\tid: 'insertImageViaUrl',\n\t\t\ttitle: t( 'Image via URL' ),\n\t\t\tisModal: true,\n\t\t\tcontent: this._formView,\n\t\t\tactionButtons: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Cancel' ),\n\t\t\t\t\twithText: true,\n\t\t\t\t\tonExecute: () => dialog.hide()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this._imageInsertUI.isImageSelected ? t( 'Save' ) : t( 'Insert' ),\n\t\t\t\t\tclass: 'ck-button-action',\n\t\t\t\t\twithText: true,\n\t\t\t\t\tonExecute: () => this._handleSave()\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Executes appropriate command depending on selection and form value.\n\t */\n\tprivate _handleSave() {\n\t\tconst replaceImageSourceCommand = this.editor.commands.get( 'replaceImageSource' )!;\n\n\t\t// If an image element is currently selected, we want to replace its source attribute (instead of inserting a new image).\n\t\t// We detect if an image is selected by checking `replaceImageSource` command state.\n\t\tif ( replaceImageSourceCommand.isEnabled ) {\n\t\t\tthis.editor.execute( 'replaceImageSource', { source: this._formView!.imageURLInputValue } );\n\t\t} else {\n\t\t\tthis.editor.execute( 'insertImage', { source: this._formView!.imageURLInputValue } );\n\t\t}\n\n\t\tthis.editor.plugins.get( 'Dialog' ).hide();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsertviaurl\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\nimport { ImageInsertViaUrlUI } from './imageinsert/imageinsertviaurlui.js';\n\n/**\n * The image insert via URL plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-inserting\n * Insert images via source URL} documentation.\n *\n * This plugin does not do anything directly, but it loads a set of specific plugins\n * to enable image inserting via implemented integrations:\n *\n * * {@link module:image/imageinsert/imageinsertui~ImageInsertUI},\n */\nexport class ImageInsertViaUrl extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsertViaUrl' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageInsertViaUrlUI, ImageInsertUI ]> {\n\t\treturn [ ImageInsertViaUrlUI, ImageInsertUI ];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageUpload } from './imageupload.js';\nimport { ImageInsertViaUrl } from './imageinsertviaurl.js';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\n\n/**\n * The image insert plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n * and {@glink features/images/images-inserting Insert images via source URL} documentation.\n *\n * This plugin does not do anything directly, but it loads a set of specific plugins\n * to enable image uploading or inserting via implemented integrations:\n *\n * * {@link module:image/imageupload~ImageUpload}\n * * {@link module:image/imageinsert/imageinsertui~ImageInsertUI}\n */\nexport class ImageInsert extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsert' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUpload, ImageInsertViaUrl, ImageInsertUI ]> {\n\t\treturn [ ImageUpload, ImageInsertViaUrl, ImageInsertUI ];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/resizeimagecommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The resize image command. Currently, it only supports the width attribute.\n */\nexport class ResizeImageCommand extends Command {\n\t/**\n\t * Desired image width and height.\n\t */\n\tdeclare public value: undefined | null | {\n\t\twidth: string | null;\n\t\theight: string | null;\n\t};\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( editor.model.document.selection );\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( !element || !element.hasAttribute( 'resizedWidth' ) ) {\n\t\t\tthis.value = null;\n\t\t} else {\n\t\t\tthis.value = {\n\t\t\t\twidth: element.getAttribute( 'resizedWidth' ) as string,\n\t\t\t\theight: null\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * ```ts\n\t * // Sets the width to 50%:\n\t * editor.execute( 'resizeImage', { width: '50%' } );\n\t *\n\t * // Removes the width attribute:\n\t * editor.execute( 'resizeImage', { width: null } );\n\t * ```\n\t *\n\t * @param options\n\t * @param options.width The new width of the image.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { width: string | null } ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\tthis.value = {\n\t\t\twidth: options.width,\n\t\t\theight: null\n\t\t};\n\n\t\tif ( imageElement ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setAttribute( 'resizedWidth', options.width, imageElement );\n\t\t\t\twriter.removeAttribute( 'resizedHeight', imageElement );\n\t\t\t\timageUtils.setImageNaturalSizeAttributes( imageElement );\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imageresizeediting\n */\n\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\nimport { type Editor, Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageUtils } from '../imageutils.js';\nimport { ResizeImageCommand } from './resizeimagecommand.js';\nimport { widthAndHeightStylesAreBothSet } from '../image/utils.js';\n\n/**\n * The image resize editing feature.\n *\n * It adds the ability to resize each image using handles or manually by\n * {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n */\nexport class ImageResizeEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'IR';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isPremiumPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image', {\n\t\t\tresizeUnit: '%',\n\t\t\tresizeOptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:original',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\ticon: 'original'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:custom',\n\t\t\t\t\tvalue: 'custom',\n\t\t\t\t\ticon: 'custom'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:25',\n\t\t\t\t\tvalue: '25',\n\t\t\t\t\ticon: 'small'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:50',\n\t\t\t\t\tvalue: '50',\n\t\t\t\t\ticon: 'medium'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:75',\n\t\t\t\t\tvalue: '75',\n\t\t\t\t\ticon: 'large'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst resizeImageCommand = new ResizeImageCommand( editor );\n\n\t\tthis._registerConverters( 'imageBlock' );\n\t\tthis._registerConverters( 'imageInline' );\n\n\t\t// Register `resizeImage` command and add `imageResize` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'resizeImage', resizeImageCommand );\n\t\teditor.commands.add( 'imageResize', resizeImageCommand );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._registerSchema();\n\t}\n\n\tprivate _registerSchema(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: [ 'resizedWidth', 'resizedHeight' ] } );\n\t\t\tschema.setAttributeProperties( 'resizedWidth', { isFormatting: true } );\n\t\t\tschema.setAttributeProperties( 'resizedHeight', { isFormatting: true } );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tschema.extend( 'imageInline', { allowAttributes: [ 'resizedWidth', 'resizedHeight' ] } );\n\t\t\tschema.setAttributeProperties( 'resizedWidth', { isFormatting: true } );\n\t\t\tschema.setAttributeProperties( 'resizedHeight', { isFormatting: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers image resize converters.\n\t *\n\t * @param imageType The type of the image.\n\t */\n\tprivate _registerConverters( imageType: 'imageBlock' | 'imageInline' ) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Dedicated converter to propagate image's attribute to the img tag.\n\t\teditor.conversion.for( 'downcast' ).add( dispatcher =>\n\t\t\tdispatcher.on( `attribute:resizedWidth:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewImg = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setStyle( 'width', data.attributeNewValue, viewImg );\n\t\t\t\t\tviewWriter.addClass( 'image_resized', viewImg );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeStyle( 'width', viewImg );\n\t\t\t\t\tviewWriter.removeClass( 'image_resized', viewImg );\n\t\t\t\t}\n\t\t\t} )\n\t\t);\n\n\t\teditor.conversion.for( 'dataDowncast' ).attributeToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tname: imageType,\n\t\t\t\tkey: 'resizedHeight'\n\t\t\t},\n\t\t\tview: modelAttributeValue => ( {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t'height': modelAttributeValue\n\t\t\t\t}\n\t\t\t} )\n\t\t} );\n\n\t\teditor.conversion.for( 'editingDowncast' ).add( dispatcher =>\n\t\t\tdispatcher.on( `attribute:resizedHeight:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewImg = conversionApi.mapper.toViewElement( data.item );\n\t\t\t\tconst target = imageType === 'imageInline' ? imageUtils.findViewImgElement( viewImg ) : viewImg;\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setStyle( 'height', data.attributeNewValue, target );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeStyle( 'height', target );\n\t\t\t\t}\n\t\t\t} )\n\t\t);\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: imageType === 'imageBlock' ? 'figure' : 'img',\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\twidth: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'resizedWidth',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn viewElement.getStyle( 'width' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: imageType === 'imageBlock' ? 'figure' : 'img',\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\theight: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'resizedHeight',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn viewElement.getStyle( 'height' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).add( dispatcher => {\n\t\t\tdispatcher.on( `element:${ imageType === 'imageBlock' ? 'figure' : 'img' }`, ( evt, data, conversionApi ) => {\n\t\t\t\tconversionApi.consumable.consume( data.viewItem, { classes: [ 'image_resized' ] } );\n\t\t\t} );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imageresizebuttons\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tButtonView,\n\tDropdownButtonView,\n\tUIModel,\n\tcreateDropdown,\n\taddListToDropdown,\n\ttype ListDropdownItemDefinition\n} from '@ckeditor/ckeditor5-ui';\nimport { CKEditorError, Collection, type Locale } from '@ckeditor/ckeditor5-utils';\nimport {\n\tIconObjectSizeCustom,\n\tIconObjectSizeFull,\n\tIconObjectSizeLarge,\n\tIconObjectSizeMedium,\n\tIconObjectSizeSmall\n} from '@ckeditor/ckeditor5-icons';\n\nimport { ImageResizeEditing } from './imageresizeediting.js';\n\nimport { type ResizeImageCommand } from './resizeimagecommand.js';\nimport type { ImageResizeOption } from '../imageconfig.js';\n\nconst RESIZE_ICONS = /* #__PURE__ */ ( () => ( {\n\tsmall: IconObjectSizeSmall,\n\tmedium: IconObjectSizeMedium,\n\tlarge: IconObjectSizeLarge,\n\tcustom: IconObjectSizeCustom,\n\toriginal: IconObjectSizeFull\n} ) )();\n\n/**\n * The image resize buttons plugin.\n *\n * It adds a possibility to resize images using the toolbar dropdown or individual buttons, depending on the plugin configuration.\n */\nexport class ImageResizeButtons extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageResizeEditing ]> {\n\t\treturn [ ImageResizeEditing ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeButtons' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The resize unit.\n\t * @default '%'\n\t */\n\tprivate readonly _resizeUnit: 'px' | '%';\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._resizeUnit = editor.config.get( 'image.resizeUnit' )!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst options = editor.config.get( 'image.resizeOptions' )!;\n\t\tconst command: ResizeImageCommand = editor.commands.get( 'resizeImage' )!;\n\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\tfor ( const option of options ) {\n\t\t\tthis._registerImageResizeButton( option );\n\t\t}\n\n\t\tthis._registerImageResizeDropdown( options );\n\t}\n\n\t/**\n\t * A helper function that creates a standalone button component for the plugin.\n\t *\n\t * @param option A model of the resize option.\n\t */\n\tprivate _registerImageResizeButton( option: ImageResizeOption ): void {\n\t\tconst editor = this.editor;\n\t\tconst { name, value, icon } = option;\n\n\t\teditor.ui.componentFactory.add( name, locale => {\n\t\t\tconst button = new ButtonView( locale );\n\t\t\tconst command: ResizeImageCommand = editor.commands.get( 'resizeImage' )!;\n\t\t\tconst labelText = this._getOptionLabelValue( option, true );\n\n\t\t\tif ( !RESIZE_ICONS[ icon as keyof typeof RESIZE_ICONS ] ) {\n\t\t\t\t/**\n\t\t\t\t * When configuring {@link module:image/imageconfig~ImageConfig#resizeOptions `config.image.resizeOptions`} for standalone\n\t\t\t\t * buttons, a valid `icon` token must be set for each option.\n\t\t\t\t *\n\t\t\t\t * See all valid options described in the\n\t\t\t\t * {@link module:image/imageconfig~ImageResizeOption plugin configuration}.\n\t\t\t\t *\n\t\t\t\t * @error imageresizebuttons-missing-icon\n\t\t\t\t * @param {module:image/imageconfig~ImageResizeOption} option Invalid image resize option.\n\t\t\t\t*/\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'imageresizebuttons-missing-icon',\n\t\t\t\t\teditor,\n\t\t\t\t\toption\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbutton.set( {\n\t\t\t\t// Use the `label` property for a verbose description (because of ARIA).\n\t\t\t\tlabel: labelText,\n\t\t\t\ticon: RESIZE_ICONS[ icon as keyof typeof RESIZE_ICONS ],\n\t\t\t\ttooltip: labelText,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Bind button to the command.\n\t\t\tbutton.bind( 'isEnabled' ).to( this );\n\n\t\t\tif ( editor.plugins.has( 'ImageCustomResizeUI' ) && isCustomImageResizeOption( option ) ) {\n\t\t\t\tconst customResizeUI = editor.plugins.get( 'ImageCustomResizeUI' );\n\n\t\t\t\tthis.listenTo( button, 'execute', () => {\n\t\t\t\t\tcustomResizeUI._showForm( this._resizeUnit );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst optionValueWithUnit = value ? value + this._resizeUnit : null;\n\n\t\t\t\tbutton.bind( 'isOn' ).to(\n\t\t\t\t\tcommand, 'value',\n\t\t\t\t\tcommand, 'isEnabled',\n\t\t\t\t\tgetIsOnButtonCallback( optionValueWithUnit )\n\t\t\t\t);\n\n\t\t\t\tthis.listenTo( button, 'execute', () => {\n\t\t\t\t\teditor.execute( 'resizeImage', { width: optionValueWithUnit } );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn button;\n\t\t} );\n\t}\n\n\t/**\n\t * A helper function that creates a dropdown component for the plugin containing all the resize options defined in\n\t * the editor configuration.\n\t *\n\t * @param options An array of configured options.\n\t */\n\tprivate _registerImageResizeDropdown( options: Array<ImageResizeOption> ): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst originalSizeOption = options.find( option => !option.value )!;\n\n\t\tconst componentCreator = ( locale: Locale ) => {\n\t\t\tconst command: ResizeImageCommand = editor.commands.get( 'resizeImage' )!;\n\t\t\tconst dropdownView = createDropdown( locale, DropdownButtonView );\n\t\t\tconst dropdownButton: typeof dropdownView.buttonView & { commandValue?: string | null } = dropdownView.buttonView;\n\t\t\tconst accessibleLabel = t( 'Resize image' );\n\n\t\t\tdropdownButton.set( {\n\t\t\t\ttooltip: accessibleLabel,\n\t\t\t\tcommandValue: originalSizeOption.value,\n\t\t\t\ticon: RESIZE_ICONS.medium,\n\t\t\t\tisToggleable: true,\n\t\t\t\tlabel: this._getOptionLabelValue( originalSizeOption ),\n\t\t\t\twithText: true,\n\t\t\t\tclass: 'ck-resize-image-button',\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\tariaLabelledBy: undefined\n\t\t\t} );\n\n\t\t\tdropdownButton.bind( 'label' ).to( command, 'value', commandValue => {\n\t\t\t\tif ( commandValue && commandValue.width ) {\n\t\t\t\t\treturn commandValue.width;\n\t\t\t\t} else {\n\t\t\t\t\treturn this._getOptionLabelValue( originalSizeOption );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdropdownView.bind( 'isEnabled' ).to( this );\n\n\t\t\taddListToDropdown( dropdownView, () => this._getResizeDropdownListItemDefinitions( options, command ), {\n\t\t\t\tariaLabel: t( 'Image resize list' ),\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\tif ( 'onClick' in evt.source ) {\n\t\t\t\t\t( evt.source as any ).onClick();\n\t\t\t\t} else {\n\t\t\t\t\teditor.execute( ( evt.source as any ).commandName, { width: ( evt.source as any ).commandValue } );\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t};\n\n\t\t// Register `resizeImage` dropdown and add `imageResize` dropdown as an alias for backward compatibility.\n\t\teditor.ui.componentFactory.add( 'resizeImage', componentCreator );\n\t\teditor.ui.componentFactory.add( 'imageResize', componentCreator );\n\t}\n\n\t/**\n\t * A helper function for creating an option label value string.\n\t *\n\t * @param option A resize option object.\n\t * @param forTooltip An optional flag for creating a tooltip label.\n\t * @returns A user-defined label combined from the numeric value and the resize unit or the default label\n\t * for reset options (`Original`).\n\t */\n\tprivate _getOptionLabelValue( option: ImageResizeOption, forTooltip: boolean = false ): string {\n\t\tconst t = this.editor.t;\n\n\t\tif ( option.label ) {\n\t\t\treturn option.label;\n\t\t} else if ( forTooltip ) {\n\t\t\tif ( isCustomImageResizeOption( option ) ) {\n\t\t\t\treturn t( 'Custom image size' );\n\t\t\t} else if ( option.value ) {\n\t\t\t\treturn t( 'Resize image to %0', option.value + this._resizeUnit );\n\t\t\t} else {\n\t\t\t\treturn t( 'Resize image to the original size' );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( isCustomImageResizeOption( option ) ) {\n\t\t\t\treturn t( 'Custom' );\n\t\t\t} else if ( option.value ) {\n\t\t\t\treturn option.value + this._resizeUnit;\n\t\t\t} else {\n\t\t\t\treturn t( 'Original' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * A helper function that parses the resize options and returns list item definitions ready for use in the dropdown.\n\t *\n\t * @param options The resize options.\n\t * @param command The resize image command.\n\t * @returns Dropdown item definitions.\n\t */\n\tprivate _getResizeDropdownListItemDefinitions(\n\t\toptions: Array<ImageResizeOption>,\n\t\tcommand: ResizeImageCommand\n\t): Collection<ListDropdownItemDefinition> {\n\t\tconst { editor } = this;\n\t\tconst itemDefinitions = new Collection<ListDropdownItemDefinition>();\n\n\t\tconst optionsWithSerializedValues = options.map( option => {\n\t\t\tif ( isCustomImageResizeOption( option ) ) {\n\t\t\t\treturn {\n\t\t\t\t\t...option,\n\t\t\t\t\tvalueWithUnits: 'custom'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( !option.value ) {\n\t\t\t\treturn {\n\t\t\t\t\t...option,\n\t\t\t\t\tvalueWithUnits: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: `${ option.value }${ this._resizeUnit }`\n\t\t\t};\n\t\t} );\n\n\t\tfor ( const option of optionsWithSerializedValues ) {\n\t\t\tlet definition: ListDropdownItemDefinition | null = null;\n\n\t\t\tif ( editor.plugins.has( 'ImageCustomResizeUI' ) && isCustomImageResizeOption( option ) ) {\n\t\t\t\tconst customResizeUI = editor.plugins.get( 'ImageCustomResizeUI' );\n\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: new UIModel( {\n\t\t\t\t\t\tlabel: this._getOptionLabelValue( option ),\n\t\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tcustomResizeUI._showForm( this._resizeUnit );\n\t\t\t\t\t\t}\n\t\t\t\t\t} )\n\t\t\t\t};\n\n\t\t\t\tconst allDropdownValues = Object.values( optionsWithSerializedValues ).map( option => option.valueWithUnits );\n\n\t\t\t\tdefinition.model.bind( 'isOn' ).to(\n\t\t\t\t\tcommand, 'value',\n\t\t\t\t\tcommand, 'isEnabled',\n\t\t\t\t\tgetIsOnCustomButtonCallback( allDropdownValues )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: new UIModel( {\n\t\t\t\t\t\tcommandName: 'resizeImage',\n\t\t\t\t\t\tcommandValue: option.valueWithUnits,\n\t\t\t\t\t\tlabel: this._getOptionLabelValue( option ),\n\t\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null\n\t\t\t\t\t} )\n\t\t\t\t};\n\n\t\t\t\tdefinition.model.bind( 'isOn' ).to(\n\t\t\t\t\tcommand, 'value',\n\t\t\t\t\tcommand, 'isEnabled',\n\t\t\t\t\tgetIsOnButtonCallback( option.valueWithUnits )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdefinition.model.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\t\titemDefinitions.add( definition );\n\t\t}\n\n\t\treturn itemDefinitions;\n\t}\n}\n\n/**\n * A helper that checks if provided option triggers custom resize balloon.\n */\nfunction isCustomImageResizeOption( option: ImageResizeOption ) {\n\treturn option.value === 'custom';\n}\n\n/**\n * A helper function for setting the `isOn` state of buttons in value bindings.\n */\nfunction getIsOnButtonCallback( value: string | null ) {\n\treturn ( commandValue: ResizeImageCommand['value'], isEnabled: boolean ): boolean => {\n\t\tconst objectCommandValue = commandValue as null | undefined | { width: string | null };\n\n\t\tif ( objectCommandValue === undefined || !isEnabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( value === null && objectCommandValue === value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn objectCommandValue !== null && objectCommandValue.width === value;\n\t};\n}\n\n/**\n * A helper function for setting the `isOn` state of custom size button in value bindings.\n */\nfunction getIsOnCustomButtonCallback( allDropdownValues: Array<string | null> ) {\n\treturn ( commandValue: ResizeImageCommand['value'], isEnabled: boolean ): boolean => !allDropdownValues.some(\n\t\tdropdownValue => getIsOnButtonCallback( dropdownValue )( commandValue, isEnabled )\n\t);\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imageresizehandles\n */\n\nimport type { ModelElement, ViewElement } from '@ckeditor/ckeditor5-engine';\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { WidgetResize } from '@ckeditor/ckeditor5-widget';\nimport { ImageUtils } from '../imageutils.js';\n\nimport { ImageLoadObserver, type ImageLoadedEvent } from '../image/imageloadobserver.js';\nimport { type ResizeImageCommand } from './resizeimagecommand.js';\n\nconst RESIZABLE_IMAGES_CSS_SELECTOR =\n\t'figure.image.ck-widget > img,' +\n\t'figure.image.ck-widget > picture > img,' +\n\t'figure.image.ck-widget > a > img,' +\n\t'figure.image.ck-widget > a > picture > img,' +\n\t'span.image-inline.ck-widget > img,' +\n\t'span.image-inline.ck-widget > picture > img';\n\nconst RESIZED_IMAGE_CLASS = 'image_resized';\n\n/**\n * The image resize by handles feature.\n *\n * It adds the ability to resize each image using handles or manually by\n * {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n */\nexport class ImageResizeHandles extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ WidgetResize, ImageUtils ]> {\n\t\treturn [ WidgetResize, ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeHandles' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst command: ResizeImageCommand = this.editor.commands.get( 'resizeImage' )!;\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\tthis._setupResizerCreator();\n\t}\n\n\t/**\n\t * Attaches the listeners responsible for creating a resizer for each image, except for images inside the HTML embed preview.\n\t */\n\tprivate _setupResizerCreator(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\teditingView.addObserver( ImageLoadObserver );\n\n\t\tthis.listenTo<ImageLoadedEvent>( editingView.document, 'imageLoaded', ( evt, domEvent ) => {\n\t\t\t// The resizer must be attached only to images loaded by the `ImageInsert`, `ImageUpload` or `LinkImage` plugins.\n\t\t\tif ( !( domEvent.target as HTMLElement ).matches( RESIZABLE_IMAGES_CSS_SELECTOR ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst domConverter = editor.editing.view.domConverter;\n\t\t\tconst imageView = domConverter.domToView( domEvent.target as HTMLElement ) as ViewElement;\n\t\t\tconst widgetView = imageUtils.getImageWidgetFromImageView( imageView )!;\n\t\t\tlet resizer = this.editor.plugins.get( WidgetResize ).getResizerByViewElement( widgetView );\n\n\t\t\tif ( resizer ) {\n\t\t\t\t// There are rare cases when the image will be triggered multiple times for the same widget, e.g. when\n\t\t\t\t// the image's source was changed after upload (https://github.com/ckeditor/ckeditor5/pull/8108#issuecomment-708302992).\n\t\t\t\tresizer.redraw();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mapper = editor.editing.mapper;\n\t\t\tconst imageModel = mapper.toModelElement( widgetView )!;\n\n\t\t\tresizer = editor.plugins\n\t\t\t\t.get( WidgetResize )\n\t\t\t\t.attachTo( {\n\t\t\t\t\tunit: editor.config.get( 'image.resizeUnit' )!,\n\n\t\t\t\t\tmodelElement: imageModel,\n\t\t\t\t\tviewElement: widgetView,\n\t\t\t\t\teditor,\n\n\t\t\t\t\tgetHandleHost( domWidgetElement ) {\n\t\t\t\t\t\treturn domWidgetElement.querySelector( 'img' )!;\n\t\t\t\t\t},\n\t\t\t\t\tgetResizeHost() {\n\t\t\t\t\t\treturn domConverter.mapViewToDom( mapper.toViewElement( imageModel as ModelElement )! ) as HTMLElement;\n\t\t\t\t\t},\n\n\t\t\t\t\tisCentered() {\n\t\t\t\t\t\tconst imageStyle = imageModel.getAttribute( 'imageStyle' );\n\n\t\t\t\t\t\treturn imageStyle == 'alignCenter';\n\t\t\t\t\t},\n\n\t\t\t\t\tonCommit( newValue ) {\n\t\t\t\t\t\t// Get rid of the CSS class in case the command execution that follows is unsuccessful\n\t\t\t\t\t\t// (e.g. Track Changes can override it and the new dimensions will not apply). Otherwise,\n\t\t\t\t\t\t// the presence of the class and the absence of the width style will cause it to take 100%\n\t\t\t\t\t\t// of the horizontal space.\n\t\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\t\twriter.removeClass( RESIZED_IMAGE_CLASS, widgetView );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\teditor.execute( 'resizeImage', { width: newValue } );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tresizer.on( 'updateSize', () => {\n\t\t\t\tif ( !widgetView.hasClass( RESIZED_IMAGE_CLASS ) ) {\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( RESIZED_IMAGE_CLASS, widgetView );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tconst target = imageModel.name === 'imageInline' ? imageView : widgetView;\n\n\t\t\t\tif ( target.getStyle( 'height' ) ) {\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.removeStyle( 'height', target );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tresizer.bind( 'isEnabled' ).to( this );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/utils/getselectedimageeditornodes\n */\n\nimport type { ViewElement, ModelElement } from '@ckeditor/ckeditor5-engine';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\n\n/**\n * Finds model, view and DOM element for selected image element. Returns `null` if there is no image selected.\n *\n * @param editor Editor instance.\n * @internal\n */\nexport function getSelectedImageEditorNodes( editor: Editor ): ImageEditorNodes | null {\n\tconst { editing } = editor;\n\n\tconst imageUtils = editor.plugins.get( 'ImageUtils' );\n\tconst imageModelElement = imageUtils.getClosestSelectedImageElement( editor.model.document.selection );\n\n\tif ( !imageModelElement ) {\n\t\treturn null;\n\t}\n\n\tconst imageViewElement = editing.mapper.toViewElement( imageModelElement )!;\n\tconst imageDOMElement = editing.view.domConverter.mapViewToDom( imageViewElement )!;\n\n\treturn {\n\t\tmodel: imageModelElement,\n\t\tview: imageViewElement,\n\t\tdom: imageDOMElement\n\t};\n}\n\n/**\n * @internal;\n */\ntype ImageEditorNodes = {\n\tmodel: ModelElement;\n\tview: ViewElement;\n\tdom: HTMLElement;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/utils/getselectedimagewidthinunits\n */\n\nimport { Rect, _tryCastDimensionsToUnit, _tryParseDimensionWithUnit, type _DimensionWithUnit } from '@ckeditor/ckeditor5-utils';\n\nimport { calculateResizeHostAncestorWidth } from '@ckeditor/ckeditor5-widget';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport { getSelectedImageEditorNodes } from './getselectedimageeditornodes.js';\n\n/**\n * Returns image width in specified units. It is width of image after resize.\n *\n * \t* If image is not selected or command is disabled then `null` will be returned.\n * \t* If image is not fully loaded (and it is impossible to determine its natural size) then `null` will be returned.\n *\t* If `targetUnit` percentage is passed then it will return width percentage of image related to its accessors.\n *\n * @param editor Editor instance.\n * @param targetUnit Unit in which dimension will be returned.\n * @returns Parsed image width after resize (with unit).\n * @internal\n */\nexport function getSelectedImageWidthInUnits( editor: Editor, targetUnit: string ): _DimensionWithUnit | null {\n\tconst imageNodes = getSelectedImageEditorNodes( editor );\n\n\tif ( !imageNodes ) {\n\t\treturn null;\n\t}\n\n\tconst parsedResizedWidth = _tryParseDimensionWithUnit(\n\t\timageNodes.model.getAttribute( 'resizedWidth' ) as string || null\n\t);\n\n\tif ( !parsedResizedWidth ) {\n\t\treturn null;\n\t}\n\n\tif ( parsedResizedWidth.unit === targetUnit ) {\n\t\treturn parsedResizedWidth;\n\t}\n\n\tconst imageParentWidthPx = calculateResizeHostAncestorWidth( imageNodes.dom );\n\tconst imageHolderDimension = {\n\t\tunit: 'px',\n\t\tvalue: new Rect( imageNodes.dom ).width\n\t};\n\n\treturn _tryCastDimensionsToUnit( imageParentWidthPx, imageHolderDimension, targetUnit );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/ui/imagecustomresizeformview\n */\n\nimport {\n\tButtonView,\n\tFocusCycler,\n\tFormHeaderView,\n\tFormRowView,\n\tLabeledFieldView,\n\tView,\n\tViewCollection,\n\tcreateLabeledInputNumber,\n\tsubmitHandler,\n\ttype FocusableView,\n\ttype InputNumberView\n} from '@ckeditor/ckeditor5-ui';\n\nimport { FocusTracker, KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\nimport { IconPreviousArrow } from '@ckeditor/ckeditor5-icons';\n\nimport '../../../theme/imagecustomresizeform.css';\n\n/**\n * The ImageCustomResizeFormView class.\n *\n * @internal\n */\nexport class ImageCustomResizeFormView extends View {\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Resize unit shortcut.\n\t */\n\tpublic readonly unit: string;\n\n\t/**\n\t * The Back button view displayed in the header.\n\t */\n\tpublic backButtonView: ButtonView;\n\n\t/**\n\t * A button used to submit the form.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * An input with a label.\n\t */\n\tpublic labeledInput: LabeledFieldView<InputNumberView>;\n\n\t/**\n\t * A collection of child views.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A collection of views which can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * An array of form validators used by {@link #isValid}.\n\t */\n\tprivate readonly _validators: Array<ImageCustomResizeFormValidatorCallback>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale, unit: string, validators: Array<ImageCustomResizeFormValidatorCallback> ) {\n\t\tsuper( locale );\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.unit = unit;\n\n\t\t// Create buttons.\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\n\t\t// Create input fields.\n\t\tthis.labeledInput = this._createLabeledInputView();\n\n\t\tthis.children = this.createCollection( [ this._createHeaderView() ] );\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\tthis.labeledInput,\n\t\t\t\tthis.saveButtonView\n\t\t\t],\n\t\t\tclass: [\n\t\t\t\t'ck-form__row_with-submit',\n\t\t\t\t'ck-form__row_large-top-padding'\n\t\t\t]\n\t\t} ) );\n\n\t\tthis._focusables = new ViewCollection();\n\t\tthis._validators = validators;\n\n\t\t// Close the panel on esc key press when the **form has focus**.\n\t\tthis.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis.fire<ImageCustomResizeFormViewCancelEvent>( 'cancel' );\n\t\t\tcancel();\n\t\t} );\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form',\n\t\t\t\t\t'ck-image-custom-resize-form',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/40\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tconst childViews = [\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element! );\n\t\t} );\n\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates a back button view that cancels the form.\n\t */\n\tprivate _createBackButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst backButton = new ButtonView( this.locale );\n\n\t\tbackButton.set( {\n\t\t\tclass: 'ck-button-back',\n\t\t\tlabel: t( 'Back' ),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbackButton.delegate( 'execute' ).to( this, 'cancel' );\n\n\t\treturn backButton;\n\t}\n\n\t/**\n\t * Creates a save button view that resize the image.\n\t */\n\tprivate _createSaveButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst saveButton = new ButtonView( this.locale );\n\n\t\tsaveButton.set( {\n\t\t\tlabel: t( 'Save' ),\n\t\t\twithText: true,\n\t\t\ttype: 'submit',\n\t\t\tclass: 'ck-button-action ck-button-bold'\n\t\t} );\n\n\t\treturn saveButton;\n\t}\n\n\t/**\n\t * Creates a header view for the form.\n\t */\n\tprivate _createHeaderView(): FormHeaderView {\n\t\tconst t = this.locale!.t;\n\n\t\tconst header = new FormHeaderView( this.locale, {\n\t\t\tlabel: t( 'Image Resize' )\n\t\t} );\n\n\t\theader.children.add( this.backButtonView, 0 );\n\n\t\treturn header;\n\t}\n\n\t/**\n\t * Creates an input with a label.\n\t *\n\t * @returns Labeled field view instance.\n\t */\n\tprivate _createLabeledInputView(): LabeledFieldView<InputNumberView> {\n\t\tconst t = this.locale!.t;\n\t\tconst labeledInput = new LabeledFieldView<InputNumberView>( this.locale, createLabeledInputNumber );\n\n\t\tlabeledInput.label = t( 'Resize image (in %0)', this.unit );\n\t\tlabeledInput.class = 'ck-labeled-field-view_full-width';\n\t\tlabeledInput.fieldView.set( {\n\t\t\tstep: 0.1\n\t\t} );\n\n\t\treturn labeledInput;\n\t}\n\n\t/**\n\t * Validates the form and returns `false` when some fields are invalid.\n\t */\n\tpublic isValid(): boolean {\n\t\tthis.resetFormStatus();\n\n\t\tfor ( const validator of this._validators ) {\n\t\t\tconst errorText = validator( this );\n\n\t\t\t// One error per field is enough.\n\t\t\tif ( errorText ) {\n\t\t\t\t// Apply updated error.\n\t\t\t\tthis.labeledInput.errorText = errorText;\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Cleans up the supplementary error and information text of the {@link #labeledInput}\n\t * bringing them back to the state when the form has been displayed for the first time.\n\t *\n\t * See {@link #isValid}.\n\t */\n\tpublic resetFormStatus(): void {\n\t\tthis.labeledInput.errorText = null;\n\t}\n\n\t/**\n\t * The native DOM `value` of the input element of {@link #labeledInput}.\n\t */\n\tpublic get rawSize(): string | null {\n\t\tconst { element } = this.labeledInput.fieldView;\n\n\t\tif ( !element ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn element.value;\n\t}\n\n\t/**\n\t * Get numeric value of size. Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t */\n\tpublic get parsedSize(): number | null {\n\t\tconst { rawSize } = this;\n\n\t\tif ( rawSize === null ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst parsed = Number.parseFloat( rawSize );\n\n\t\tif ( Number.isNaN( parsed ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn parsed;\n\t}\n\n\t/**\n\t * Returns serialized image input size with unit.\n\t * Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t */\n\tpublic get sizeWithUnits(): string | null {\n\t\tconst { parsedSize, unit } = this;\n\n\t\tif ( parsedSize === null ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn `${ parsedSize }${ unit }`;\n\t}\n}\n\n/**\n * Callback used by {@link ~ImageCustomResizeFormView} to check if passed form value is valid.\n *\n * \t* If `undefined` is returned, it is assumed that the form value is correct and there is no error.\n * \t* If string is returned, it is assumed that the form value is incorrect and the returned string is displayed in the error label\n *\n * @internal\n */\nexport type ImageCustomResizeFormValidatorCallback = ( form: ImageCustomResizeFormView ) => string | undefined;\n\n/**\n * Fired when the form view is submitted.\n *\n * @eventName ~ImageCustomResizeFormView#submit\n */\nexport type ImageCustomResizeFormViewSubmitEvent = {\n\tname: 'submit';\n\targs: [];\n};\n\n/**\n * Fired when the form view is canceled.\n *\n * @eventName ~ImageCustomResizeFormView#cancel\n */\nexport type ImageCustomResizeFormViewCancelEvent = {\n\tname: 'cancel';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/utils/getselectedimagepossibleresizerange\n */\n\nimport type { Editor } from '@ckeditor/ckeditor5-core';\n\nimport { calculateResizeHostAncestorWidth } from '@ckeditor/ckeditor5-widget';\nimport { getSelectedImageEditorNodes } from './getselectedimageeditornodes.js';\nimport { _tryCastDimensionsToUnit, _tryParseDimensionWithUnit } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Returns min and max value of resize image in specified unit.\n *\n * @param editor Editor instance.\n * @param targetUnit Unit in which dimension will be returned.\n * @returns Possible resize range in numeric form.\n * @internal\n */\nexport function getSelectedImagePossibleResizeRange( editor: Editor, targetUnit: string ): PossibleResizeImageRange | null {\n\tconst imageNodes = getSelectedImageEditorNodes( editor );\n\n\tif ( !imageNodes ) {\n\t\treturn null;\n\t}\n\n\tconst imageParentWidthPx = calculateResizeHostAncestorWidth( imageNodes.dom );\n\tconst minimumImageWidth = _tryParseDimensionWithUnit( window.getComputedStyle( imageNodes.dom ).minWidth ) || {\n\t\tvalue: 1,\n\t\tunit: 'px'\n\t};\n\n\tconst lower = Math.max( 0.1, _tryCastDimensionsToUnit( imageParentWidthPx, minimumImageWidth, targetUnit ).value );\n\tconst upper = targetUnit === 'px' ? imageParentWidthPx : 100;\n\n\treturn {\n\t\tunit: targetUnit,\n\t\tlower,\n\t\tupper\n\t};\n}\n\n/**\n * @internal\n */\nexport type PossibleResizeImageRange = {\n\tunit: string;\n\tlower: number;\n\tupper: number;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imagecustomresizeui\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tContextualBalloon,\n\tclickOutsideHandler,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from '@ckeditor/ckeditor5-ui';\n\nimport { getBalloonPositionData } from '../image/ui/utils.js';\nimport { getSelectedImageWidthInUnits } from './utils/getselectedimagewidthinunits.js';\n\nimport {\n\tImageCustomResizeFormView,\n\ttype ImageCustomResizeFormValidatorCallback,\n\ttype ImageCustomResizeFormViewCancelEvent,\n\ttype ImageCustomResizeFormViewSubmitEvent\n} from './ui/imagecustomresizeformview.js';\nimport { getSelectedImagePossibleResizeRange } from './utils/getselectedimagepossibleresizerange.js';\n\n/**\n * The custom resize image UI plugin.\n *\n * The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport class ImageCustomResizeUI extends Plugin {\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon?: ContextualBalloon;\n\n\t/**\n\t * A form containing a textarea and buttons, used to change the `alt` text value.\n\t */\n\tprivate _form?: ImageCustomResizeFormView & ViewWithCssTransitionDisabler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ContextualBalloon ]> {\n\t\treturn [ ContextualBalloon ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCustomResizeUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see https://github.com/ckeditor/ckeditor5/issues/1341).\n\t\tif ( this._form ) {\n\t\t\tthis._form.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the {@link module:image/imageresize/ui/imagecustomresizeformview~ImageCustomResizeFormView}\n\t * form.\n\t */\n\tprivate _createForm( unit: string ): void {\n\t\tconst editor = this.editor;\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis._form = new ( CssTransitionDisablerMixin( ImageCustomResizeFormView ) )( editor.locale, unit, getFormValidators( editor ) );\n\n\t\t// Render the form so its #element is available for clickOutsideHandler.\n\t\tthis._form.render();\n\n\t\tthis.listenTo<ImageCustomResizeFormViewSubmitEvent>( this._form, 'submit', () => {\n\t\t\tif ( this._form!.isValid() ) {\n\t\t\t\teditor.execute( 'resizeImage', {\n\t\t\t\t\twidth: this._form!.sizeWithUnits\n\t\t\t\t} );\n\n\t\t\t\tthis._hideForm( true );\n\t\t\t}\n\t\t} );\n\n\t\t// Update balloon position when form error label is added .\n\t\tthis.listenTo( this._form.labeledInput, 'change:errorText', () => {\n\t\t\teditor.ui.update();\n\t\t} );\n\n\t\tthis.listenTo<ImageCustomResizeFormViewCancelEvent>( this._form, 'cancel', () => {\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [ this._balloon!.view.element! ],\n\t\t\tcallback: () => this._hideForm()\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the {@link #_form} in the {@link #_balloon}.\n\t *\n\t * @internal\n\t */\n\tpublic _showForm( unit: string ): void {\n\t\tif ( this._isVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._form ) {\n\t\t\tthis._createForm( unit );\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst labeledInput = this._form!.labeledInput;\n\n\t\tthis._form!.disableCssTransitions();\n\t\tthis._form!.resetFormStatus();\n\n\t\tif ( !this._isInBalloon ) {\n\t\t\tthis._balloon!.add( {\n\t\t\t\tview: this._form!,\n\t\t\t\tposition: getBalloonPositionData( editor )\n\t\t\t} );\n\t\t}\n\n\t\t// Make sure that each time the panel shows up, the field remains in sync with the value of\n\t\t// the command. If the user typed in the input, then canceled the balloon (`labeledInput#value`\n\t\t// stays unaltered) and re-opened it without changing the value of the command, they would see the\n\t\t// old value instead of the actual value of the command.\n\t\tconst currentParsedWidth = getSelectedImageWidthInUnits( editor, unit );\n\t\tconst initialInputValue = currentParsedWidth ? currentParsedWidth.value.toFixed( 1 ) : '';\n\t\tconst possibleRange = getSelectedImagePossibleResizeRange( editor, unit );\n\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element!.value = initialInputValue;\n\n\t\tif ( possibleRange ) {\n\t\t\tObject.assign( labeledInput.fieldView, {\n\t\t\t\tmin: possibleRange.lower.toFixed( 1 ),\n\t\t\t\tmax: Math.ceil( possibleRange.upper ).toFixed( 1 )\n\t\t\t} );\n\t\t}\n\n\t\tthis._form!.labeledInput.fieldView.select();\n\t\tthis._form!.enableCssTransitions();\n\t}\n\n\t/**\n\t * Removes the {@link #_form} from the {@link #_balloon}.\n\t *\n\t * @param focusEditable Controls whether the editing view is focused afterwards.\n\t */\n\tprivate _hideForm( focusEditable: boolean = false ): void {\n\t\tif ( !this._isInBalloon ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur the input element before removing it from DOM to prevent issues in some browsers.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\tif ( this._form!.focusTracker.isFocused ) {\n\t\t\tthis._form!.saveButtonView.focus();\n\t\t}\n\n\t\tthis._balloon!.remove( this._form! );\n\n\t\tif ( focusEditable ) {\n\t\t\tthis.editor.editing.view.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t */\n\tprivate get _isVisible(): boolean {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t */\n\tprivate get _isInBalloon(): boolean {\n\t\treturn !!this._balloon && this._balloon.hasView( this._form! );\n\t}\n}\n\n/**\n * Returns image resize form validation callbacks.\n *\n * @param editor Editor instance.\n */\nfunction getFormValidators( editor: Editor ): Array<ImageCustomResizeFormValidatorCallback> {\n\tconst t = editor.t;\n\n\treturn [\n\t\tform => {\n\t\t\tif ( form.rawSize!.trim() === '' ) {\n\t\t\t\treturn t( 'The value must not be empty.' );\n\t\t\t}\n\n\t\t\tif ( form.parsedSize === null ) {\n\t\t\t\treturn t( 'The value should be a plain number.' );\n\t\t\t}\n\t\t}\n\t];\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageResizeButtons } from './imageresize/imageresizebuttons.js';\nimport { ImageResizeEditing } from './imageresize/imageresizeediting.js';\nimport { ImageResizeHandles } from './imageresize/imageresizehandles.js';\nimport { ImageCustomResizeUI } from './imageresize/imagecustomresizeui.js';\n\nimport '../theme/imageresize.css';\n\n/**\n * The image resize plugin.\n *\n * It adds a possibility to resize each image using handles.\n */\nexport class ImageResize extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[\n\t\tImageResizeEditing,\n\t\tImageResizeHandles,\n\t\tImageCustomResizeUI,\n\t\tImageResizeButtons\n\t]> {\n\t\treturn [\n\t\t\tImageResizeEditing,\n\t\t\tImageResizeHandles,\n\t\t\tImageCustomResizeUI,\n\t\t\tImageResizeButtons\n\t\t];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResize' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/imagestylecommand\n */\n\nimport type { ModelElement } from '@ckeditor/ckeditor5-engine';\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport type { ImageStyleOptionDefinition } from '../imageconfig.js';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image style command. It is used to apply {@link module:image/imageconfig~ImageStyleConfig#options image style option}\n * to a selected image.\n *\n * **Note**: Executing this command may change the image model element if the desired style requires an image of a different\n * type. See {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand#execute} to learn more.\n */\nexport class ImageStyleCommand extends Command {\n\t/**\n\t * An object containing names of default style options for the inline and block images.\n\t * If there is no default style option for the given image type in the configuration,\n\t * the name will be `false`.\n\t */\n\tprivate _defaultStyles: Record<string, string | false>;\n\n\t/**\n\t * The styles handled by this command.\n\t */\n\tprivate _styles: Map<string, ImageStyleOptionDefinition>;\n\n\t/**\n\t * Creates an instance of the image style command. When executed, the command applies one of\n\t * {@link module:image/imageconfig~ImageStyleConfig#options style options} to the currently selected image.\n\t *\n\t * @param editor The editor instance.\n\t * @param styles The style options that this command supports.\n\t */\n\tconstructor( editor: Editor, styles: Array<ImageStyleOptionDefinition> ) {\n\t\tsuper( editor );\n\n\t\tthis._defaultStyles = {\n\t\t\timageBlock: false,\n\t\t\timageInline: false\n\t\t};\n\n\t\tthis._styles = new Map( styles.map( style => {\n\t\t\tif ( style.isDefault ) {\n\t\t\t\tfor ( const modelElementName of style.modelElements ) {\n\t\t\t\t\tthis._defaultStyles[ modelElementName ] = style.name;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn [ style.name, style ];\n\t\t} ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection )!;\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( !this.isEnabled ) {\n\t\t\tthis.value = false;\n\t\t} else if ( element.hasAttribute( 'imageStyle' ) ) {\n\t\t\tthis.value = element.getAttribute( 'imageStyle' );\n\t\t} else {\n\t\t\tthis.value = this._defaultStyles[ element.name ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether the style with the given name can be applied to the currently selected image.\n\t *\n\t * Applying a style may internally trigger a type conversion (block ↔ inline) when the style\n\t * supports only the opposite type. If that conversion would be rejected by the schema (for\n\t * example, converting an inline image to a block image inside `$inlineRoot`), this style\n\t * cannot be applied even though the command itself is enabled. UI components representing\n\t * individual styles should reflect this per-style state in their `isEnabled`.\n\t */\n\tpublic isStyleEnabled( styleName: string ): boolean {\n\t\tif ( !this.isEnabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection );\n\n\t\tif ( !element || !this._styles.has( styleName ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.shouldConvertImageType( styleName, element ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Applying this style requires a type conversion. The corresponding type command must be enabled\n\t\t// for the conversion to succeed.\n\t\tconst typeCommandName = imageUtils.isBlockImage( element ) ? 'imageTypeInline' : 'imageTypeBlock';\n\t\tconst typeCommand = this.editor.commands.get( typeCommandName );\n\n\t\treturn !!typeCommand && typeCommand.isEnabled;\n\t}\n\n\t/**\n\t * Executes the command and applies the style to the currently selected image:\n\t *\n\t * ```ts\n\t * editor.execute( 'imageStyle', { value: 'side' } );\n\t * ```\n\t *\n\t * **Note**: Executing this command may change the image model element if the desired style requires an image\n\t * of a different type. Learn more about {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements model element}\n\t * configuration for the style option.\n\t *\n\t * @param options.value The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t * The default is `true`.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value?: string; setImageSizes?: boolean } = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// If the requested style requires a type conversion that the schema does not allow,\n\t\t// skip execution entirely to avoid leaving the image with a style its current type does not support.\n\t\tif ( options.value && !this.isStyleEnabled( options.value ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst requestedStyle = options.value;\n\t\t\tconst { setImageSizes = true } = options;\n\n\t\t\tlet imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\n\t\t\t// Change the image type if a style requires it.\n\t\t\tif ( requestedStyle && this.shouldConvertImageType( requestedStyle, imageElement ) ) {\n\t\t\t\tthis.editor.execute( imageUtils.isBlockImage( imageElement ) ? 'imageTypeInline' : 'imageTypeBlock', { setImageSizes } );\n\n\t\t\t\t// Update the imageElement to the newly created image.\n\t\t\t\timageElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\t\t\t}\n\n\t\t\t// Default style means that there is no `imageStyle` attribute in the model.\n\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/147\n\t\t\tif ( !requestedStyle || this._styles.get( requestedStyle )!.isDefault ) {\n\t\t\t\twriter.removeAttribute( 'imageStyle', imageElement );\n\t\t\t} else {\n\t\t\t\twriter.setAttribute( 'imageStyle', requestedStyle, imageElement );\n\t\t\t}\n\n\t\t\tif ( setImageSizes ) {\n\t\t\t\timageUtils.setImageNaturalSizeAttributes( imageElement );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns `true` if requested style change would trigger the image type change.\n\t *\n\t * @param requestedStyle The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t * @param imageElement The image model element.\n\t */\n\tpublic shouldConvertImageType( requestedStyle: string, imageElement: ModelElement ): boolean {\n\t\tconst supportedTypes = this._styles.get( requestedStyle )!.modelElements;\n\n\t\treturn !supportedTypes.includes( imageElement.name );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/utils\n */\n\nimport { logWarning } from '@ckeditor/ckeditor5-utils';\nimport {\n\tIconObjectCenter,\n\tIconObjectFullWidth,\n\tIconObjectInline,\n\tIconObjectInlineLeft,\n\tIconObjectInlineRight,\n\tIconObjectLeft,\n\tIconObjectRight\n} from '@ckeditor/ckeditor5-icons';\nimport type { Editor, PluginCollection } from '@ckeditor/ckeditor5-core';\nimport type { ImageStyleConfig, ImageStyleDropdownDefinition, ImageStyleOptionDefinition } from '../imageconfig.js';\n\n/**\n * Default image style options provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n * configuration.\n *\n * There are available 5 styles focused on formatting:\n *\n * * **`'alignLeft'`** aligns the inline or block image to the left and wraps it with the text using the `image-style-align-left` class,\n * * **`'alignRight'`** aligns the inline or block image to the right and wraps it with the text using the `image-style-align-right` class,\n * * **`'alignCenter'`** centers the block image using the `image-style-align-center` class,\n * * **`'alignBlockLeft'`** aligns the block image to the left using the `image-style-block-align-left` class,\n * * **`'alignBlockRight'`** aligns the block image to the right using the `image-style-block-align-right` class,\n *\n * and 3 semantic styles:\n *\n * * **`'inline'`** is an inline image without any CSS class,\n * * **`'block'`** is a block image without any CSS class,\n * * **`'side'`** is a block image styled with the `image-style-side` CSS class.\n *\n * @internal\n */\nexport const DEFAULT_OPTIONS: Record<string, ImageStyleOptionDefinition> = {\n\t// This style represents an image placed in the line of text.\n\tget inline() {\n\t\treturn {\n\t\t\tname: 'inline',\n\t\t\ttitle: 'In line',\n\t\t\ticon: IconObjectInline,\n\t\t\tmodelElements: [ 'imageInline' ],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the left and wrapped with text.\n\tget alignLeft() {\n\t\treturn {\n\t\t\tname: 'alignLeft',\n\t\t\ttitle: 'Left aligned image',\n\t\t\ticon: IconObjectInlineLeft,\n\t\t\tmodelElements: [ 'imageBlock', 'imageInline' ],\n\t\t\tclassName: 'image-style-align-left'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the left.\n\tget alignBlockLeft() {\n\t\treturn {\n\t\t\tname: 'alignBlockLeft',\n\t\t\ttitle: 'Left aligned image',\n\t\t\ticon: IconObjectLeft,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-block-align-left'\n\t\t};\n\t},\n\n\t// This style represents a centered image.\n\tget alignCenter() {\n\t\treturn {\n\t\t\tname: 'alignCenter',\n\t\t\ttitle: 'Centered image',\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-align-center'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the right and wrapped with text.\n\tget alignRight() {\n\t\treturn {\n\t\t\tname: 'alignRight',\n\t\t\ttitle: 'Right aligned image',\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [ 'imageBlock', 'imageInline' ],\n\t\t\tclassName: 'image-style-align-right'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the right.\n\tget alignBlockRight() {\n\t\treturn {\n\t\t\tname: 'alignBlockRight',\n\t\t\ttitle: 'Right aligned image',\n\t\t\ticon: IconObjectRight,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-block-align-right'\n\t\t};\n\t},\n\n\t// This option is equal to the situation when no style is applied.\n\tget block() {\n\t\treturn {\n\t\t\tname: 'block',\n\t\t\ttitle: 'Centered image',\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\n\t// This represents a side image.\n\tget side() {\n\t\treturn {\n\t\t\tname: 'side',\n\t\t\ttitle: 'Side image',\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-side'\n\t\t};\n\t}\n};\n\n/**\n * Default image style icons provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n * configuration.\n *\n * See {@link module:image/imageconfig~ImageStyleOptionDefinition#icon} to learn more.\n *\n * There are 7 default icons available: `'full'`, `'left'`, `'inlineLeft'`, `'center'`, `'right'`, `'inlineRight'`, and `'inline'`.\n *\n * @internal\n */\nexport const DEFAULT_ICONS: Record<string, string> = /* #__PURE__ */ ( () => ( {\n\tfull: IconObjectFullWidth,\n\tleft: IconObjectLeft,\n\tright: IconObjectRight,\n\tcenter: IconObjectCenter,\n\tinlineLeft: IconObjectInlineLeft,\n\tinlineRight: IconObjectInlineRight,\n\tinline: IconObjectInline\n} ) )();\n\n/**\n * Default drop-downs provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#toolbar}\n * configuration. The drop-downs are containers for the {@link module:image/imageconfig~ImageStyleConfig#options image style options}.\n *\n * If both of the `ImageEditing` plugins are loaded, there are 2 predefined drop-downs available:\n *\n * * **`'imageStyle:wrapText'`**, which contains the `alignLeft` and `alignRight` options, that is,\n * those that wraps the text around the image,\n * * **`'imageStyle:breakText'`**, which contains the `alignBlockLeft`, `alignCenter` and `alignBlockRight` options, that is,\n * those that breaks the text around the image.\n *\n * @internal\n */\nexport const DEFAULT_DROPDOWN_DEFINITIONS: Array<ImageStyleDropdownDefinition> = [ {\n\tname: 'imageStyle:wrapText',\n\ttitle: 'Wrap text',\n\tdefaultItem: 'imageStyle:alignLeft',\n\titems: [ 'imageStyle:alignLeft', 'imageStyle:alignRight' ]\n}, {\n\tname: 'imageStyle:breakText',\n\ttitle: 'Break text',\n\tdefaultItem: 'imageStyle:block',\n\titems: [ 'imageStyle:alignBlockLeft', 'imageStyle:block', 'imageStyle:alignBlockRight' ]\n} ];\n\n/**\n * Returns the style with a given `name` from an array of styles.\n *\n * @internal\n */\nexport function getStyleDefinitionByName(\n\tname: string,\n\tstyles: Array<ImageStyleOptionDefinition>\n): ImageStyleOptionDefinition | undefined {\n\tfor ( const style of styles ) {\n\t\tif ( style.name === name ) {\n\t\t\treturn style;\n\t\t}\n\t}\n}\n\n/**\n * Returns a list of the normalized and validated image style options.\n *\n * @param config\n * @param config.isInlinePluginLoaded\n * Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n * @param config.isBlockPluginLoaded\n * Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n * @param config.configuredStyles\n * The image styles configuration provided in the image styles {@link module:image/imageconfig~ImageConfig#styles configuration}\n * as a default or custom value.\n * @returns\n * * Each of options contains a complete icon markup.\n * * The image style options not supported by any of the loaded plugins are filtered out.\n */\nfunction normalizeStyles( config: {\n\tisInlinePluginLoaded: boolean;\n\tisBlockPluginLoaded: boolean;\n\tconfiguredStyles: ImageStyleConfig;\n}\n): Array<ImageStyleOptionDefinition> {\n\tconst configuredStyles = config.configuredStyles.options || [];\n\n\tconst styles = configuredStyles\n\t\t.map( arrangement => normalizeDefinition( arrangement ) )\n\t\t.filter( arrangement => isValidOption( arrangement, config ) );\n\n\treturn styles;\n}\n\n/**\n * Returns the default image styles configuration depending on the loaded image editing plugins.\n *\n * @param isInlinePluginLoaded\n * Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n *\n * @param isBlockPluginLoaded\n * Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n *\n * @returns\n * It returns an object with the lists of the image style options and groups defined as strings related to the\n * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS default options}\n */\nfunction getDefaultStylesConfiguration( isBlockPluginLoaded: boolean, isInlinePluginLoaded: boolean ): ImageStyleConfig {\n\tif ( isBlockPluginLoaded && isInlinePluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [\n\t\t\t\t'inline', 'alignLeft', 'alignRight',\n\t\t\t\t'alignCenter', 'alignBlockLeft', 'alignBlockRight',\n\t\t\t\t'block', 'side'\n\t\t\t]\n\t\t};\n\t} else if ( isBlockPluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [ 'block', 'side' ]\n\t\t};\n\t} else if ( isInlinePluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [ 'inline', 'alignLeft', 'alignRight' ]\n\t\t};\n\t}\n\n\treturn {};\n}\n\n/**\n * Returns a list of the available predefined drop-downs' definitions depending on the loaded image editing plugins.\n */\nfunction getDefaultDropdownDefinitions( pluginCollection: PluginCollection<Editor> ): Array<ImageStyleDropdownDefinition> {\n\tif ( pluginCollection.has( 'ImageBlockEditing' ) && pluginCollection.has( 'ImageInlineEditing' ) ) {\n\t\treturn [ ...DEFAULT_DROPDOWN_DEFINITIONS ];\n\t} else {\n\t\treturn [];\n\t}\n}\n\n/**\n * Normalizes an image style option or group provided in the {@link module:image/imageconfig~ImageConfig#styles}\n * and returns it in a {@link module:image/imageconfig~ImageStyleOptionDefinition}/\n */\nfunction normalizeDefinition( definition: string | Partial<ImageStyleOptionDefinition> & { name: string } ): ImageStyleOptionDefinition {\n\tif ( typeof definition === 'string' ) {\n\t\t// Just the name of the style has been passed, but none of the defaults.\n\t\tif ( !DEFAULT_OPTIONS[ definition ] ) {\n\t\t\t// Normalize the style anyway to prevent errors.\n\t\t\tdefinition = { name: definition };\n\t\t}\n\t\t// Just the name of the style has been passed and it's one of the defaults, just use it.\n\t\t// Clone the style to avoid overriding defaults.\n\t\telse {\n\t\t\tdefinition = { ...DEFAULT_OPTIONS[ definition ] };\n\t\t}\n\t} else {\n\t\t// If an object style has been passed and if the name matches one of the defaults,\n\t\t// extend it with defaults – the user wants to customize a default style.\n\t\t// Note: Don't override the user–defined style object, clone it instead.\n\t\tdefinition = extendStyle( DEFAULT_OPTIONS[ definition.name ], definition );\n\t}\n\n\t// If an icon is defined as a string and correspond with a name\n\t// in default icons, use the default icon provided by the plugin.\n\tif ( typeof definition.icon === 'string' ) {\n\t\tdefinition.icon = DEFAULT_ICONS[ definition.icon ] || definition.icon;\n\t}\n\n\treturn definition as ImageStyleOptionDefinition;\n}\n\n/**\n * Checks if the image style option is valid:\n * * if it has the modelElements fields defined and filled,\n * * if the defined modelElements are supported by any of the loaded image editing plugins.\n * It also displays a console warning these conditions are not met.\n *\n * @param option image style option\n */\nfunction isValidOption(\n\toption: ImageStyleOptionDefinition,\n\t{ isBlockPluginLoaded, isInlinePluginLoaded }: { isBlockPluginLoaded: boolean; isInlinePluginLoaded: boolean }\n): boolean {\n\tconst { modelElements, name } = option;\n\n\tif ( !modelElements || !modelElements.length || !name ) {\n\t\twarnInvalidStyle( { style: option } );\n\n\t\treturn false;\n\t} else {\n\t\tconst supportedElements = [ isBlockPluginLoaded ? 'imageBlock' : null, isInlinePluginLoaded ? 'imageInline' : null ];\n\n\t\t// Check if the option is supported by any of the loaded plugins.\n\t\tif ( !modelElements.some( elementName => supportedElements.includes( elementName ) ) ) {\n\t\t\t/**\n\t\t\t * In order to work correctly, each image style {@link module:image/imageconfig~ImageStyleOptionDefinition option}\n\t\t\t * requires specific model elements (also: types of images) to be supported by the editor.\n\t\t\t *\n\t\t\t * Model element names to which the image style option can be applied are defined in the\n\t\t\t * {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements} property of the style option\n\t\t\t * definition.\n\t\t\t *\n\t\t\t * Explore the warning in the console to find out precisely which option is not supported and which editor plugins\n\t\t\t * are missing. Make sure these plugins are loaded in your editor to get this image style option working.\n\t\t\t *\n\t\t\t * @error image-style-missing-dependency\n\t\t\t * @param {string} style The name of the unsupported option.\n\t\t\t * @param {Array.<string>} missingPlugins The names of the plugins one of which has to be loaded for the particular option.\n\t\t\t */\n\t\t\tlogWarning( 'image-style-missing-dependency', {\n\t\t\t\tstyle: option,\n\t\t\t\tmissingPlugins: modelElements.map( name => name === 'imageBlock' ? 'ImageBlockEditing' : 'ImageInlineEditing' )\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Extends the default style with a style provided by the developer.\n * Note: Don't override the custom–defined style object, clone it instead.\n */\nfunction extendStyle( source: ImageStyleOptionDefinition, style: Partial<ImageStyleOptionDefinition> ): ImageStyleOptionDefinition {\n\tconst extendedStyle: Record<string, any> = { ...style };\n\n\tfor ( const prop in source ) {\n\t\tif ( !Object.prototype.hasOwnProperty.call( style, prop ) ) {\n\t\t\textendedStyle[ prop ] = source[ prop as keyof typeof source ];\n\t\t}\n\t}\n\n\treturn extendedStyle as ImageStyleOptionDefinition;\n}\n\n/**\n * Displays a console warning with the 'image-style-configuration-definition-invalid' error.\n */\nfunction warnInvalidStyle( info: object ): void {\n\t/**\n\t * The image style definition provided in the configuration is invalid.\n\t *\n\t * Please make sure the definition implements properly one of the following:\n\t *\n\t * * {@link module:image/imageconfig~ImageStyleOptionDefinition image style option definition},\n\t * * {@link module:image/imageconfig~ImageStyleDropdownDefinition image style dropdown definition}\n\t *\n\t * @error image-style-configuration-definition-invalid\n\t * @param {object} info The information about the invalid definition.\n\t */\n\tlogWarning( 'image-style-configuration-definition-invalid', info );\n}\n\n/**\n * @internal\n */\nexport const utils: {\n\tnormalizeStyles: typeof normalizeStyles;\n\tgetDefaultStylesConfiguration: typeof getDefaultStylesConfiguration;\n\tgetDefaultDropdownDefinitions: typeof getDefaultDropdownDefinitions;\n\twarnInvalidStyle: typeof warnInvalidStyle;\n} = {\n\tnormalizeStyles,\n\tgetDefaultStylesConfiguration,\n\tgetDefaultDropdownDefinitions,\n\twarnInvalidStyle\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/converters\n */\n\nimport { isEqual } from 'es-toolkit/compat';\nimport type {\n\tDowncastAttributeEvent,\n\tModelElement,\n\tModelItem,\n\tUpcastConversionApi,\n\tUpcastElementEvent,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\nimport { first, type GetCallback } from '@ckeditor/ckeditor5-utils';\nimport type { ImageStyleOptionDefinition } from '../imageconfig.js';\nimport { DEFAULT_OPTIONS, getStyleDefinitionByName } from './utils.js';\n\n/**\n * Returns a converter for the `imageStyle` attribute. It can be used for adding, changing and removing the attribute.\n *\n * @param styles An array containing available image style options.\n * @returns A model-to-view attribute converter.\n * @internal\n */\nexport function modelToViewStyleAttribute( styles: Array<ImageStyleOptionDefinition> ): GetCallback<DowncastAttributeEvent> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if there is class name associated with given value.\n\t\tconst newStyle = getStyleDefinitionByName( data.attributeNewValue as string, styles );\n\t\tconst oldStyle = getStyleDefinitionByName( data.attributeOldValue as string, styles );\n\n\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item as ModelElement )!;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\tif ( oldStyle ) {\n\t\t\tviewWriter.removeClass( oldStyle.className!, viewElement );\n\t\t}\n\n\t\tif ( newStyle ) {\n\t\t\tviewWriter.addClass( newStyle.className!, viewElement );\n\t\t}\n\t};\n}\n\n/**\n * Returns a view-to-model converter converting image CSS classes to a proper value in the model.\n *\n * @param styles Image style options for which the converter is created.\n * @returns A view-to-model converter.\n * @internal\n */\nexport function viewToModelStyleAttribute( styles: Array<ImageStyleOptionDefinition> ): GetCallback<UpcastElementEvent> {\n\t// Convert only non–default styles.\n\tconst nonDefaultStyles: Record<string, Array<ImageStyleOptionDefinition>> = {\n\t\timageInline: styles.filter( style => !style.isDefault && style.modelElements.includes( 'imageInline' ) ),\n\t\timageBlock: styles.filter( style => !style.isDefault && style.modelElements.includes( 'imageBlock' ) )\n\t};\n\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( !data.modelRange ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewElement = data.viewItem;\n\t\tconst modelImageElement = first( data.modelRange.getItems() );\n\n\t\t// Run this converter only if an image has been found in the model.\n\t\t// In some cases it may not be found (for example if we run this on a figure with different type than image).\n\t\tif ( !modelImageElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// ...and the `imageStyle` attribute is allowed for that element, otherwise stop conversion early.\n\t\tif ( !conversionApi.schema.checkAttribute( modelImageElement, 'imageStyle' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert styles one by one.\n\t\tfor ( const style of nonDefaultStyles[ ( modelImageElement as ModelElement ).name ] ) {\n\t\t\t// Try to consume class corresponding with the style.\n\t\t\tif ( conversionApi.consumable.consume( viewElement, { classes: style.className } ) ) {\n\t\t\t\t// And convert this style to model attribute.\n\t\t\t\tconversionApi.writer.setAttribute( 'imageStyle', style.name, modelImageElement );\n\t\t\t}\n\t\t}\n\n\t\t// Normalize float styles (alignLeft, alignRight).\n\t\tnormalizeFloatToDefinitionStyle( conversionApi, viewElement, modelImageElement, styles );\n\t};\n}\n\n/**\n * A helper function that attempts to convert the `float` CSS style into a corresponding `imageStyle` attribute.\n *\n * It maps `float: left` and `float: right` to standard alignment styles (e.g. `'alignLeft'`, `'alignRight'`),\n * but only if the target style definition matches one of the {@link module:image/image/utils~DEFAULT_OPTIONS default options}.\n */\nfunction normalizeFloatToDefinitionStyle(\n\tconversionApi: UpcastConversionApi,\n\tviewElement: ViewElement,\n\tmodelElement: ModelItem,\n\tstyles: Array<ImageStyleOptionDefinition>\n) {\n\tif ( !conversionApi.consumable.test( viewElement, { styles: [ 'float' ] } ) ) {\n\t\treturn;\n\t}\n\n\tlet floatStyleName: string | null = null;\n\n\tswitch ( viewElement.getStyle( 'float' ) ) {\n\t\tcase 'left':\n\t\t\tfloatStyleName = 'alignLeft';\n\t\t\tbreak;\n\n\t\tcase 'right':\n\t\t\tfloatStyleName = 'alignRight';\n\t\t\tbreak;\n\t}\n\n\tif ( !floatStyleName ) {\n\t\treturn;\n\t}\n\n\tconst definition = getStyleDefinitionByName( floatStyleName, styles );\n\n\tif ( !definition ) {\n\t\treturn;\n\t}\n\n\tconst builtinDefinition = DEFAULT_OPTIONS[ definition.name ];\n\n\tif ( !isEqual( definition, builtinDefinition ) ) {\n\t\treturn;\n\t}\n\n\tconversionApi.writer.setAttribute( 'imageStyle', floatStyleName, modelElement );\n\tconversionApi.consumable.consume( viewElement, { styles: [ 'float' ] } );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/imagestyleediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport type { ModelBlockAlignmentAttributesMapping, ModelElement, UpcastElementEvent } from '@ckeditor/ckeditor5-engine';\n\nimport { ImageStyleCommand } from './imagestylecommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport { getStyleDefinitionByName, utils } from './utils.js';\nimport { viewToModelStyleAttribute, modelToViewStyleAttribute } from './converters.js';\nimport type { ImageStyleOptionDefinition } from '../imageconfig.js';\n\n/**\n * The image style engine plugin. It sets the default configuration, creates converters and registers\n * {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.\n */\nexport class ImageStyleEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyleEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * It contains a list of the normalized and validated style options.\n\t *\n\t * * Each option contains a complete icon markup.\n\t * * The style options not supported by any of the loaded image editing plugins (\n\t * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} or\n\t * {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`}) are filtered out.\n\t *\n\t * @internal\n\t * @readonly\n\t */\n\tpublic normalizedStyles?: Array<ImageStyleOptionDefinition>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst isBlockPluginLoaded = editor.plugins.has( 'ImageBlockEditing' );\n\t\tconst isInlinePluginLoaded = editor.plugins.has( 'ImageInlineEditing' );\n\n\t\teditor.config.define( 'image.styles', utils.getDefaultStylesConfiguration( isBlockPluginLoaded, isInlinePluginLoaded ) );\n\n\t\tthis.normalizedStyles = utils.normalizeStyles( {\n\t\t\tconfiguredStyles: editor.config.get( 'image.styles' )!,\n\t\t\tisBlockPluginLoaded,\n\t\t\tisInlinePluginLoaded\n\t\t} );\n\n\t\tthis._setupConversion( isBlockPluginLoaded, isInlinePluginLoaded );\n\t\tthis._setupPostFixer();\n\n\t\t// Register imageStyle command.\n\t\teditor.commands.add( 'imageStyle', new ImageStyleCommand( editor, this.normalizedStyles ) );\n\t}\n\n\t/**\n\t * Sets the editor conversion taking the presence of\n\t * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}\n\t * and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.\n\t */\n\tprivate _setupConversion( isBlockPluginLoaded: boolean, isInlinePluginLoaded: boolean ): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tconst modelToViewConverter = modelToViewStyleAttribute( this.normalizedStyles! );\n\t\tconst viewToModelConverter = viewToModelStyleAttribute( this.normalizedStyles! );\n\n\t\teditor.editing.downcastDispatcher.on( 'attribute:imageStyle', modelToViewConverter );\n\t\teditor.data.downcastDispatcher.on( 'attribute:imageStyle', modelToViewConverter );\n\n\t\t// Allow imageStyle attribute in image and imageInline.\n\t\t// We could call it 'style' but https://github.com/ckeditor/ckeditor5-engine/issues/559.\n\t\tif ( isBlockPluginLoaded ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: 'imageStyle' } );\n\t\t\tschema.setAttributeProperties( 'imageStyle', {\n\t\t\t\tisFormatting: true,\n\t\t\t\tblockAlignment: getBlockAlignmentAttributeProperty( this.normalizedStyles! )\n\t\t\t} );\n\n\t\t\t// Converter for figure element from view to model.\n\t\t\teditor.data.upcastDispatcher.on<UpcastElementEvent>( 'element:figure', viewToModelConverter, { priority: 'low' } );\n\t\t}\n\n\t\tif ( isInlinePluginLoaded ) {\n\t\t\tschema.extend( 'imageInline', { allowAttributes: 'imageStyle' } );\n\t\t\tschema.setAttributeProperties( 'imageStyle', { isFormatting: true } );\n\n\t\t\t// Converter for the img element from view to model.\n\t\t\teditor.data.upcastDispatcher.on( 'element:img', viewToModelConverter, { priority: 'low' } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).\n\t */\n\tprivate _setupPostFixer(): void {\n\t\tconst editor = this.editor;\n\t\tconst document = editor.model.document;\n\n\t\tconst imageUtils = editor.plugins.get( ImageUtils );\n\t\tconst stylesMap = new Map( this.normalizedStyles!.map( style => [ style.name, style ] ) );\n\n\t\t// Make sure that style attribute is valid for the image type.\n\t\tdocument.registerPostFixer( writer => {\n\t\t\tlet changed = false;\n\n\t\t\tfor ( const change of document.differ.getChanges() ) {\n\t\t\t\tif ( change.type == 'insert' || change.type == 'attribute' && change.attributeKey == 'imageStyle' ) {\n\t\t\t\t\tlet element = change.type == 'insert' ? change.position.nodeAfter! : change.range.start.nodeAfter!;\n\n\t\t\t\t\tif ( element && element.is( 'element', 'paragraph' ) && element.childCount > 0 ) {\n\t\t\t\t\t\telement = element.getChild( 0 )!;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !imageUtils.isImage( element as ModelElement ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst imageStyle = element.getAttribute( 'imageStyle' ) as string | undefined;\n\n\t\t\t\t\tif ( !imageStyle ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst imageStyleDefinition = stylesMap.get( imageStyle );\n\n\t\t\t\t\tif ( !imageStyleDefinition || !imageStyleDefinition.modelElements.includes( ( element as ModelElement ).name ) ) {\n\t\t\t\t\t\twriter.removeAttribute( 'imageStyle', element );\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t} );\n\t}\n}\n\n/**\n * Returns a mapping of generic alignment values ('left', 'right', 'center') to their corresponding\n * block image alignment style names.\n *\n * This function is particularly useful for scenarios like `td[align]` conversion, which needs to know\n * exactly how to map a generic `align` attribute to the correct alignment value. This mapping is necessary\n * because the actual alignment value can differ depending on the target element type (e.g., block images\n * vs. tables).\n *\n * @param styles An array of available image style option definitions.\n * @returns A record mapping basic alignments to their valid, block-specific style names.\n */\nfunction getBlockAlignmentAttributeProperty( styles: Array<ImageStyleOptionDefinition> ): ModelBlockAlignmentAttributesMapping {\n\tconst pickFirstSupported = ( ...names: Array<string> ) => {\n\t\tconst found = names\n\t\t\t.map( name => getStyleDefinitionByName( name, styles ) )\n\t\t\t.find( definition => definition?.modelElements.includes( 'imageBlock' ) );\n\n\t\tif ( !found ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn {\n\t\t\tisDefault: !!found.isDefault,\n\t\t\tvalue: found.name\n\t\t};\n\t};\n\n\tconst candidates: Record<string, Array<string>> = {\n\t\tleft: [ 'alignBlockLeft', 'alignLeft' ],\n\t\tright: [ 'alignBlockRight', 'alignRight' ],\n\t\tcenter: [ 'block', 'alignCenter' ]\n\t};\n\n\treturn Object.fromEntries(\n\t\tObject.entries( candidates )\n\t\t\t.map( ( [ align, names ] ) => [ align, pickFirstSupported( ...names ) ] )\n\t\t\t.filter( ( [ , resolved ] ) => resolved !== undefined )\n\t);\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/imagestyleui\n */\n\nimport { Plugin, type PluginDependenciesOf, type Command } from '@ckeditor/ckeditor5-core';\nimport { ButtonView, createDropdown, addToolbarToDropdown, SplitButtonView } from '@ckeditor/ckeditor5-ui';\nimport { isObject, identity } from 'es-toolkit/compat';\nimport { ImageStyleEditing } from './imagestyleediting.js';\nimport { utils } from './utils.js';\nimport type { ImageStyleDropdownDefinition, ImageStyleOptionDefinition } from '../imageconfig.js';\nimport { type ImageStyleCommand } from './imagestylecommand.js';\n\nimport '../../theme/imagestyle.css';\n\n/**\n * The image style UI plugin.\n *\n * It registers buttons corresponding to the {@link module:image/imageconfig~ImageConfig#styles} configuration.\n * It also registers the {@link module:image/imagestyle/utils#DEFAULT_DROPDOWN_DEFINITIONS default drop-downs} and the\n * custom drop-downs defined by the developer in the {@link module:image/imageconfig~ImageConfig#toolbar} configuration.\n */\nexport class ImageStyleUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageStyleEditing ]> {\n\t\treturn [ ImageStyleEditing ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyleUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns the default localized style titles provided by the plugin.\n\t *\n\t * The following localized titles corresponding with\n\t * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS} are available:\n\t *\n\t * * `'Wrap text'`,\n\t * * `'Break text'`,\n\t * * `'In line'`,\n\t * * `'Full size image'`,\n\t * * `'Side image'`,\n\t * * `'Left aligned image'`,\n\t * * `'Centered image'`,\n\t * * `'Right aligned image'`\n\t */\n\tpublic get localizedDefaultStylesTitles(): Record<string, string> {\n\t\tconst t = this.editor.t;\n\n\t\treturn {\n\t\t\t'Wrap text': t( 'Wrap text' ),\n\t\t\t'Break text': t( 'Break text' ),\n\t\t\t'In line': t( 'In line' ),\n\t\t\t'Full size image': t( 'Full size image' ),\n\t\t\t'Side image': t( 'Side image' ),\n\t\t\t'Left aligned image': t( 'Left aligned image' ),\n\t\t\t'Centered image': t( 'Centered image' ),\n\t\t\t'Right aligned image': t( 'Right aligned image' )\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst plugins = this.editor.plugins;\n\t\tconst toolbarConfig = this.editor.config.get( 'image.toolbar' ) || [];\n\t\tconst imageStyleEditing: ImageStyleEditing = plugins.get( 'ImageStyleEditing' );\n\n\t\tconst definedStyles = translateStyles(\n\t\t\timageStyleEditing.normalizedStyles!,\n\t\t\tthis.localizedDefaultStylesTitles\n\t\t);\n\n\t\tfor ( const styleConfig of definedStyles ) {\n\t\t\tthis._createButton( styleConfig );\n\t\t}\n\n\t\tconst definedDropdowns = translateStyles(\n\t\t\t[\n\t\t\t\t...toolbarConfig.filter( isObject ) as Array<ImageStyleDropdownDefinition>,\n\t\t\t\t...utils.getDefaultDropdownDefinitions( plugins )\n\t\t\t],\n\t\t\tthis.localizedDefaultStylesTitles\n\t\t);\n\n\t\tfor ( const dropdownConfig of definedDropdowns ) {\n\t\t\tthis._createDropdown( dropdownConfig, definedStyles );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a dropdown and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t */\n\tprivate _createDropdown( dropdownConfig: ImageStyleDropdownDefinition, definedStyles: Array<ImageStyleOptionDefinition> ): void {\n\t\tconst factory = this.editor.ui.componentFactory;\n\n\t\tfactory.add( dropdownConfig.name, locale => {\n\t\t\tlet defaultButton: ButtonView | undefined;\n\n\t\t\tconst { defaultItem, items, title } = dropdownConfig;\n\t\t\tconst buttonViews = items\n\t\t\t\t.filter( itemName => definedStyles.find( ( { name } ) => getUIComponentName( name ) === itemName ) )\n\t\t\t\t.map( buttonName => {\n\t\t\t\t\tconst button = factory.create( buttonName ) as ButtonView;\n\n\t\t\t\t\tif ( buttonName === defaultItem ) {\n\t\t\t\t\t\tdefaultButton = button;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn button;\n\t\t\t\t} );\n\n\t\t\tif ( items.length !== buttonViews.length ) {\n\t\t\t\tutils.warnInvalidStyle( { dropdown: dropdownConfig } );\n\t\t\t}\n\n\t\t\tconst dropdownView = createDropdown( locale, SplitButtonView );\n\t\t\tconst splitButtonView = dropdownView.buttonView as SplitButtonView;\n\t\t\tconst splitButtonViewArrow = splitButtonView.arrowView;\n\n\t\t\taddToolbarToDropdown( dropdownView, buttonViews, { enableActiveItemFocusOnDropdownOpen: true } );\n\n\t\t\tsplitButtonView.set( {\n\t\t\t\tlabel: getDropdownButtonTitle( title, defaultButton!.label! ),\n\t\t\t\tclass: null,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tsplitButtonViewArrow.unbind( 'label' );\n\t\t\tsplitButtonViewArrow.set( {\n\t\t\t\tlabel: title\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'icon' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n\t\t\t\tconst index = areOn.findIndex( identity );\n\n\t\t\t\treturn ( index < 0 ) ? defaultButton!.icon : buttonViews[ index ].icon;\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'label' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n\t\t\t\tconst index = areOn.findIndex( identity );\n\n\t\t\t\treturn getDropdownButtonTitle( title, ( index < 0 ) ? defaultButton!.label! : buttonViews[ index ].label! );\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'isOn' ).toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) );\n\n\t\t\tsplitButtonView.bind( 'class' )\n\t\t\t\t.toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) ? 'ck-splitbutton_flatten' : undefined );\n\n\t\t\tsplitButtonView.on( 'execute', () => {\n\t\t\t\tif ( !buttonViews.some( ( { isOn } ) => isOn ) ) {\n\t\t\t\t\tdefaultButton!.fire( 'execute' );\n\t\t\t\t} else {\n\t\t\t\t\tdropdownView.isOpen = !dropdownView.isOpen;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' )\n\t\t\t\t.toMany( buttonViews, 'isEnabled', ( ...areEnabled ) => areEnabled.some( identity ) );\n\n\t\t\t// Focus the editable after executing the command.\n\t\t\t// Overrides a default behaviour where the focus is moved to the dropdown button.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/12125.\n\t\t\tthis.listenTo( dropdownView, 'execute', () => {\n\t\t\t\tthis.editor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a button and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t */\n\tprivate _createButton( buttonConfig: ImageStyleOptionDefinition ): void {\n\t\tconst buttonName = buttonConfig.name;\n\n\t\tthis.editor.ui.componentFactory.add( getUIComponentName( buttonName ), locale => {\n\t\t\tconst editor = this.editor;\n\t\t\tconst command: ImageStyleCommand = editor.commands.get( 'imageStyle' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: buttonConfig.title,\n\t\t\t\ticon: buttonConfig.icon,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Per-style applicability lives on the command (`isStyleEnabled`). The binding observes\n\t\t\t// every command whose state can affect that answer (`imageStyle` itself plus the type\n\t\t\t// commands that may be triggered internally) so the button re-evaluates on each refresh.\n\t\t\tconst reactiveSources: Array<Command> = [ command ];\n\t\t\tconst imageTypeBlock = editor.commands.get( 'imageTypeBlock' );\n\t\t\tconst imageTypeInline = editor.commands.get( 'imageTypeInline' );\n\n\t\t\tif ( imageTypeBlock ) {\n\t\t\t\treactiveSources.push( imageTypeBlock );\n\t\t\t}\n\t\t\tif ( imageTypeInline ) {\n\t\t\t\treactiveSources.push( imageTypeInline );\n\t\t\t}\n\n\t\t\tview.bind( 'isEnabled' ).toMany( reactiveSources, 'isEnabled', () => command.isStyleEnabled( buttonName ) );\n\t\t\tview.bind( 'isOn' ).to( command, 'value', value => value === buttonName );\n\t\t\tview.on( 'execute', this._executeCommand.bind( this, buttonName ) );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\tprivate _executeCommand( name: string ): void {\n\t\tthis.editor.execute( 'imageStyle', { value: name } );\n\t\tthis.editor.editing.view.focus();\n\t}\n}\n\n/**\n * Returns the translated `title` from the passed styles array.\n */\nfunction translateStyles<T extends ImageStyleOptionDefinition | ImageStyleDropdownDefinition>(\n\tstyles: Array<T>,\n\ttitles: Record<string, string>\n): Array<T> {\n\tfor ( const style of styles ) {\n\t\t// Localize the titles of the styles, if a title corresponds with\n\t\t// a localized default provided by the plugin.\n\t\tif ( titles[ style.title! ] ) {\n\t\t\tstyle.title = titles[ style.title! ];\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n/**\n * Returns the image style component name with the \"imageStyle:\" prefix.\n */\nfunction getUIComponentName( name: string ): string {\n\treturn `imageStyle:${ name }`;\n}\n\n/**\n * Returns title for the splitbutton containing the dropdown title and default action item title.\n */\nfunction getDropdownButtonTitle( dropdownTitle: string | undefined, buttonTitle: string ): string {\n\treturn ( dropdownTitle ? dropdownTitle + ': ' : '' ) + buttonTitle;\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageStyleEditing } from './imagestyle/imagestyleediting.js';\nimport { ImageStyleUI } from './imagestyle/imagestyleui.js';\n\n/**\n * The image style plugin.\n *\n * For a detailed overview of the image styles feature, check the {@glink features/images/images-styles documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n * * {@link module:image/imagestyle/imagestyleediting~ImageStyleEditing},\n * * {@link module:image/imagestyle/imagestyleui~ImageStyleUI}\n *\n * It provides a default configuration, which can be extended or overwritten.\n * Read more about the {@link module:image/imageconfig~ImageConfig#styles image styles configuration}.\n */\nexport class ImageStyle extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageStyleEditing, ImageStyleUI ]> {\n\t\treturn [ ImageStyleEditing, ImageStyleUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyle' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetoolbar\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { WidgetToolbarRepository } from '@ckeditor/ckeditor5-widget';\n\nimport { ImageUtils } from './imageutils.js';\nimport type { ImageStyleDropdownDefinition } from './imageconfig.js';\n\nimport { isObject } from 'es-toolkit/compat';\n\n/**\n * The image toolbar plugin. It creates and manages the image toolbar (the toolbar displayed when an image is selected).\n *\n * For an overview, check the {@glink features/images/images-overview#image-contextual-toolbar image contextual toolbar} documentation.\n *\n * Instances of toolbar components (e.g. buttons) are created using the editor's\n * {@link module:ui/componentfactory~ComponentFactory component factory}\n * based on the {@link module:image/imageconfig~ImageConfig#toolbar `image.toolbar` configuration option}.\n *\n * The toolbar uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport class ImageToolbar extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ WidgetToolbarRepository, ImageUtils ]> {\n\t\treturn [ WidgetToolbarRepository, ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageToolbar' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\twidgetToolbarRepository.register( 'image', {\n\t\t\tariaLabel: t( 'Image toolbar' ),\n\t\t\titems: normalizeDeclarativeConfig( editor.config.get( 'image.toolbar' ) || [] ),\n\t\t\tgetRelatedElement: selection => imageUtils.getClosestSelectedImageWidget( selection )!\n\t\t} );\n\t}\n}\n\n/**\n * Convert the dropdown definitions to their keys registered in the ComponentFactory.\n * The registration precess should be handled by the plugin which handles the UI of a particular feature.\n */\nfunction normalizeDeclarativeConfig( config: Array<string | ImageStyleDropdownDefinition> ): Array<string> {\n\treturn config.map( item => isObject( item ) ? item.name : item );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/pictureediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport { ImageEditing } from './image/imageediting.js';\nimport { ImageUtils } from './imageutils.js';\nimport { downcastSourcesAttribute, upcastPicture } from './image/converters.js';\nimport type { ImageUploadEditing, ImageUploadCompleteEvent } from './imageupload/imageuploadediting.js';\n\n/**\n * This plugin enables the [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture) element support in the editor.\n *\n * * It enables the `sources` model attribute on `imageBlock` and `imageInline` model elements\n * (brought by {@link module:image/imageblock~ImageBlock} and {@link module:image/imageinline~ImageInline}, respectively).\n * * It translates the `sources` model element to the view (also: data) structure that may look as follows:\n *\n * ```html\n * <p>Inline image using picture:\n * \t<picture>\n * \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n * \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n * \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n * \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n * \t</picture>\n * </p>\n *\n * <p>Block image using picture:</p>\n * <figure class=\"image\">\n * \t<picture>\n * \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n * \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n * \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n * \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n * \t</picture>\n * \t<figcaption>Caption of the image</figcaption>\n * </figure>\n * ```\n *\n * **Note:** The value of the `sources` {@glink framework/architecture/editing-engine#changing-the-model model attribute}\n * in both examples equals:\n *\n * ```css\n * [\n * \t{\n * \t\tmedia: '(min-width: 800px)',\n * \t\tsrcset: 'image-large.webp',\n * \t\ttype: 'image/webp'\n * \t},\n * \t{\n * \t\tmedia: '(max-width: 800px)',\n * \t\tsrcset: 'image-small.webp',\n * \t\ttype: 'image/webp'\n * \t}\n * ]\n * ```\n *\n * * It integrates with the {@link module:image/imageupload~ImageUpload} plugin so images uploaded in the editor\n * automatically render using `<picture>` if the {@glink features/images/image-upload/image-upload upload adapter}\n * supports image sources and provides neccessary data.\n *\n * @private\n */\nexport class PictureEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageEditing, ImageUtils ]> {\n\t\treturn [ ImageEditing, ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PictureEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.model.schema.extend( 'imageBlock', {\n\t\t\t\tallowAttributes: [ 'sources' ]\n\t\t\t} );\n\t\t}\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.model.schema.extend( 'imageInline', {\n\t\t\t\tallowAttributes: [ 'sources' ]\n\t\t\t} );\n\t\t}\n\n\t\tthis._setupConversion();\n\t\tthis._setupImageUploadEditingIntegration();\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting images using the `<picture>` view element\n\t * and the model `sources` attribute.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'upcast' ).add( upcastPicture( imageUtils ) );\n\t\tconversion.for( 'downcast' ).add( downcastSourcesAttribute( imageUtils ) );\n\t}\n\n\t/**\n\t * Makes it possible for uploaded images to get the `sources` model attribute and the `<picture>...</picture>`\n\t * view structure out-of-the-box if relevant data is provided along the\n\t * {@link module:image/imageupload/imageuploadediting~ImageUploadEditing#event:uploadComplete} event.\n\t */\n\tprivate _setupImageUploadEditingIntegration(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( !editor.plugins.has( 'ImageUploadEditing' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageUploadEditing: ImageUploadEditing = editor.plugins.get( 'ImageUploadEditing' );\n\n\t\tthis.listenTo<ImageUploadCompleteEvent>(\n\t\t\timageUploadEditing,\n\t\t\t'uploadComplete',\n\t\t\t( evt, { imageElement, data } ) => {\n\t\t\t\tconst sources = data.sources;\n\n\t\t\t\tif ( !sources ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.setAttributes( {\n\t\t\t\t\t\tsources\n\t\t\t\t\t}, imageElement );\n\t\t\t\t} );\n\t\t\t} );\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/image/utils.ts","../src/imageutils.ts","../src/autoimage.ts","../src/imagetextalternative/imagetextalternativecommand.ts","../src/imagetextalternative/imagetextalternativeediting.ts","../src/imagetextalternative/ui/textalternativeformview.ts","../src/image/ui/utils.ts","../src/imagetextalternative/imagetextalternativeui.ts","../src/imagetextalternative.ts","../src/image/converters.ts","../src/image/imageloadobserver.ts","../src/image/insertimagecommand.ts","../src/image/replaceimagesourcecommand.ts","../src/image/imageediting.ts","../src/imagesizeattributes.ts","../src/image/imagetypecommand.ts","../src/image/imageplaceholder.ts","../src/image/imageblockediting.ts","../src/imageinsert/ui/imageinsertformview.ts","../src/imageinsert/imageinsertui.ts","../src/imageblock.ts","../src/image/imageinlineediting.ts","../src/imageinline.ts","../src/image.ts","../src/imagecaption/imagecaptionutils.ts","../src/imagecaption/toggleimagecaptioncommand.ts","../src/imagecaption/imagecaptionediting.ts","../src/imagecaption/imagecaptionui.ts","../src/imagecaption.ts","../src/imageupload/utils.ts","../src/imageupload/imageuploadui.ts","../src/imageupload/imageuploadprogress.ts","../src/imageupload/uploadimagecommand.ts","../src/imageupload/imageuploadediting.ts","../src/imageupload.ts","../src/imageinsert/ui/imageinserturlview.ts","../src/imageinsert/imageinsertviaurlui.ts","../src/imageinsertviaurl.ts","../src/imageinsert.ts","../src/imageresize/resizeimagecommand.ts","../src/imageresize/imageresizeediting.ts","../src/imageresize/imageresizebuttons.ts","../src/imageresize/imageresizehandles.ts","../src/imageresize/utils/getselectedimageeditornodes.ts","../src/imageresize/utils/getselectedimagewidthinunits.ts","../src/imageresize/ui/imagecustomresizeformview.ts","../src/imageresize/utils/getselectedimagepossibleresizerange.ts","../src/imageresize/imagecustomresizeui.ts","../src/imageresize.ts","../src/imagestyle/imagestylecommand.ts","../src/imagestyle/utils.ts","../src/imagestyle/converters.ts","../src/imagestyle/imagestyleediting.ts","../src/imagestyle/imagestyleui.ts","../src/imagestyle.ts","../src/imagetoolbar.ts","../src/pictureediting.ts"],"names":["isParagraphable"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from \"@ckeditor/ckeditor5-core\";\nimport { Clipboard, ClipboardPipeline } from \"@ckeditor/ckeditor5-clipboard\";\nimport { ModelElement, ModelLivePosition, ModelLiveRange, Observer, ViewUpcastWriter, _isParagraphableModelNode, enableViewPlaceholder } from \"@ckeditor/ckeditor5-engine\";\nimport { Undo } from \"@ckeditor/ckeditor5-undo\";\nimport { Delete } from \"@ckeditor/ckeditor5-typing\";\nimport { CKEditorError, Collection, DomEmitterMixin, FocusTracker, KeystrokeHandler, Rect, _tryCastDimensionsToUnit, _tryParseDimensionWithUnit, env, first, global, logWarning, toArray } from \"@ckeditor/ckeditor5-utils\";\nimport { Widget, WidgetResize, WidgetToolbarRepository, calculateResizeHostAncestorWidth, findOptimalInsertionRange, isWidget, toWidget, toWidgetEditable } from \"@ckeditor/ckeditor5-widget\";\nimport { BalloonPanelView, ButtonView, CollapsibleView, ContextualBalloon, CssTransitionDisablerMixin, Dialog, DropdownButtonView, FileDialogButtonView, FocusCycler, FormHeaderView, FormRowView, LabeledFieldView, MenuBarMenuListItemButtonView, MenuBarMenuListItemFileDialogButtonView, MenuBarMenuListItemView, MenuBarMenuListView, MenuBarMenuView, Notification, SplitButtonView, UIModel, View, ViewCollection, addListToDropdown, addToolbarToDropdown, clickOutsideHandler, createDropdown, createLabeledInputNumber, createLabeledInputText, submitHandler } from \"@ckeditor/ckeditor5-ui\";\nimport { IconCaption, IconImage, IconImageUpload, IconImageUrl, IconObjectCenter, IconObjectFullWidth, IconObjectInline, IconObjectInlineLeft, IconObjectInlineRight, IconObjectLeft, IconObjectRight, IconObjectSizeCustom, IconObjectSizeFull, IconObjectSizeLarge, IconObjectSizeMedium, IconObjectSizeSmall, IconPreviousArrow, IconTextAlternative } from \"@ckeditor/ckeditor5-icons\";\nimport { FileRepository } from \"@ckeditor/ckeditor5-upload\";\nimport { identity, isEqual, isObject } from \"es-toolkit/compat\";\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/utils\n*/\n/**\n* Creates a view element representing the inline image.\n*\n* ```html\n* <span class=\"image-inline\"><img></img></span>\n* ```\n*\n* Note that `alt` and `src` attributes are converted separately, so they are not included.\n*\n* @internal\n*/\nfunction createInlineImageViewElement(writer) {\n\treturn writer.createContainerElement(\"span\", { class: \"image-inline\" }, writer.createEmptyElement(\"img\"));\n}\n/**\n* Creates a view element representing the block image.\n*\n* ```html\n* <figure class=\"image\"><img></img></figure>\n* ```\n*\n* Note that `alt` and `src` attributes are converted separately, so they are not included.\n*\n* @internal\n*/\nfunction createBlockImageViewElement(writer) {\n\treturn writer.createContainerElement(\"figure\", { class: \"image\" }, [writer.createEmptyElement(\"img\"), writer.createSlot(\"children\")]);\n}\n/**\n* A function returning a `MatcherPattern` for a particular type of View images.\n*\n* @deprecated\n* @internal\n* @param matchImageType The type of created image.\n*/\nfunction getImgViewElementMatcher(editor, matchImageType) {\n\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\tconst areBothImagePluginsLoaded = editor.plugins.has(\"ImageInlineEditing\") && editor.plugins.has(\"ImageBlockEditing\");\n\treturn (element) => {\n\t\tif (!imageUtils.isInlineImageView(element)) return null;\n\t\tif (!areBothImagePluginsLoaded) return getPositiveMatchPattern(element);\n\t\tif (getViewImageType(element, imageUtils) !== matchImageType) return null;\n\t\treturn getPositiveMatchPattern(element);\n\t};\n\tfunction getPositiveMatchPattern(element) {\n\t\tconst pattern = { name: true };\n\t\tif (element.hasAttribute(\"src\")) pattern.attributes = [\"src\"];\n\t\treturn pattern;\n\t}\n}\n/**\n* Resolves the model image type (`'imageBlock'` or `'imageInline'`) that a given `<img>` view element represents,\n* based purely on its view structure.\n*\n* An `<img>` is treated as a block image when it has a `display: block` style or is wrapped in a block image figure\n* (`<figure class=\"image\">`, also `<figure class=\"image\"><a>...</a></figure>` added by the `LinkImage` plugin).\n* Otherwise it is treated as an inline image.\n*\n* Note that this only reflects the view representation - it does not check whether the resolved type is allowed by the\n* schema at the insertion position.\n*\n* @internal\n* @param element The `<img>` view element to resolve the type for.\n* @param imageUtils The `ImageUtils` plugin instance.\n*/\nfunction getViewImageType(element, imageUtils) {\n\treturn element.getStyle(\"display\") == \"block\" || element.findAncestor(imageUtils.isBlockImageView) ? \"imageBlock\" : \"imageInline\";\n}\n/**\n* Checks whether the given image type can be placed at the specified position - either directly (or after hoisting\n* to an allowed ancestor) or, for inline images, wrapped in an auto-created paragraph.\n*\n* This is the predicate that decides whether a block image may land at a position or must degrade to an inline image\n* (for example, inside an `$inlineRoot` that disallows block content) and, symmetrically, whether an inline image may\n* become a block image. `isParagraphable()` is always `false` for `imageBlock` (a block object never fits in a\n* paragraph), so the auto-paragraph relaxation only applies to the inline target.\n*\n* @internal\n* @param schema The model schema to check against.\n* @param position The position at which the image type should be placed.\n* @param imageType The image type to check.\n*/\nfunction isImageTypePlaceable(schema, position, imageType) {\n\treturn !!schema.findAllowedParent(position, imageType) || _isParagraphableModelNode(position, imageType, schema);\n}\n/**\n* Considering the current model selection, it returns the name of the model image element\n* (`'imageBlock'` or `'imageInline'`) that will make most sense from the UX perspective if a new\n* image was inserted (also: uploaded, dropped, pasted) at that selection.\n*\n* The assumption is that inserting images into empty blocks or on other block widgets should\n* produce block images. Inline images should be inserted in other cases, e.g. in paragraphs\n* that already contain some text.\n*\n* @internal\n*/\nfunction determineImageTypeForInsertionAtSelection(schema, selection) {\n\tconst firstBlock = first(selection.getSelectedBlocks());\n\tif (!firstBlock || schema.isObject(firstBlock)) return \"imageBlock\";\n\tif (firstBlock.isEmpty && firstBlock.name != \"listItem\") return \"imageBlock\";\n\treturn \"imageInline\";\n}\n/**\n* Returns parsed value of the size, but only if it contains unit: px.\n*\n* @internal\n*/\nfunction getSizeValueIfInPx(size) {\n\tif (size && size.endsWith(\"px\")) return parseInt(size);\n\treturn null;\n}\n/**\n* Returns true if both styles (width and height) are set.\n*\n* If both image styles: width & height are set, they will override the image width & height attributes in the\n* browser. In this case, the image looks the same as if these styles were applied to attributes instead of styles.\n* That's why we can upcast these styles to width & height attributes instead of resizedWidth and resizedHeight.\n*\n* @internal\n*/\nfunction widthAndHeightStylesAreBothSet(viewElement) {\n\tconst widthStyle = getSizeValueIfInPx(viewElement.getStyle(\"width\"));\n\tconst heightStyle = getSizeValueIfInPx(viewElement.getStyle(\"height\"));\n\treturn !!(widthStyle && heightStyle);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\nconst IMAGE_WIDGETS_CLASSES_MATCH_REGEXP = /^(image|image-inline)$/;\n/**\n* A set of helpers related to images.\n*/\nvar ImageUtils = class extends Plugin {\n\t/**\n\t* DOM Emitter.\n\t*/\n\t_domEmitter = new (DomEmitterMixin())();\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUtils\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* Checks if the provided model element is an `image` or `imageInline`.\n\t*/\n\tisImage(modelElement) {\n\t\treturn this.isInlineImage(modelElement) || this.isBlockImage(modelElement);\n\t}\n\t/**\n\t* Checks if the provided view element represents an inline image.\n\t*\n\t* Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t*/\n\tisInlineImageView(element) {\n\t\treturn !!element && element.is(\"element\", \"img\");\n\t}\n\t/**\n\t* Checks if the provided view element represents a block image.\n\t*\n\t* Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t*/\n\tisBlockImageView(element) {\n\t\treturn !!element && element.is(\"element\", \"figure\") && element.hasClass(\"image\");\n\t}\n\t/**\n\t* Handles inserting single file. This method unifies image insertion using {@link module:widget/utils~findOptimalInsertionRange}\n\t* method.\n\t*\n\t* ```ts\n\t* const imageUtils = editor.plugins.get( 'ImageUtils' );\n\t*\n\t* imageUtils.insertImage( { src: 'path/to/image.jpg' } );\n\t* ```\n\t*\n\t* @param attributes Attributes of the inserted image.\n\t* This method filters out the attributes which are disallowed by the {@link module:engine/model/schema~ModelSchema}.\n\t* @param selectable Place to insert the image. If not specified,\n\t* the {@link module:widget/utils~findOptimalInsertionRange} logic will be applied for the block images\n\t* and `model.document.selection` for the inline images.\n\t*\n\t* **Note**: If `selectable` is passed, this helper will not be able to set selection attributes (such as `linkHref`)\n\t* and apply them to the new image. In this case, make sure all selection attributes are passed in `attributes`.\n\t*\n\t* @param imageType Image type of inserted image. If not specified,\n\t* it will be determined automatically depending of editor config or place of the insertion.\n\t* @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t* The default is `true`.\n\t* @return The inserted model image element.\n\t*/\n\tinsertImage(attributes = {}, selectable = null, imageType = null, options = {}) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst determinedImageType = determineImageTypeForInsertion(editor, selectable || selection, imageType);\n\t\tattributes = {\n\t\t\t...Object.fromEntries(selection.getAttributes()),\n\t\t\t...attributes\n\t\t};\n\t\tfor (const attributeName in attributes) if (!model.schema.checkAttribute(determinedImageType, attributeName)) delete attributes[attributeName];\n\t\treturn model.change((writer) => {\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tconst imageElement = writer.createElement(determinedImageType, attributes);\n\t\t\tmodel.insertObject(imageElement, selectable, null, {\n\t\t\t\tsetSelection: \"on\",\n\t\t\t\tfindOptimalPosition: !selectable && determinedImageType != \"imageInline\" ? \"auto\" : void 0\n\t\t\t});\n\t\t\tif (imageElement.parent) {\n\t\t\t\tif (setImageSizes) this.setImageNaturalSizeAttributes(imageElement);\n\t\t\t\treturn imageElement;\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\t/**\n\t* Reads original image sizes and sets them as `width` and `height`.\n\t*\n\t* The `src` attribute may not be available if the user is using an upload adapter. In such a case,\n\t* this method is called again after the upload process is complete and the `src` attribute is available.\n\t*/\n\tsetImageNaturalSizeAttributes(imageElement) {\n\t\tconst src = imageElement.getAttribute(\"src\");\n\t\tif (!src) return;\n\t\tif (imageElement.getAttribute(\"width\") || imageElement.getAttribute(\"height\")) return;\n\t\tthis.editor.model.change((writer) => {\n\t\t\tconst img = new global.window.Image();\n\t\t\tthis._domEmitter.listenTo(img, \"load\", () => {\n\t\t\t\tif (!imageElement.getAttribute(\"width\") && !imageElement.getAttribute(\"height\")) this.editor.model.enqueueChange(writer.batch, (writer) => {\n\t\t\t\t\twriter.setAttribute(\"width\", img.naturalWidth, imageElement);\n\t\t\t\t\twriter.setAttribute(\"height\", img.naturalHeight, imageElement);\n\t\t\t\t});\n\t\t\t\tthis._domEmitter.stopListening(img, \"load\");\n\t\t\t});\n\t\t\timg.src = src;\n\t\t});\n\t}\n\t/**\n\t* Returns an image widget editing view element if one is selected or is among the selection's ancestors.\n\t*/\n\tgetClosestSelectedImageWidget(selection) {\n\t\tconst selectionPosition = selection.getFirstPosition();\n\t\tif (!selectionPosition) return null;\n\t\tconst viewElement = selection.getSelectedElement();\n\t\tif (viewElement && this.isImageWidget(viewElement)) return viewElement;\n\t\tlet parent = selectionPosition.parent;\n\t\twhile (parent) {\n\t\t\tif (parent.is(\"element\") && this.isImageWidget(parent)) return parent;\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn null;\n\t}\n\t/**\n\t* Returns a image model element if one is selected or is among the selection's ancestors.\n\t*/\n\tgetClosestSelectedImageElement(selection) {\n\t\tconst selectedElement = selection.getSelectedElement();\n\t\treturn this.isImage(selectedElement) ? selectedElement : selection.getFirstPosition().findAncestor(\"imageBlock\");\n\t}\n\t/**\n\t* Returns an image widget editing view based on the passed image view.\n\t*/\n\tgetImageWidgetFromImageView(imageView) {\n\t\treturn imageView.findAncestor({ classes: IMAGE_WIDGETS_CLASSES_MATCH_REGEXP });\n\t}\n\t/**\n\t* Checks if image can be inserted at current model selection.\n\t*\n\t* @internal\n\t*/\n\tisImageAllowed() {\n\t\tconst selection = this.editor.model.document.selection;\n\t\treturn isImageAllowedInParent(this.editor, selection) && isNotInsideImage(selection);\n\t}\n\t/**\n\t* Converts a given {@link module:engine/view/element~ViewElement} to an image widget:\n\t* * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to recognize the image widget\n\t* element.\n\t* * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n\t*\n\t* @param writer An instance of the view writer.\n\t* @param label The element's label. It will be concatenated with the image `alt` attribute if one is present.\n\t*/\n\ttoImageWidget(viewElement, writer, label) {\n\t\twriter.setCustomProperty(\"image\", true, viewElement);\n\t\tconst labelCreator = () => {\n\t\t\tconst altText = this.findViewImgElement(viewElement).getAttribute(\"alt\");\n\t\t\treturn altText ? `${altText} ${label}` : label;\n\t\t};\n\t\treturn toWidget(viewElement, writer, { label: labelCreator });\n\t}\n\t/**\n\t* Checks if a given view element is an image widget.\n\t*/\n\tisImageWidget(viewElement) {\n\t\treturn !!viewElement.getCustomProperty(\"image\") && isWidget(viewElement);\n\t}\n\t/**\n\t* Checks if the provided model element is an `image`.\n\t*/\n\tisBlockImage(modelElement) {\n\t\treturn !!modelElement && modelElement.is(\"element\", \"imageBlock\");\n\t}\n\t/**\n\t* Checks if the provided model element is an `imageInline`.\n\t*/\n\tisInlineImage(modelElement) {\n\t\treturn !!modelElement && modelElement.is(\"element\", \"imageInline\");\n\t}\n\t/**\n\t* Get the view `<img>` from another view element, e.g. a widget (`<figure class=\"image\">`), a link (`<a>`).\n\t*\n\t* The `<img>` can be located deep in other elements, so this helper performs a deep tree search.\n\t*/\n\tfindViewImgElement(figureView) {\n\t\tif (this.isInlineImageView(figureView)) return figureView;\n\t\tconst editingView = this.editor.editing.view;\n\t\tfor (const { item } of editingView.createRangeIn(figureView)) if (this.isInlineImageView(item)) return item;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tthis._domEmitter.stopListening();\n\t\treturn super.destroy();\n\t}\n};\n/**\n* Checks if image is allowed by schema in optimal insertion parent.\n*/\nfunction isImageAllowedInParent(editor, selection) {\n\tif (determineImageTypeForInsertion(editor, selection, null) == \"imageBlock\") return isBlockImageAllowedAtInsertion(editor.model, selection);\n\treturn editor.model.schema.checkChild(selection.focus, \"imageInline\");\n}\n/**\n* Checks if selection is not placed inside an image (e.g. its caption).\n*/\nfunction isNotInsideImage(selection) {\n\treturn [...selection.focus.getAncestors()].every((ancestor) => !ancestor.is(\"element\", \"imageBlock\"));\n}\n/**\n* Returns a node that will be used to insert image with `model.insertContent`.\n*/\nfunction getInsertImageParent(selection, model) {\n\tconst parent = findOptimalInsertionRange(selection, model).start.parent;\n\tif (parent.isEmpty && !parent.is(\"rootElement\")) return parent.parent;\n\treturn parent;\n}\n/**\n* Checks whether a block image is allowed by the schema at the optimal insertion point for the given selectable\n* (e.g. it is not allowed inside `$inlineRoot` or any other inline-only container).\n*/\nfunction isBlockImageAllowedAtInsertion(model, selectable) {\n\tconst insertionParent = getInsertImageParent(selectable.is(\"position\") ? model.createSelection(selectable) : selectable, model);\n\treturn model.schema.checkChild(insertionParent, \"imageBlock\");\n}\n/**\n* Determine image element type name depending on editor config or place of insertion.\n*\n* @param imageType Image element type name. Used to force return of provided element name,\n* but only if there is proper plugin enabled.\n*/\nfunction determineImageTypeForInsertion(editor, selectable, imageType) {\n\tconst schema = editor.model.schema;\n\tconst configImageInsertType = editor.config.get(\"image.insert.type\");\n\tif (!editor.plugins.has(\"ImageBlockEditing\")) return \"imageInline\";\n\tif (!editor.plugins.has(\"ImageInlineEditing\")) return \"imageBlock\";\n\tif (imageType) return imageType;\n\tif (!isBlockImageAllowedAtInsertion(editor.model, selectable)) return \"imageInline\";\n\tif (configImageInsertType === \"inline\") return \"imageInline\";\n\tif (configImageInsertType !== \"auto\") return \"imageBlock\";\n\tif (selectable.is(\"selection\")) return determineImageTypeForInsertionAtSelection(schema, selectable);\n\treturn schema.checkChild(selectable, \"imageInline\") ? \"imageInline\" : \"imageBlock\";\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/autoimage\n*/\nconst IMAGE_URL_REGEXP = 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));\n/**\n* The auto-image plugin. It recognizes image links in the pasted content and embeds\n* them shortly after they are injected into the document.\n*/\nvar AutoImage = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tClipboard,\n\t\t\tImageUtils,\n\t\t\tUndo,\n\t\t\tDelete\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"AutoImage\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* The paste–to–embed `setTimeout` ID. Stored as a property to allow\n\t* cleaning of the timeout.\n\t*/\n\t_timeoutId;\n\t/**\n\t* The position where the `<imageBlock>` element will be inserted after the timeout,\n\t* determined each time a new content is pasted into the document.\n\t*/\n\t_positionToInsert;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis._timeoutId = null;\n\t\tthis._positionToInsert = null;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", () => {\n\t\t\tconst firstRange = modelDocument.selection.getFirstRange();\n\t\t\tconst leftLivePosition = ModelLivePosition.fromPosition(firstRange.start);\n\t\t\tleftLivePosition.stickiness = \"toPrevious\";\n\t\t\tconst rightLivePosition = ModelLivePosition.fromPosition(firstRange.end);\n\t\t\trightLivePosition.stickiness = \"toNext\";\n\t\t\tmodelDocument.once(\"change:data\", () => {\n\t\t\t\tthis._embedImageBetweenPositions(leftLivePosition, rightLivePosition);\n\t\t\t\tleftLivePosition.detach();\n\t\t\t\trightLivePosition.detach();\n\t\t\t}, { priority: \"high\" });\n\t\t});\n\t\teditor.commands.get(\"undo\").on(\"execute\", () => {\n\t\t\tif (this._timeoutId) {\n\t\t\t\tglobal.window.clearTimeout(this._timeoutId);\n\t\t\t\tthis._positionToInsert.detach();\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t}\n\t\t}, { priority: \"high\" });\n\t}\n\t/**\n\t* Analyzes the part of the document between provided positions in search for a URL representing an image.\n\t* When the URL is found, it is automatically converted into an image.\n\t*\n\t* @param leftPosition Left position of the selection.\n\t* @param rightPosition Right position of the selection.\n\t*/\n\t_embedImageBetweenPositions(leftPosition, rightPosition) {\n\t\tconst editor = this.editor;\n\t\tconst urlRange = new ModelLiveRange(leftPosition, rightPosition);\n\t\tconst walker = urlRange.getWalker({ ignoreElementEnd: true });\n\t\tconst selectionAttributes = Object.fromEntries(editor.model.document.selection.getAttributes());\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tlet src = \"\";\n\t\tfor (const node of walker) if (node.item.is(\"$textProxy\")) src += node.item.data;\n\t\tsrc = src.trim();\n\t\tif (!src.match(IMAGE_URL_REGEXP)) {\n\t\t\turlRange.detach();\n\t\t\treturn;\n\t\t}\n\t\tthis._positionToInsert = ModelLivePosition.fromPosition(leftPosition);\n\t\tthis._timeoutId = setTimeout(() => {\n\t\t\tif (!editor.commands.get(\"insertImage\").isEnabled) {\n\t\t\t\turlRange.detach();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\teditor.model.change((writer) => {\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\twriter.remove(urlRange);\n\t\t\t\turlRange.detach();\n\t\t\t\tlet insertionPosition;\n\t\t\t\tif (this._positionToInsert.root.rootName !== \"$graveyard\") insertionPosition = this._positionToInsert.toPosition();\n\t\t\t\timageUtils.insertImage({\n\t\t\t\t\t...selectionAttributes,\n\t\t\t\t\tsrc\n\t\t\t\t}, insertionPosition);\n\t\t\t\tthis._positionToInsert.detach();\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t});\n\t\t\teditor.plugins.get(\"Delete\").requestUndoOnBackspace();\n\t\t}, 100);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/imagetextalternativecommand\n*/\n/**\n* The image text alternative command. It is used to change the `alt` attribute of `<imageBlock>` and `<imageInline>` model elements.\n*/\nvar ImageTextAlternativeCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst element = this.editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(this.editor.model.document.selection);\n\t\tthis.isEnabled = !!element;\n\t\tif (this.isEnabled && element.hasAttribute(\"alt\")) this.value = element.getAttribute(\"alt\");\n\t\telse this.value = false;\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options\n\t* @param options.newValue The new value of the `alt` attribute to set.\n\t*/\n\texecute(options) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst model = editor.model;\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tmodel.change((writer) => {\n\t\t\twriter.setAttribute(\"alt\", options.newValue, imageElement);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/imagetextalternativeediting\n*/\n/**\n* The image text alternative editing plugin.\n*\n* Registers the `'imageTextAlternative'` command.\n*/\nvar ImageTextAlternativeEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageTextAlternativeEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tthis.editor.commands.add(\"imageTextAlternative\", new ImageTextAlternativeCommand(this.editor));\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/ui/textalternativeformview\n*/\n/**\n* The TextAlternativeFormView class.\n*\n* @internal\n*/\nvar TextAlternativeFormView = class extends View {\n\t/**\n\t* Tracks information about the DOM focus in the form.\n\t*/\n\tfocusTracker;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* An input with a label.\n\t*/\n\tlabeledInput;\n\t/**\n\t* The Back button view displayed in the header.\n\t*/\n\tbackButtonView;\n\t/**\n\t* A button used to submit the form.\n\t*/\n\tsaveButtonView;\n\t/**\n\t* A collection of child views.\n\t*/\n\tchildren;\n\t/**\n\t* A collection of views which can be focused in the form.\n\t*/\n\t_focusables;\n\t/**\n\t* Helps cycling over {@link #_focusables} in the form.\n\t*/\n\t_focusCycler;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(locale) {\n\t\tsuper(locale);\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\t\tthis.labeledInput = this._createLabeledInputView();\n\t\tthis.children = this.createCollection([this._createHeaderView()]);\n\t\tthis.children.add(new FormRowView(locale, {\n\t\t\tchildren: [this.labeledInput, this.saveButtonView],\n\t\t\tclass: [\"ck-form__row_with-submit\", \"ck-form__row_large-top-padding\"]\n\t\t}));\n\t\tthis._focusables = new ViewCollection();\n\t\tthis.keystrokes.set(\"Esc\", (data, cancel) => {\n\t\t\tthis.fire(\"cancel\");\n\t\t\tcancel();\n\t\t});\n\t\tthis._focusCycler = new FocusCycler({\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\tfocusPrevious: \"shift + tab\",\n\t\t\t\tfocusNext: \"tab\"\n\t\t\t}\n\t\t});\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t\"ck\",\n\t\t\t\t\t\"ck-form\",\n\t\t\t\t\t\"ck-text-alternative-form\",\n\t\t\t\t\t\"ck-responsive-form\"\n\t\t\t\t],\n\t\t\t\ttabindex: \"-1\"\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\t[\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t].forEach((v) => {\n\t\t\tthis._focusables.add(v);\n\t\t\tthis.focusTracker.add(v.element);\n\t\t});\n\t\tthis.keystrokes.listenTo(this.element);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Creates a back button view that cancels the form.\n\t*/\n\t_createBackButton() {\n\t\tconst t = this.locale.t;\n\t\tconst backButton = new ButtonView(this.locale);\n\t\tbackButton.set({\n\t\t\tclass: \"ck-button-back\",\n\t\t\tlabel: t(\"Back\"),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t});\n\t\tbackButton.delegate(\"execute\").to(this, \"cancel\");\n\t\treturn backButton;\n\t}\n\t/**\n\t* Creates a save button view that text alternative the image.\n\t*/\n\t_createSaveButton() {\n\t\tconst t = this.locale.t;\n\t\tconst saveButton = new ButtonView(this.locale);\n\t\tsaveButton.set({\n\t\t\tlabel: t(\"Save\"),\n\t\t\twithText: true,\n\t\t\ttype: \"submit\",\n\t\t\tclass: \"ck-button-action ck-button-bold\"\n\t\t});\n\t\treturn saveButton;\n\t}\n\t/**\n\t* Creates a header view for the form.\n\t*/\n\t_createHeaderView() {\n\t\tconst t = this.locale.t;\n\t\tconst header = new FormHeaderView(this.locale, { label: t(\"Text Alternative\") });\n\t\theader.children.add(this.backButtonView, 0);\n\t\treturn header;\n\t}\n\t/**\n\t* Creates an input with a label.\n\t*\n\t* @returns Labeled field view instance.\n\t*/\n\t_createLabeledInputView() {\n\t\tconst t = this.locale.t;\n\t\tconst labeledInput = new LabeledFieldView(this.locale, createLabeledInputText);\n\t\tlabeledInput.label = t(\"Text alternative\");\n\t\tlabeledInput.class = \"ck-labeled-field-view_full-width\";\n\t\treturn labeledInput;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* A helper utility that positions the\n* {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} instance\n* with respect to the image in the editor content, if one is selected.\n*\n* @param editor The editor instance.\n* @internal\n*/\nfunction repositionContextualBalloon(editor) {\n\tconst balloon = editor.plugins.get(\"ContextualBalloon\");\n\tif (editor.plugins.get(\"ImageUtils\").getClosestSelectedImageWidget(editor.editing.view.document.selection)) {\n\t\tconst position = getBalloonPositionData(editor);\n\t\tballoon.updatePosition(position);\n\t}\n}\n/**\n* Returns the positioning options that control the geometry of the\n* {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} with respect\n* to the selected element in the editor content.\n*\n* @param editor The editor instance.\n* @internal\n*/\nfunction getBalloonPositionData(editor) {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom(imageUtils.getClosestSelectedImageWidget(editingView.document.selection)),\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative/imagetextalternativeui\n*/\n/**\n* The image text alternative UI plugin.\n*\n* The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n*/\nvar ImageTextAlternativeUI = class extends Plugin {\n\t/**\n\t* The contextual balloon plugin instance.\n\t*/\n\t_balloon;\n\t/**\n\t* A form containing a textarea and buttons, used to change the `alt` text value.\n\t*/\n\t_form;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ContextualBalloon];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageTextAlternativeUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tthis._createButton();\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tif (this._form) this._form.destroy();\n\t}\n\t/**\n\t* Creates a button showing the balloon panel for changing the image text alternative and\n\t* registers it in the editor {@link module:ui/componentfactory~ComponentFactory ComponentFactory}.\n\t*/\n\t_createButton() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\teditor.ui.componentFactory.add(\"imageTextAlternative\", (locale) => {\n\t\t\tconst command = editor.commands.get(\"imageTextAlternative\");\n\t\t\tconst view = new ButtonView(locale);\n\t\t\tview.set({\n\t\t\t\tlabel: t(\"Change image text alternative\"),\n\t\t\t\ticon: IconTextAlternative,\n\t\t\t\ttooltip: true\n\t\t\t});\n\t\t\tview.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\t\tview.bind(\"isOn\").to(command, \"value\", (value) => !!value);\n\t\t\tthis.listenTo(view, \"execute\", () => {\n\t\t\t\tthis._showForm();\n\t\t\t});\n\t\t\treturn view;\n\t\t});\n\t}\n\t/**\n\t* Creates the {@link module:image/imagetextalternative/ui/textalternativeformview~TextAlternativeFormView}\n\t* form.\n\t*/\n\t_createForm() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tthis._balloon = this.editor.plugins.get(\"ContextualBalloon\");\n\t\tthis._form = new (CssTransitionDisablerMixin(TextAlternativeFormView))(editor.locale);\n\t\tthis._form.render();\n\t\tthis.listenTo(this._form, \"submit\", () => {\n\t\t\teditor.execute(\"imageTextAlternative\", { newValue: this._form.labeledInput.fieldView.element.value });\n\t\t\tthis._hideForm(true);\n\t\t});\n\t\tthis.listenTo(this._form, \"cancel\", () => {\n\t\t\tthis._hideForm(true);\n\t\t});\n\t\tthis.listenTo(editor.ui, \"update\", () => {\n\t\t\tif (!imageUtils.getClosestSelectedImageWidget(viewDocument.selection)) this._hideForm(true);\n\t\t\telse if (this._isVisible) repositionContextualBalloon(editor);\n\t\t});\n\t\tclickOutsideHandler({\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [this._balloon.view.element],\n\t\t\tcallback: () => this._hideForm()\n\t\t});\n\t}\n\t/**\n\t* Shows the {@link #_form} in the {@link #_balloon}.\n\t*/\n\t_showForm() {\n\t\tif (this._isVisible) return;\n\t\tif (!this._form) this._createForm();\n\t\tconst editor = this.editor;\n\t\tconst command = editor.commands.get(\"imageTextAlternative\");\n\t\tconst labeledInput = this._form.labeledInput;\n\t\tthis._form.disableCssTransitions();\n\t\tif (!this._isInBalloon) this._balloon.add({\n\t\t\tview: this._form,\n\t\t\tposition: getBalloonPositionData(editor)\n\t\t});\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element.value = command.value || \"\";\n\t\tthis._form.labeledInput.fieldView.select();\n\t\tthis._form.enableCssTransitions();\n\t}\n\t/**\n\t* Removes the {@link #_form} from the {@link #_balloon}.\n\t*\n\t* @param focusEditable Controls whether the editing view is focused afterwards.\n\t*/\n\t_hideForm(focusEditable = false) {\n\t\tif (!this._isInBalloon) return;\n\t\tif (this._form.focusTracker.isFocused) this._form.saveButtonView.focus();\n\t\tthis._balloon.remove(this._form);\n\t\tif (focusEditable) this.editor.editing.view.focus();\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t*/\n\tget _isVisible() {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t*/\n\tget _isInBalloon() {\n\t\treturn !!this._balloon && this._balloon.hasView(this._form);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetextalternative\n*/\n/**\n* The image text alternative plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-styles image styles} documentation.\n*\n* This is a \"glue\" plugin which loads the\n* {@link module:image/imagetextalternative/imagetextalternativeediting~ImageTextAlternativeEditing}\n* and {@link module:image/imagetextalternative/imagetextalternativeui~ImageTextAlternativeUI} plugins.\n*/\nvar ImageTextAlternative = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageTextAlternativeEditing, ImageTextAlternativeUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageTextAlternative\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Returns a function that converts the image view representation:\n*\n* ```html\n* <figure class=\"image\"><img src=\"...\" alt=\"...\"></img></figure>\n* ```\n*\n* to the model representation:\n*\n* ```html\n* <imageBlock src=\"...\" alt=\"...\"></imageBlock>\n* ```\n*\n* The entire content of the `<figure>` element except the first `<img>` is being converted as children\n* of the `<imageBlock>` model element.\n*\n* @internal\n*/\nfunction upcastImageFigure(imageUtils) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.test(data.viewItem, {\n\t\t\tname: true,\n\t\t\tclasses: \"image\"\n\t\t})) return;\n\t\tconst viewImage = imageUtils.findViewImgElement(data.viewItem);\n\t\tif (!viewImage || !conversionApi.consumable.test(viewImage, { name: true })) return;\n\t\tif (!isImageTypePlaceable(conversionApi.schema, data.modelCursor, \"imageBlock\")) return;\n\t\tconversionApi.consumable.consume(data.viewItem, {\n\t\t\tname: true,\n\t\t\tclasses: \"image\"\n\t\t});\n\t\tconst conversionResult = conversionApi.convertItem(viewImage, data.modelCursor);\n\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\tif (!conversionResult.modelRange) {\n\t\t\tconversionApi.consumable.revert(data.viewItem, {\n\t\t\t\tname: true,\n\t\t\t\tclasses: \"image\"\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst modelImage = first(conversionResult.modelRange.getItems());\n\t\tif (!modelImage) {\n\t\t\tconversionApi.consumable.revert(data.viewItem, {\n\t\t\t\tname: true,\n\t\t\t\tclasses: \"image\"\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconversionApi.convertChildren(data.viewItem, modelImage);\n\t\tconversionApi.updateConversionResult(modelImage, data);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"element:figure\", converter);\n\t};\n}\n/**\n* Returns a function that upcasts an `<img>` element to either an `imageBlock` or an `imageInline` model element.\n*\n* The image type is first determined from the view structure (see {@link module:image/image/utils~getViewImageType}):\n* an `<img>` wrapped in a `<figure class=\"image\">` or styled with `display: block` becomes an `imageBlock`, otherwise\n* an `imageInline`.\n*\n* That structural type is then verified against the schema at the insertion position. If it cannot be placed there -\n* neither directly (or after hoisting to an allowed ancestor) nor wrapped in an auto-created paragraph - the converter\n* falls back to `matchImageType`. This is what allows a block image to degrade to an inline image inside an inline root\n* (and, symmetrically, an inline image to become a block image in a context that only accepts block images) instead of\n* being dropped.\n*\n* Both `ImageBlockEditing` and `ImageInlineEditing` register this converter, each passing the type it falls back to.\n* When only one of them is loaded, that single type is always produced.\n*\n* @internal\n* @param matchImageType The image type to fall back to when the type resolved from the view cannot be placed at the\n* insertion position.\n* @param imageUtils The `ImageUtils` plugin instance.\n*/\nfunction upcastImg(matchImageType, imageUtils) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tlet imageType = getViewImageType(data.viewItem, imageUtils);\n\t\tconst attributes = data.viewItem.hasAttribute(\"src\") ? { src: data.viewItem.getAttribute(\"src\") } : void 0;\n\t\tconst consumables = {\n\t\t\tname: true,\n\t\t\tattributes: Object.keys(attributes || {})\n\t\t};\n\t\tif (!conversionApi.consumable.test(data.viewItem, consumables)) return;\n\t\tif (imageType != matchImageType && !isImageTypePlaceable(conversionApi.schema, data.modelCursor, imageType)) imageType = matchImageType;\n\t\tconst modelElement = conversionApi.writer.createElement(imageType, attributes);\n\t\tif (!conversionApi.safeInsert(modelElement, data.modelCursor)) return;\n\t\tconversionApi.consumable.consume(data.viewItem, consumables);\n\t\tconversionApi.convertChildren(data.viewItem, modelElement);\n\t\tconversionApi.updateConversionResult(modelElement, data);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"element:img\", converter);\n\t};\n}\n/**\n* Returns a function that converts the image view representation:\n*\n* ```html\n* <picture><source ... /><source ... />...<img ... /></picture>\n* ```\n*\n* to the model representation as the `sources` attribute:\n*\n* ```html\n* <image[Block|Inline] ... sources=\"...\"></image[Block|Inline]>\n* ```\n*\n* @internal\n*/\nfunction upcastPicture(imageUtils) {\n\tconst sourceAttributeNames = [\n\t\t\"srcset\",\n\t\t\"media\",\n\t\t\"type\",\n\t\t\"sizes\"\n\t];\n\tconst converter = (evt, data, conversionApi) => {\n\t\tconst pictureViewElement = data.viewItem;\n\t\tif (!conversionApi.consumable.test(pictureViewElement, { name: true })) return;\n\t\tconst sources = /* @__PURE__ */ new Map();\n\t\tfor (const childSourceElement of pictureViewElement.getChildren()) if (childSourceElement.is(\"element\", \"source\")) {\n\t\t\tconst attributes = {};\n\t\t\tfor (const name of sourceAttributeNames) if (childSourceElement.hasAttribute(name)) {\n\t\t\t\tif (conversionApi.consumable.test(childSourceElement, { attributes: name })) attributes[name] = childSourceElement.getAttribute(name);\n\t\t\t}\n\t\t\tif (Object.keys(attributes).length) sources.set(childSourceElement, attributes);\n\t\t}\n\t\tconst imgViewElement = imageUtils.findViewImgElement(pictureViewElement);\n\t\tif (!imgViewElement) return;\n\t\tlet modelImage = data.modelCursor.parent;\n\t\tif (!modelImage.is(\"element\", \"imageBlock\")) {\n\t\t\tconst conversionResult = conversionApi.convertItem(imgViewElement, data.modelCursor);\n\t\t\tdata.modelRange = conversionResult.modelRange;\n\t\t\tdata.modelCursor = conversionResult.modelCursor;\n\t\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\t\tif (!conversionResult.modelRange) return;\n\t\t\tmodelImage = first(conversionResult.modelRange.getItems());\n\t\t\tif (!modelImage) return;\n\t\t}\n\t\tconversionApi.consumable.consume(pictureViewElement, { name: true });\n\t\tfor (const [sourceElement, attributes] of sources) conversionApi.consumable.consume(sourceElement, { attributes: Object.keys(attributes) });\n\t\tif (sources.size) conversionApi.writer.setAttribute(\"sources\", Array.from(sources.values()), modelImage);\n\t\tconversionApi.convertChildren(pictureViewElement, modelImage);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"element:picture\", converter);\n\t};\n}\n/**\n* Converter used to convert the `srcset` model image attribute to the `srcset` and `sizes` attributes in the view.\n*\n* @internal\n* @param imageType The type of the image.\n*/\nfunction downcastSrcsetAttribute(imageUtils, imageType) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst writer = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\tconst img = imageUtils.findViewImgElement(element);\n\t\tif (data.attributeNewValue === null) {\n\t\t\twriter.removeAttribute(\"srcset\", img);\n\t\t\twriter.removeAttribute(\"sizes\", img);\n\t\t} else if (data.attributeNewValue) {\n\t\t\twriter.setAttribute(\"srcset\", data.attributeNewValue, img);\n\t\t\twriter.setAttribute(\"sizes\", \"100vw\", img);\n\t\t}\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(`attribute:srcset:${imageType}`, converter);\n\t};\n}\n/**\n* Converts the `source` model attribute to the `<picture><source /><source />...<img /></picture>`\n* view structure.\n*\n* @internal\n*/\nfunction downcastSourcesAttribute(imageUtils) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\tconst imgElement = imageUtils.findViewImgElement(element);\n\t\tconst attributeNewValue = data.attributeNewValue;\n\t\tif (attributeNewValue && attributeNewValue.length) {\n\t\t\tconst attributeElements = [];\n\t\t\tlet viewElement = imgElement.parent;\n\t\t\twhile (viewElement && viewElement.is(\"attributeElement\")) {\n\t\t\t\tconst parentElement = viewElement.parent;\n\t\t\t\tviewWriter.unwrap(viewWriter.createRangeOn(imgElement), viewElement);\n\t\t\t\tattributeElements.unshift(viewElement);\n\t\t\t\tviewElement = parentElement;\n\t\t\t}\n\t\t\tconst hasPictureElement = imgElement.parent.is(\"element\", \"picture\");\n\t\t\tconst pictureElement = hasPictureElement ? imgElement.parent : viewWriter.createContainerElement(\"picture\", null);\n\t\t\tif (!hasPictureElement) viewWriter.insert(viewWriter.createPositionBefore(imgElement), pictureElement);\n\t\t\tviewWriter.remove(viewWriter.createRangeIn(pictureElement));\n\t\t\tviewWriter.insert(viewWriter.createPositionAt(pictureElement, \"end\"), attributeNewValue.map((sourceAttributes) => {\n\t\t\t\treturn viewWriter.createEmptyElement(\"source\", sourceAttributes);\n\t\t\t}));\n\t\t\tviewWriter.move(viewWriter.createRangeOn(imgElement), viewWriter.createPositionAt(pictureElement, \"end\"));\n\t\t\tfor (const attributeElement of attributeElements) viewWriter.wrap(viewWriter.createRangeOn(pictureElement), attributeElement);\n\t\t} else if (imgElement.parent.is(\"element\", \"picture\")) {\n\t\t\tconst pictureElement = imgElement.parent;\n\t\t\tviewWriter.move(viewWriter.createRangeOn(imgElement), viewWriter.createPositionBefore(pictureElement));\n\t\t\tviewWriter.remove(pictureElement);\n\t\t}\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(\"attribute:sources:imageBlock\", converter);\n\t\tdispatcher.on(\"attribute:sources:imageInline\", converter);\n\t};\n}\n/**\n* Converter used to convert a given image attribute from the model to the view.\n*\n* @internal\n* @param imageType The type of the image.\n* @param attributeKey The name of the attribute to convert.\n*/\nfunction downcastImageAttribute(imageUtils, imageType, attributeKey) {\n\tconst converter = (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\tconst img = imageUtils.findViewImgElement(element);\n\t\tviewWriter.setAttribute(data.attributeKey, data.attributeNewValue || \"\", img);\n\t};\n\treturn (dispatcher) => {\n\t\tdispatcher.on(`attribute:${attributeKey}:${imageType}`, converter);\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageloadobserver\n*/\n/**\n* Observes all new images added to the {@link module:engine/view/document~ViewDocument},\n* fires {@link module:engine/view/document~ViewDocument#event:imageLoaded} and\n* {@link module:engine/view/document~ViewDocument#event:layoutChanged} event every time when the new image\n* has been loaded.\n*\n* **Note:** This event is not fired for images that has been added to the document and rendered as `complete` (already loaded).\n*/\nvar ImageLoadObserver = class extends Observer {\n\t/**\n\t* @inheritDoc\n\t*/\n\tobserve(domRoot) {\n\t\tthis.listenTo(domRoot, \"load\", (event, domEvent) => {\n\t\t\tconst domElement = domEvent.target;\n\t\t\tif (this.checkShouldIgnoreEventFromTarget(domElement)) return;\n\t\t\tif (domElement.tagName == \"IMG\") this._fireEvents(domEvent);\n\t\t}, { useCapture: true });\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstopObserving(domRoot) {\n\t\tthis.stopListening(domRoot);\n\t}\n\t/**\n\t* Fires {@link module:engine/view/document~ViewDocument#event:layoutChanged} and\n\t* {@link module:engine/view/document~ViewDocument#event:imageLoaded}\n\t* if observer {@link #isEnabled is enabled}.\n\t*\n\t* @param domEvent The DOM event.\n\t*/\n\t_fireEvents(domEvent) {\n\t\tif (this.isEnabled) {\n\t\t\tthis.document.fire(\"layoutChanged\");\n\t\t\tthis.document.fire(\"imageLoaded\", domEvent);\n\t\t}\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/insertimagecommand\n*/\n/**\n* Insert image command.\n*\n* The command is registered by the {@link module:image/image/imageediting~ImageEditing} plugin as `insertImage`\n* and it is also available via aliased `imageInsert` name.\n*\n* In order to insert an image at the current selection position\n* (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n* execute the command and specify the image source:\n*\n* ```ts\n* editor.execute( 'insertImage', { source: 'http://url.to.the/image' } );\n* ```\n*\n* It is also possible to insert multiple images at once:\n*\n* ```ts\n* editor.execute( 'insertImage', {\n* \tsource: [\n* \t\t'path/to/image.jpg',\n* \t\t'path/to/other-image.jpg'\n* \t]\n* } );\n* ```\n*\n* If you want to take the full control over the process, you can specify individual model attributes:\n*\n* ```ts\n* editor.execute( 'insertImage', {\n* \tsource: [\n* \t\t{ src: 'path/to/image.jpg', alt: 'First alt text' },\n* \t\t{ src: 'path/to/other-image.jpg', alt: 'Second alt text', customAttribute: 'My attribute value' }\n* \t]\n* } );\n* ```\n*/\nvar InsertImageCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tconst configImageInsertType = editor.config.get(\"image.insert.type\");\n\t\tif (!editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\tif (configImageInsertType === \"block\")\n /**\n\t\t\t* The {@link module:image/imageblock~ImageBlock} plugin must be enabled to allow inserting block images. See\n\t\t\t* {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t*\n\t\t\t* @error image-block-plugin-required\n\t\t\t*/\n\t\t\tlogWarning(\"image-block-plugin-required\");\n\t\t}\n\t\tif (!editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\tif (configImageInsertType === \"inline\")\n /**\n\t\t\t* The {@link module:image/imageinline~ImageInline} plugin must be enabled to allow inserting inline images. See\n\t\t\t* {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t*\n\t\t\t* @error image-inline-plugin-required\n\t\t\t*/\n\t\t\tlogWarning(\"image-inline-plugin-required\");\n\t\t}\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tthis.isEnabled = imageUtils.isImageAllowed();\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options Options for the executed command.\n\t* @param options.imageType The type of the image to insert. If not specified, the type will be determined automatically.\n\t* @param options.source The image source or an array of image sources to insert.\n\t* @param options.breakBlock If set to `true`, the block at the selection start will be broken before inserting the image.\n\t* See the documentation of the command to learn more about accepted formats.\n\t*/\n\texecute(options) {\n\t\tconst sourceDefinitions = toArray(options.source);\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst selectionAttributes = Object.fromEntries(selection.getAttributes());\n\t\tsourceDefinitions.forEach((sourceDefinition, index) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\t\t\tif (typeof sourceDefinition === \"string\") sourceDefinition = { src: sourceDefinition };\n\t\t\tif (index && selectedElement && imageUtils.isImage(selectedElement)) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter(selectedElement);\n\t\t\t\timageUtils.insertImage({\n\t\t\t\t\t...sourceDefinition,\n\t\t\t\t\t...selectionAttributes\n\t\t\t\t}, position, options.imageType);\n\t\t\t} else if (options.breakBlock) imageUtils.insertImage({\n\t\t\t\t...sourceDefinition,\n\t\t\t\t...selectionAttributes\n\t\t\t}, selection.getFirstPosition(), options.imageType);\n\t\t\telse imageUtils.insertImage({\n\t\t\t\t...sourceDefinition,\n\t\t\t\t...selectionAttributes\n\t\t\t}, null, options.imageType);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/replaceimagesourcecommand\n*/\n/**\n* Replace image source command.\n*\n* Changes image source to the one provided. Can be executed as follows:\n*\n* ```ts\n* editor.execute( 'replaceImageSource', { source: 'http://url.to.the/image' } );\n* ```\n*/\nvar ReplaceImageSourceCommand = class extends Command {\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis.decorate(\"cleanupImage\");\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst element = this.editor.model.document.selection.getSelectedElement();\n\t\tthis.isEnabled = imageUtils.isImage(element);\n\t\tthis.value = this.isEnabled ? element.getAttribute(\"src\") : null;\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options Options for the executed command.\n\t* @param options.source The image source to replace.\n\t*/\n\texecute(options) {\n\t\tconst image = this.editor.model.document.selection.getSelectedElement();\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tthis.editor.model.change((writer) => {\n\t\t\twriter.setAttribute(\"src\", options.source, image);\n\t\t\tthis.cleanupImage(writer, image);\n\t\t\timageUtils.setImageNaturalSizeAttributes(image);\n\t\t});\n\t}\n\t/**\n\t* Cleanup image attributes that are not relevant to the new source.\n\t*\n\t* Removed attributes are: 'srcset', 'sizes', 'sources', 'width', 'height', 'alt'.\n\t*\n\t* This method is decorated, to allow custom cleanup logic.\n\t* For example, to remove 'myImageId' attribute after 'src' has changed:\n\t*\n\t* ```ts\n\t* replaceImageSourceCommand.on( 'cleanupImage', ( eventInfo, [ writer, image ] ) => {\n\t* \twriter.removeAttribute( 'myImageId', image );\n\t* } );\n\t* ```\n\t*/\n\tcleanupImage(writer, image) {\n\t\twriter.removeAttribute(\"srcset\", image);\n\t\twriter.removeAttribute(\"sizes\", image);\n\t\t/**\n\t\t* In case responsive images some attributes should be cleaned up.\n\t\t* Check: https://github.com/ckeditor/ckeditor5/issues/15093\n\t\t*/\n\t\twriter.removeAttribute(\"sources\", image);\n\t\twriter.removeAttribute(\"width\", image);\n\t\twriter.removeAttribute(\"height\", image);\n\t\twriter.removeAttribute(\"alt\", image);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageediting\n*/\n/**\n* The image engine plugin. This module loads common code shared between\n* {@link module:image/image/imageinlineediting~ImageInlineEditing} and\n* {@link module:image/image/imageblockediting~ImageBlockEditing} plugins.\n*\n* This plugin registers the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command.\n*/\nvar ImageEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\teditor.editing.view.addObserver(ImageLoadObserver);\n\t\tconversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: \"img\",\n\t\t\t\tkey: \"alt\"\n\t\t\t},\n\t\t\tmodel: \"alt\"\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: \"img\",\n\t\t\t\tkey: \"srcset\"\n\t\t\t},\n\t\t\tmodel: \"srcset\"\n\t\t});\n\t\tconst insertImageCommand = new InsertImageCommand(editor);\n\t\tconst replaceImageSourceCommand = new ReplaceImageSourceCommand(editor);\n\t\teditor.commands.add(\"insertImage\", insertImageCommand);\n\t\teditor.commands.add(\"replaceImageSource\", replaceImageSourceCommand);\n\t\teditor.commands.add(\"imageInsert\", insertImageCommand);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagesizeattributes\n*/\n/**\n* This plugin enables `width` and `height` attributes in inline and block image elements.\n*/\nvar ImageSizeAttributes = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageSizeAttributes\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._registerSchema();\n\t\tthis._registerConverters(\"imageBlock\");\n\t\tthis._registerConverters(\"imageInline\");\n\t}\n\t/**\n\t* Registers the `width` and `height` attributes for inline and block images.\n\t*/\n\t_registerSchema() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (this.editor.plugins.has(\"ImageBlockEditing\")) schema.extend(\"imageBlock\", { allowAttributes: [\"width\", \"height\"] });\n\t\tif (this.editor.plugins.has(\"ImageInlineEditing\")) schema.extend(\"imageInline\", { allowAttributes: [\"width\", \"height\"] });\n\t}\n\t/**\n\t* Registers converters for `width` and `height` attributes.\n\t*/\n\t_registerConverters(imageType) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst viewElementName = imageType === \"imageBlock\" ? \"figure\" : \"img\";\n\t\teditor.conversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tstyles: { width: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"width\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return getSizeValueIfInPx(viewElement.getStyle(\"width\"));\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tkey: \"width\"\n\t\t\t},\n\t\t\tmodel: \"width\"\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tstyles: { height: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"height\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return getSizeValueIfInPx(viewElement.getStyle(\"height\"));\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}).attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: viewElementName,\n\t\t\t\tkey: \"height\"\n\t\t\t},\n\t\t\tmodel: \"height\"\n\t\t});\n\t\teditor.conversion.for(\"editingDowncast\").add((dispatcher) => {\n\t\t\tattachDowncastConverter(dispatcher, \"width\", \"width\", true, true);\n\t\t\tattachDowncastConverter(dispatcher, \"height\", \"height\", true, true);\n\t\t});\n\t\teditor.conversion.for(\"dataDowncast\").add((dispatcher) => {\n\t\t\tattachDowncastConverter(dispatcher, \"width\", \"width\", false);\n\t\t\tattachDowncastConverter(dispatcher, \"height\", \"height\", false);\n\t\t});\n\t\teditor.conversion.for(\"upcast\").add((dispatcher) => {\n\t\t\tdispatcher.on(\"element:img\", (evt, data, conversionApi) => {\n\t\t\t\tconst width = data.viewItem.getAttribute(\"width\");\n\t\t\t\tconst height = data.viewItem.getAttribute(\"height\");\n\t\t\t\tif (width && height) conversionApi.consumable.consume(data.viewItem, { styles: [\"aspect-ratio\"] });\n\t\t\t});\n\t\t});\n\t\tfunction attachDowncastConverter(dispatcher, modelAttributeName, viewAttributeName, setRatioForInlineImage, isEditingDowncast = false) {\n\t\t\tdispatcher.on(`attribute:${modelAttributeName}:${imageType}`, (evt, data, conversionApi) => {\n\t\t\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement(data.item);\n\t\t\t\tconst img = imageUtils.findViewImgElement(viewElement);\n\t\t\t\tif (data.attributeNewValue !== null) viewWriter.setAttribute(viewAttributeName, data.attributeNewValue, img);\n\t\t\t\telse viewWriter.removeAttribute(viewAttributeName, img);\n\t\t\t\tconst width = data.item.getAttribute(\"width\");\n\t\t\t\tconst height = data.item.getAttribute(\"height\");\n\t\t\t\tconst hasSizes = width && height;\n\t\t\t\tif (hasSizes && isEditingDowncast) viewWriter.setAttribute(\"loading\", \"lazy\", img);\n\t\t\t\tif (data.item.hasAttribute(\"sources\")) return;\n\t\t\t\tconst isResized = data.item.hasAttribute(\"resizedWidth\");\n\t\t\t\tif (imageType === \"imageInline\" && !isResized && !setRatioForInlineImage) return;\n\t\t\t\tif (hasSizes) viewWriter.setStyle(\"aspect-ratio\", `${width}/${height}`, img);\n\t\t\t});\n\t\t}\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image type command. It changes the type of a selected image, depending on the configuration.\n*/\nvar ImageTypeCommand = class extends Command {\n\t/**\n\t* Model element name the command converts to.\n\t*/\n\t_modelElementName;\n\t/**\n\t* @inheritDoc\n\t*\n\t* @param modelElementName Model element name the command converts to.\n\t*/\n\tconstructor(editor, modelElementName) {\n\t\tsuper(editor);\n\t\tthis._modelElementName = modelElementName;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst element = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tif (!(this._modelElementName === \"imageBlock\" ? imageUtils.isInlineImage(element) : imageUtils.isBlockImage(element))) {\n\t\t\tthis.isEnabled = false;\n\t\t\treturn;\n\t\t}\n\t\tconst position = model.createPositionBefore(element);\n\t\tthis.isEnabled = isImageTypePlaceable(schema, position, this._modelElementName);\n\t}\n\t/**\n\t* Executes the command and changes the type of a selected image.\n\t*\n\t* @fires execute\n\t* @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t* The default is `true`.\n\t* @returns An object containing references to old and new model image elements\n\t* (for before and after the change) so external integrations can hook into the decorated\n\t* `execute` event and handle this change. `null` if the type change failed.\n\t*/\n\texecute(options = {}) {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst oldElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tconst attributes = Object.fromEntries(oldElement.getAttributes());\n\t\tif (!attributes.src && !attributes.uploadId) return null;\n\t\treturn model.change((writer) => {\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tconst markers = Array.from(model.markers).filter((marker) => marker.getRange().containsItem(oldElement));\n\t\t\tconst newElement = imageUtils.insertImage(attributes, model.createSelection(oldElement, \"on\"), this._modelElementName, { setImageSizes });\n\t\t\tif (!newElement) return null;\n\t\t\tconst newElementRange = writer.createRangeOn(newElement);\n\t\t\tfor (const marker of markers) {\n\t\t\t\tconst markerRange = marker.getRange();\n\t\t\t\tconst range = markerRange.root.rootName != \"$graveyard\" ? markerRange.getJoined(newElementRange, true) : newElementRange;\n\t\t\t\twriter.updateMarker(marker, { range });\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toldElement,\n\t\t\t\tnewElement\n\t\t\t};\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageplaceholder\n*/\n/**\n* Adds support for image placeholder that is automatically removed when the image is loaded.\n*/\nvar ImagePlaceholder = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImagePlaceholder\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._setupSchema();\n\t\tthis._setupConversion();\n\t\tthis._setupLoadListener();\n\t}\n\t/**\n\t* Extends model schema.\n\t*/\n\t_setupSchema() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (schema.isRegistered(\"imageBlock\")) schema.extend(\"imageBlock\", { allowAttributes: [\"placeholder\"] });\n\t\tif (schema.isRegistered(\"imageInline\")) schema.extend(\"imageInline\", { allowAttributes: [\"placeholder\"] });\n\t}\n\t/**\n\t* Registers converters.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"editingDowncast\").add((dispatcher) => {\n\t\t\tdispatcher.on(\"attribute:placeholder\", (evt, data, conversionApi) => {\n\t\t\t\tif (!conversionApi.consumable.test(data.item, evt.name)) return;\n\t\t\t\tif (!data.item.is(\"element\", \"imageBlock\") && !data.item.is(\"element\", \"imageInline\")) return;\n\t\t\t\tconversionApi.consumable.consume(data.item, evt.name);\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst element = conversionApi.mapper.toViewElement(data.item);\n\t\t\t\tconst img = imageUtils.findViewImgElement(element);\n\t\t\t\tif (data.attributeNewValue) {\n\t\t\t\t\tviewWriter.addClass(\"image_placeholder\", img);\n\t\t\t\t\tviewWriter.setStyle(\"background-image\", `url(${data.attributeNewValue})`, img);\n\t\t\t\t\tviewWriter.setCustomProperty(\"editingPipeline:doNotReuseOnce\", true, img);\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeClass(\"image_placeholder\", img);\n\t\t\t\t\tviewWriter.removeStyle(\"background-image\", img);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Prepares listener for image load.\n\t*/\n\t_setupLoadListener() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editing = editor.editing;\n\t\tconst editingView = editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\teditingView.addObserver(ImageLoadObserver);\n\t\tthis.listenTo(editingView.document, \"imageLoaded\", (evt, domEvent) => {\n\t\t\tconst imgViewElement = editingView.domConverter.mapDomToView(domEvent.target);\n\t\t\tif (!imgViewElement) return;\n\t\t\tconst viewElement = imageUtils.getImageWidgetFromImageView(imgViewElement);\n\t\t\tif (!viewElement) return;\n\t\t\tconst modelElement = editing.mapper.toModelElement(viewElement);\n\t\t\tif (!modelElement || !modelElement.hasAttribute(\"placeholder\")) return;\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\twriter.removeAttribute(\"placeholder\", modelElement);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageblockediting\n*/\n/**\n* The image block plugin.\n*\n* It registers:\n*\n* * `<imageBlock>` as a block element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n* * converters for editing and data pipelines.,\n* * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeBlock'`} command that converts inline images into\n* block images.\n*/\nvar ImageBlockEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageBlockEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.model.schema.register(\"imageBlock\", {\n\t\t\tinheritAllFrom: \"$blockObject\",\n\t\t\tallowAttributes: [\n\t\t\t\t\"alt\",\n\t\t\t\t\"src\",\n\t\t\t\t\"srcset\"\n\t\t\t]\n\t\t});\n\t\tthis._setupConversion();\n\t\tif (editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\teditor.commands.add(\"imageTypeBlock\", new ImageTypeCommand(this.editor, \"imageBlock\"));\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting\n\t* block images (block image widgets) and their attributes.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"dataDowncast\").elementToStructure({\n\t\t\tmodel: \"imageBlock\",\n\t\t\tview: (modelElement, { writer }) => createBlockImageViewElement(writer)\n\t\t});\n\t\tconversion.for(\"editingDowncast\").elementToStructure({\n\t\t\tmodel: \"imageBlock\",\n\t\t\tview: (modelElement, { writer }) => imageUtils.toImageWidget(createBlockImageViewElement(writer), writer, t(\"image widget\"))\n\t\t});\n\t\tconversion.for(\"downcast\").add(downcastImageAttribute(imageUtils, \"imageBlock\", \"src\")).add(downcastImageAttribute(imageUtils, \"imageBlock\", \"alt\")).add(downcastSrcsetAttribute(imageUtils, \"imageBlock\"));\n\t\tconversion.for(\"upcast\").add(upcastImg(\"imageBlock\", imageUtils)).add(upcastImageFigure(imageUtils));\n\t}\n\t/**\n\t* Integrates the plugin with the clipboard pipeline.\n\t*\n\t* Idea is that the feature should recognize the user's intent when an **inline** image is\n\t* pasted or dropped. If such an image is pasted/dropped:\n\t*\n\t* * into an empty block (e.g. an empty paragraph),\n\t* * on another object (e.g. some block widget).\n\t*\n\t* it gets converted into a block image on the fly. We assume this is the user's intent\n\t* if they decided to put their image there.\n\t*\n\t* See the `ImageInlineEditing` for the similar integration that works in the opposite direction.\n\t*\n\t* The feature also sets image `width` and `height` attributes on paste.\n\t*/\n\t_setupClipboardIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", (evt, data) => {\n\t\t\tconst docFragmentChildren = Array.from(data.content.getChildren());\n\t\t\tlet modelRange;\n\t\t\tif (!docFragmentChildren.every(imageUtils.isInlineImageView)) return;\n\t\t\tif (data.targetRanges) modelRange = editor.editing.mapper.toModelRange(data.targetRanges[0]);\n\t\t\telse modelRange = model.document.selection.getFirstRange();\n\t\t\tconst selection = model.createSelection(modelRange);\n\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\tif (!!selectionPosition && isImageTypePlaceable(model.schema, selectionPosition, \"imageBlock\") && determineImageTypeForInsertionAtSelection(model.schema, selection) === \"imageBlock\") {\n\t\t\t\tconst writer = new ViewUpcastWriter(editingView.document);\n\t\t\t\tconst blockViewImages = docFragmentChildren.map((inlineViewImage) => writer.createElement(\"figure\", { class: \"image\" }, inlineViewImage));\n\t\t\t\tdata.content = writer.createDocumentFragment(blockViewImages);\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(clipboardPipeline, \"contentInsertion\", (evt, data) => {\n\t\t\tif (data.method !== \"paste\") return;\n\t\t\tmodel.change((writer) => {\n\t\t\t\tconst range = writer.createRangeIn(data.content);\n\t\t\t\tfor (const item of range.getItems()) if (item.is(\"element\", \"imageBlock\")) imageUtils.setImageNaturalSizeAttributes(item);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/ui/imageinsertformview\n*/\n/**\n* The view displayed in the insert image dropdown.\n*\n* See {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n*\n* @internal\n*/\nvar ImageInsertFormView = class extends View {\n\t/**\n\t* Tracks information about DOM focus in the form.\n\t*/\n\tfocusTracker;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* A collection of views that can be focused in the form.\n\t*/\n\t_focusables;\n\t/**\n\t* Helps cycling over {@link #_focusables} in the form.\n\t*/\n\t_focusCycler;\n\t/**\n\t* A collection of the defined integrations for inserting the images.\n\t*/\n\tchildren;\n\t/**\n\t* Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t*\n\t* @param locale The localization services instance.\n\t* @param integrations An integrations object that contains components (or tokens for components) to be shown in the panel view.\n\t*/\n\tconstructor(locale, integrations = []) {\n\t\tsuper(locale);\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis._focusables = new ViewCollection();\n\t\tthis.children = this.createCollection();\n\t\tthis._focusCycler = new FocusCycler({\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\tfocusPrevious: \"shift + tab\",\n\t\t\t\tfocusNext: \"tab\"\n\t\t\t}\n\t\t});\n\t\tfor (const view of integrations) {\n\t\t\tthis.children.add(view);\n\t\t\tthis._focusables.add(view);\n\t\t\tif (view instanceof CollapsibleView) this._focusables.addMany(view.children);\n\t\t}\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\"ck\", \"ck-image-insert-form\"],\n\t\t\t\ttabindex: -1\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\tfor (const view of this._focusables) this.focusTracker.add(view.element);\n\t\tthis.keystrokes.listenTo(this.element);\n\t\tconst stopPropagation = (data) => data.stopPropagation();\n\t\tthis.keystrokes.set(\"arrowright\", stopPropagation);\n\t\tthis.keystrokes.set(\"arrowleft\", stopPropagation);\n\t\tthis.keystrokes.set(\"arrowup\", stopPropagation);\n\t\tthis.keystrokes.set(\"arrowdown\", stopPropagation);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Focuses the first {@link #_focusables focusable} in the form.\n\t*/\n\tfocus() {\n\t\tthis._focusCycler.focusFirst();\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/imageinsertui\n*/\n/**\n* The image insert dropdown plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n* and {@glink features/images/images-inserting Insert images via source URL} documentation.\n*\n* Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n* and also the `imageInsert` dropdown as an alias for backward compatibility.\n*\n* Adds the `'menuBar:insertImage'` sub-menu to the {@link module:ui/componentfactory~ComponentFactory UI component factory}, which is\n* by default added to the `'Insert'` menu.\n*/\nvar ImageInsertUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsertUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* The dropdown view responsible for displaying the image insert UI.\n\t*/\n\tdropdownView;\n\t/**\n\t* Registered integrations map.\n\t*/\n\t_integrations = /* @__PURE__ */ new Map();\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\teditor.config.define(\"image.insert.integrations\", [\n\t\t\t\"upload\",\n\t\t\t\"assetManager\",\n\t\t\t\"url\"\n\t\t]);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tthis.set(\"isImageSelected\", false);\n\t\tthis.listenTo(editor.model.document, \"change\", () => {\n\t\t\tthis.isImageSelected = imageUtils.isImage(selection.getSelectedElement());\n\t\t});\n\t\tconst componentCreator = (locale) => this._createToolbarComponent(locale);\n\t\tconst menuBarComponentCreator = (locale) => this._createMenuBarComponent(locale);\n\t\teditor.ui.componentFactory.add(\"insertImage\", componentCreator);\n\t\teditor.ui.componentFactory.add(\"imageInsert\", componentCreator);\n\t\teditor.ui.componentFactory.add(\"menuBar:insertImage\", menuBarComponentCreator);\n\t}\n\t/**\n\t* Registers the insert image dropdown integration.\n\t*/\n\tregisterIntegration({ name, observable, buttonViewCreator, formViewCreator, menuBarButtonViewCreator, requiresForm = false, override = false }) {\n\t\tif (this._integrations.has(name) && !override)\n /**\n\t\t* There are two insert-image integrations registered with the same name.\n\t\t*\n\t\t* Make sure that you do not load multiple asset manager plugins.\n\t\t*\n\t\t* @error image-insert-integration-exists\n\t\t*/\n\t\tlogWarning(\"image-insert-integration-exists\", { name });\n\t\tthis._integrations.set(name, {\n\t\t\tobservable,\n\t\t\tbuttonViewCreator,\n\t\t\tmenuBarButtonViewCreator,\n\t\t\tformViewCreator,\n\t\t\trequiresForm\n\t\t});\n\t}\n\t/**\n\t* Creates the toolbar component.\n\t*/\n\t_createToolbarComponent(locale) {\n\t\tconst editor = this.editor;\n\t\tconst t = locale.t;\n\t\tconst integrations = this._prepareIntegrations();\n\t\tif (!integrations.length) return null;\n\t\tlet dropdownButton;\n\t\tconst firstIntegration = integrations[0];\n\t\tif (integrations.length == 1) {\n\t\t\tif (!firstIntegration.requiresForm) return firstIntegration.buttonViewCreator(true);\n\t\t\tdropdownButton = firstIntegration.buttonViewCreator(true);\n\t\t} else {\n\t\t\tdropdownButton = new SplitButtonView(locale, firstIntegration.buttonViewCreator(false));\n\t\t\tdropdownButton.tooltip = true;\n\t\t\tdropdownButton.bind(\"label\").to(this, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Replace image\") : t(\"Insert image\"));\n\t\t}\n\t\tconst dropdownView = this.dropdownView = createDropdown(locale, dropdownButton);\n\t\tconst observables = integrations.map(({ observable }) => typeof observable == \"function\" ? observable() : observable);\n\t\tdropdownView.bind(\"isEnabled\").toMany(observables, \"isEnabled\", (...isEnabled) => isEnabled.some((isEnabled) => isEnabled));\n\t\tdropdownView.once(\"change:isOpen\", () => {\n\t\t\tconst integrationViews = integrations.flatMap(({ formViewCreator }) => formViewCreator(integrations.length == 1));\n\t\t\tconst imageInsertFormView = new ImageInsertFormView(editor.locale, integrationViews);\n\t\t\tdropdownView.panelView.children.add(imageInsertFormView);\n\t\t});\n\t\treturn dropdownView;\n\t}\n\t/**\n\t* Creates the menu bar component.\n\t*/\n\t_createMenuBarComponent(locale) {\n\t\tconst t = locale.t;\n\t\tconst integrations = this._prepareIntegrations();\n\t\tif (!integrations.length) return null;\n\t\tconst integrationViews = integrations.flatMap(({ menuBarButtonViewCreator }) => menuBarButtonViewCreator(integrations.length == 1));\n\t\tconst resultView = new MenuBarMenuView(locale);\n\t\tconst listView = new MenuBarMenuListView(locale);\n\t\tresultView.panelView.children.add(listView);\n\t\tresultView.buttonView.set({\n\t\t\ticon: IconImage,\n\t\t\tlabel: t(\"Image\")\n\t\t});\n\t\tfor (const integrationView of integrationViews) {\n\t\t\tconst listItemView = new MenuBarMenuListItemView(locale, resultView);\n\t\t\tlistItemView.children.add(integrationView);\n\t\t\tlistView.items.add(listItemView);\n\t\t\tintegrationView.delegate(\"execute\").to(resultView);\n\t\t}\n\t\treturn resultView;\n\t}\n\t/**\n\t* Validates the integrations list.\n\t*/\n\t_prepareIntegrations() {\n\t\tconst items = this.editor.config.get(\"image.insert.integrations\");\n\t\tconst result = [];\n\t\tif (!items.length) {\n\t\t\t/**\n\t\t\t* The insert image feature requires a list of integrations to be provided in the editor configuration.\n\t\t\t*\n\t\t\t* The default list of integrations is `upload`, `assetManager`, `url`. Those integrations are included\n\t\t\t* in the insert image dropdown if the given feature plugin is loaded. You should omit the `integrations`\n\t\t\t* configuration key to use the default set or provide a selected list of integrations that should be used.\n\t\t\t*\n\t\t\t* @error image-insert-integrations-not-specified\n\t\t\t*/\n\t\t\tlogWarning(\"image-insert-integrations-not-specified\");\n\t\t\treturn result;\n\t\t}\n\t\tfor (const item of items) {\n\t\t\tif (!this._integrations.has(item)) {\n\t\t\t\tif (![\n\t\t\t\t\t\"upload\",\n\t\t\t\t\t\"assetManager\",\n\t\t\t\t\t\"url\"\n\t\t\t\t].includes(item))\n /**\n\t\t\t\t* The specified insert image integration name is unknown or the providing plugin is not loaded in the editor.\n\t\t\t\t*\n\t\t\t\t* @error image-insert-unknown-integration\n\t\t\t\t*/\n\t\t\t\tlogWarning(\"image-insert-unknown-integration\", { item });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult.push(this._integrations.get(item));\n\t\t}\n\t\tif (!result.length)\n /**\n\t\t* The image insert feature requires integrations to be registered by separate features.\n\t\t*\n\t\t* The `insertImage` toolbar button requires integrations to be registered by other features.\n\t\t* For example {@link module:image/imageupload~ImageUpload ImageUpload},\n\t\t* {@link module:image/imageinsert~ImageInsert ImageInsert},\n\t\t* {@link module:image/imageinsertviaurl~ImageInsertViaUrl ImageInsertViaUrl},\n\t\t* {@link module:ckbox/ckbox~CKBox CKBox}\n\t\t*\n\t\t* @error image-insert-integrations-not-registered\n\t\t*/\n\t\tlogWarning(\"image-insert-integrations-not-registered\");\n\t\treturn result;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageblock\n*/\n/**\n* The image block plugin.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n*\n* * {@link module:image/image/imageblockediting~ImageBlockEditing},\n* * {@link module:image/imagetextalternative~ImageTextAlternative}.\n*\n* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n* for more information.\n*/\nvar ImageBlock = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageBlockEditing,\n\t\t\tWidget,\n\t\t\tImageTextAlternative,\n\t\t\tImageInsertUI\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageBlock\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image/imageinlineediting\n*/\n/**\n* The image inline plugin.\n*\n* It registers:\n*\n* * `<imageInline>` as an inline element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n* * converters for editing and data pipelines.\n* * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeInline'`} command that converts block images into\n* inline images.\n*/\nvar ImageInlineEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInlineEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.model.schema.register(\"imageInline\", {\n\t\t\tinheritAllFrom: \"$inlineObject\",\n\t\t\tallowAttributes: [\n\t\t\t\t\"alt\",\n\t\t\t\t\"src\",\n\t\t\t\t\"srcset\"\n\t\t\t],\n\t\t\tdisallowIn: [\"caption\"]\n\t\t});\n\t\tthis._setupConversion();\n\t\tif (editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\teditor.commands.add(\"imageTypeInline\", new ImageTypeCommand(this.editor, \"imageInline\"));\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting\n\t* inline images (inline image widgets) and their attributes.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"dataDowncast\").elementToElement({\n\t\t\tmodel: \"imageInline\",\n\t\t\tview: (modelElement, { writer }) => writer.createEmptyElement(\"img\")\n\t\t});\n\t\tconversion.for(\"editingDowncast\").elementToStructure({\n\t\t\tmodel: \"imageInline\",\n\t\t\tview: (modelElement, { writer }) => imageUtils.toImageWidget(createInlineImageViewElement(writer), writer, t(\"image widget\"))\n\t\t});\n\t\tconversion.for(\"downcast\").add(downcastImageAttribute(imageUtils, \"imageInline\", \"src\")).add(downcastImageAttribute(imageUtils, \"imageInline\", \"alt\")).add(downcastSrcsetAttribute(imageUtils, \"imageInline\"));\n\t\tconversion.for(\"upcast\").add(upcastImg(\"imageInline\", imageUtils));\n\t}\n\t/**\n\t* Integrates the plugin with the clipboard pipeline.\n\t*\n\t* Idea is that the feature should recognize the user's intent when an **block** image is\n\t* pasted or dropped. If such an image is pasted/dropped into a non-empty block\n\t* (e.g. a paragraph with some text) it gets converted into an inline image on the fly.\n\t*\n\t* We assume this is the user's intent if they decided to put their image there.\n\t*\n\t* **Note**: If a block image has a caption, it will not be converted to an inline image\n\t* to avoid the confusion. Captions are added on purpose and they should never be lost\n\t* in the clipboard pipeline.\n\t*\n\t* See the `ImageBlockEditing` for the similar integration that works in the opposite direction.\n\t*\n\t* The feature also sets image `width` and `height` attributes when pasting.\n\t*/\n\t_setupClipboardIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", (evt, data) => {\n\t\t\tconst docFragmentChildren = Array.from(data.content.getChildren());\n\t\t\tlet modelRange;\n\t\t\tif (!docFragmentChildren.every(imageUtils.isBlockImageView)) return;\n\t\t\tif (data.targetRanges) modelRange = editor.editing.mapper.toModelRange(data.targetRanges[0]);\n\t\t\telse modelRange = model.document.selection.getFirstRange();\n\t\t\tconst selection = model.createSelection(modelRange);\n\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\tif (!(!!selectionPosition && isImageTypePlaceable(model.schema, selectionPosition, \"imageBlock\")) || determineImageTypeForInsertionAtSelection(model.schema, selection) === \"imageInline\") {\n\t\t\t\tconst writer = new ViewUpcastWriter(editingView.document);\n\t\t\t\tconst inlineViewImages = docFragmentChildren.map((blockViewImage) => {\n\t\t\t\t\tif (blockViewImage.childCount === 1) {\n\t\t\t\t\t\tArray.from(blockViewImage.getAttributes()).forEach((attribute) => writer.setAttribute(...attribute, imageUtils.findViewImgElement(blockViewImage)));\n\t\t\t\t\t\treturn blockViewImage.getChild(0);\n\t\t\t\t\t} else return blockViewImage;\n\t\t\t\t});\n\t\t\t\tdata.content = writer.createDocumentFragment(inlineViewImages);\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(clipboardPipeline, \"contentInsertion\", (evt, data) => {\n\t\t\tif (data.method !== \"paste\") return;\n\t\t\tmodel.change((writer) => {\n\t\t\t\tconst range = writer.createRangeIn(data.content);\n\t\t\t\tfor (const item of range.getItems()) if (item.is(\"element\", \"imageInline\")) imageUtils.setImageNaturalSizeAttributes(item);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinline\n*/\n/**\n* The image inline plugin.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n*\n* * {@link module:image/image/imageinlineediting~ImageInlineEditing},\n* * {@link module:image/imagetextalternative~ImageTextAlternative}.\n*\n* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n* for more information.\n*/\nvar ImageInline = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageInlineEditing,\n\t\t\tWidget,\n\t\t\tImageTextAlternative,\n\t\t\tImageInsertUI\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInline\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/image\n*/\n/**\n* The image plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-overview image feature} documentation.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n*\n* * {@link module:image/imageblock~ImageBlock},\n* * {@link module:image/imageinline~ImageInline},\n*\n* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n* for more information.\n*/\nvar Image = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageBlock, ImageInline];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Image\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image caption utilities plugin.\n*/\nvar ImageCaptionUtils = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaptionUtils\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* Returns the caption model element from a given image element. Returns `null` if no caption is found.\n\t*/\n\tgetCaptionFromImageModelElement(imageModelElement) {\n\t\tfor (const node of imageModelElement.getChildren()) if (!!node && node.is(\"element\", \"caption\")) return node;\n\t\treturn null;\n\t}\n\t/**\n\t* Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.\n\t*/\n\tgetCaptionFromModelSelection(selection) {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst captionElement = selection.getFirstPosition().findAncestor(\"caption\");\n\t\tif (!captionElement) return null;\n\t\tif (imageUtils.isBlockImage(captionElement.parent)) return captionElement;\n\t\treturn null;\n\t}\n\t/**\n\t* {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a `<figcaption>` element that is placed\n\t* inside the image `<figure>` element.\n\t* @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element\n\t* cannot be matched.\n\t*/\n\tmatchImageCaptionViewElement(element) {\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tif (element.name == \"figcaption\" && imageUtils.isBlockImageView(element.parent)) return { name: true };\n\t\treturn null;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The toggle image caption command.\n*\n* This command is registered by {@link module:image/imagecaption/imagecaptionediting~ImageCaptionEditing} as the\n* `'toggleImageCaption'` editor command.\n*\n* Executing this command:\n*\n* * either adds or removes the image caption of a selected image (depending on whether the caption is present or not),\n* * removes the image caption if the selection is anchored in one.\n*\n* ```ts\n* // Toggle the presence of the caption.\n* editor.execute( 'toggleImageCaption' );\n* ```\n*\n* **Note**: Upon executing this command, the selection will be set on the image if previously anchored in the caption element.\n*\n* **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using\n* the `focusCaptionOnShow` option:\n*\n* ```ts\n* editor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n* ```\n*/\nvar ToggleImageCaptionCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tif (!editor.plugins.has(ImageBlockEditing)) {\n\t\t\tthis.isEnabled = false;\n\t\t\tthis.value = false;\n\t\t\treturn;\n\t\t}\n\t\tconst selection = editor.model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\t\tif (!selectedElement) {\n\t\t\tconst ancestorCaptionElement = imageCaptionUtils.getCaptionFromModelSelection(selection);\n\t\t\tthis.isEnabled = !!ancestorCaptionElement;\n\t\t\tthis.value = !!ancestorCaptionElement;\n\t\t\treturn;\n\t\t}\n\t\tthis.isEnabled = imageUtils.isImage(selectedElement);\n\t\tif (this.isEnabled && imageUtils.isInlineImage(selectedElement)) {\n\t\t\tconst position = editor.model.createPositionBefore(selectedElement);\n\t\t\tthis.isEnabled = isImageTypePlaceable(editor.model.schema, position, \"imageBlock\");\n\t\t}\n\t\tif (!this.isEnabled) this.value = false;\n\t\telse this.value = !!imageCaptionUtils.getCaptionFromImageModelElement(selectedElement);\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* ```ts\n\t* editor.execute( 'toggleImageCaption' );\n\t* ```\n\t*\n\t* @param options Options for the executed command.\n\t* @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.\n\t* @fires execute\n\t*/\n\texecute(options = {}) {\n\t\tconst { focusCaptionOnShow } = options;\n\t\tthis.editor.model.change((writer) => {\n\t\t\tif (this.value) this._hideImageCaption(writer);\n\t\t\telse this._showImageCaption(writer, focusCaptionOnShow);\n\t\t});\n\t}\n\t/**\n\t* Shows the caption of the `<imageBlock>` or `<imageInline>`. Also:\n\t*\n\t* * it converts `<imageInline>` to `<imageBlock>` to show the caption,\n\t* * it attempts to restore the caption content from the `ImageCaptionEditing` caption registry,\n\t* * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.\n\t*/\n\t_showImageCaption(writer, focusCaptionOnShow) {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageCaptionEditing = this.editor.plugins.get(\"ImageCaptionEditing\");\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tlet selectedImage = selection.getSelectedElement();\n\t\tconst savedCaption = imageCaptionEditing._getSavedCaption(selectedImage);\n\t\tif (imageUtils.isInlineImage(selectedImage)) {\n\t\t\tthis.editor.execute(\"imageTypeBlock\");\n\t\t\tselectedImage = selection.getSelectedElement();\n\t\t}\n\t\tconst newCaptionElement = savedCaption || writer.createElement(\"caption\");\n\t\twriter.append(newCaptionElement, selectedImage);\n\t\tif (focusCaptionOnShow) writer.setSelection(newCaptionElement, \"in\");\n\t}\n\t/**\n\t* Hides the caption of a selected image (or an image caption the selection is anchored to).\n\t*\n\t* The content of the caption is stored in the `ImageCaptionEditing` caption registry to make this\n\t* a reversible action.\n\t*/\n\t_hideImageCaption(writer) {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageCaptionEditing = editor.plugins.get(\"ImageCaptionEditing\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tlet selectedImage = selection.getSelectedElement();\n\t\tlet captionElement;\n\t\tif (selectedImage) captionElement = imageCaptionUtils.getCaptionFromImageModelElement(selectedImage);\n\t\telse {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromModelSelection(selection);\n\t\t\tselectedImage = captionElement.parent;\n\t\t}\n\t\timageCaptionEditing._saveCaption(selectedImage, captionElement);\n\t\twriter.setSelection(selectedImage, \"on\");\n\t\twriter.remove(captionElement);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagecaption/imagecaptionediting\n*/\n/**\n* The image caption engine plugin. It is responsible for:\n*\n* * registering converters for the caption element,\n* * registering converters for the caption model attribute,\n* * registering the {@link module:image/imagecaption/toggleimagecaptioncommand~ToggleImageCaptionCommand `toggleImageCaption`} command.\n*/\nvar ImageCaptionEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils, ImageCaptionUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaptionEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* A map that keeps saved JSONified image captions and image model elements they are\n\t* associated with.\n\t*\n\t* To learn more about this system, see {@link #_saveCaption}.\n\t*/\n\t_savedCaptionsMap;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis._savedCaptionsMap = /* @__PURE__ */ new WeakMap();\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tif (!schema.isRegistered(\"caption\")) schema.register(\"caption\", {\n\t\t\tallowIn: \"imageBlock\",\n\t\t\tallowContentOf: \"$block\",\n\t\t\tisLimit: true\n\t\t});\n\t\telse schema.extend(\"caption\", { allowIn: \"imageBlock\" });\n\t\teditor.commands.add(\"toggleImageCaption\", new ToggleImageCaptionCommand(this.editor));\n\t\tthis._setupConversion();\n\t\tthis._setupImageTypeCommandsIntegration();\n\t\tthis._registerCaptionReconversion();\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting\n\t* image captions.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst t = editor.t;\n\t\teditor.conversion.for(\"upcast\").elementToElement({\n\t\t\tview: (element) => imageCaptionUtils.matchImageCaptionViewElement(element),\n\t\t\tmodel: \"caption\"\n\t\t});\n\t\teditor.conversion.for(\"dataDowncast\").elementToElement({\n\t\t\tmodel: \"caption\",\n\t\t\tview: (modelElement, { writer }) => {\n\t\t\t\tif (!imageUtils.isBlockImage(modelElement.parent)) return null;\n\t\t\t\treturn writer.createContainerElement(\"figcaption\");\n\t\t\t}\n\t\t});\n\t\teditor.conversion.for(\"editingDowncast\").elementToElement({\n\t\t\tmodel: \"caption\",\n\t\t\tview: (modelElement, { writer }) => {\n\t\t\t\tif (!imageUtils.isBlockImage(modelElement.parent)) return null;\n\t\t\t\tconst figcaptionElement = writer.createEditableElement(\"figcaption\");\n\t\t\t\twriter.setCustomProperty(\"imageCaption\", true, figcaptionElement);\n\t\t\t\tfigcaptionElement.placeholder = t(\"Enter image caption\");\n\t\t\t\tenableViewPlaceholder({\n\t\t\t\t\tview,\n\t\t\t\t\telement: figcaptionElement,\n\t\t\t\t\tkeepOnFocus: true\n\t\t\t\t});\n\t\t\t\tconst imageAlt = modelElement.parent.getAttribute(\"alt\");\n\t\t\t\treturn toWidgetEditable(figcaptionElement, writer, { label: imageAlt ? t(\"Caption for image: %0\", [imageAlt]) : t(\"Caption for the image\") });\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Integrates with {@link module:image/image/imagetypecommand~ImageTypeCommand image type commands}\n\t* to make sure the caption is preserved when the type of an image changes so it can be restored\n\t* in the future if the user decides they want their caption back.\n\t*/\n\t_setupImageTypeCommandsIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst imageTypeInlineCommand = editor.commands.get(\"imageTypeInline\");\n\t\tconst imageTypeBlockCommand = editor.commands.get(\"imageTypeBlock\");\n\t\tconst handleImageTypeChange = (evt) => {\n\t\t\tif (!evt.return) return;\n\t\t\tconst { oldElement, newElement } = evt.return;\n\t\t\t/* istanbul ignore if: paranoid check -- @preserve */\n\t\t\tif (!oldElement) return;\n\t\t\tif (imageUtils.isBlockImage(oldElement)) {\n\t\t\t\tconst oldCaptionElement = imageCaptionUtils.getCaptionFromImageModelElement(oldElement);\n\t\t\t\tif (oldCaptionElement) {\n\t\t\t\t\tthis._saveCaption(newElement, oldCaptionElement);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst savedOldElementCaption = this._getSavedCaption(oldElement);\n\t\t\tif (savedOldElementCaption) this._saveCaption(newElement, savedOldElementCaption);\n\t\t};\n\t\tif (imageTypeInlineCommand) this.listenTo(imageTypeInlineCommand, \"execute\", handleImageTypeChange, { priority: \"low\" });\n\t\tif (imageTypeBlockCommand) this.listenTo(imageTypeBlockCommand, \"execute\", handleImageTypeChange, { priority: \"low\" });\n\t}\n\t/**\n\t* Returns the saved {@link module:engine/model/element~ModelElement#toJSON JSONified} caption\n\t* of an image model element.\n\t*\n\t* See {@link #_saveCaption}.\n\t*\n\t* @internal\n\t* @param imageModelElement The model element the caption should be returned for.\n\t* @returns The model caption element or `null` if there is none.\n\t*/\n\t_getSavedCaption(imageModelElement) {\n\t\tconst jsonObject = this._savedCaptionsMap.get(imageModelElement);\n\t\treturn jsonObject ? ModelElement.fromJSON(jsonObject) : null;\n\t}\n\t/**\n\t* Saves a {@link module:engine/model/element~ModelElement#toJSON JSONified} caption for\n\t* an image element to allow restoring it in the future.\n\t*\n\t* A caption is saved every time it gets hidden and/or the type of an image changes. The\n\t* user should be able to restore it on demand.\n\t*\n\t* **Note**: The caption cannot be stored in the image model element attribute because,\n\t* for instance, when the model state propagates to collaborators, the attribute would get\n\t* lost (mainly because it does not convert to anything when the caption is hidden) and\n\t* the states of collaborators' models would de-synchronize causing numerous issues.\n\t*\n\t* See {@link #_getSavedCaption}.\n\t*\n\t* @internal\n\t* @param imageModelElement The model element the caption is saved for.\n\t* @param caption The caption model element to be saved.\n\t*/\n\t_saveCaption(imageModelElement, caption) {\n\t\tthis._savedCaptionsMap.set(imageModelElement, caption.toJSON());\n\t}\n\t/**\n\t* Reconverts image caption when image alt attribute changes.\n\t* The change of alt attribute is reflected in caption's aria-label attribute.\n\t*/\n\t_registerCaptionReconversion() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tmodel.document.on(\"change:data\", () => {\n\t\t\tconst changes = model.document.differ.getChanges();\n\t\t\tfor (const change of changes) {\n\t\t\t\tif (change.attributeKey !== \"alt\") continue;\n\t\t\t\tconst image = change.range.start.nodeAfter;\n\t\t\t\tif (imageUtils.isBlockImage(image)) {\n\t\t\t\t\tconst caption = imageCaptionUtils.getCaptionFromImageModelElement(image);\n\t\t\t\t\tif (!caption) return;\n\t\t\t\t\teditor.editing.reconvertItem(caption);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagecaption/imagecaptionui\n*/\n/**\n* The image caption UI plugin. It introduces the `'toggleImageCaption'` UI button.\n*/\nvar ImageCaptionUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageCaptionUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaptionUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageCaptionUtils = editor.plugins.get(\"ImageCaptionUtils\");\n\t\tconst t = editor.t;\n\t\teditor.ui.componentFactory.add(\"toggleImageCaption\", (locale) => {\n\t\t\tconst command = editor.commands.get(\"toggleImageCaption\");\n\t\t\tconst view = new ButtonView(locale);\n\t\t\tview.set({\n\t\t\t\ticon: IconCaption,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t});\n\t\t\tview.bind(\"isOn\", \"isEnabled\").to(command, \"value\", \"isEnabled\");\n\t\t\tview.bind(\"label\").to(command, \"value\", (value) => value ? t(\"Toggle caption off\") : t(\"Toggle caption on\"));\n\t\t\tthis.listenTo(view, \"execute\", () => {\n\t\t\t\teditor.execute(\"toggleImageCaption\", { focusCaptionOnShow: true });\n\t\t\t\tconst modelCaptionElement = imageCaptionUtils.getCaptionFromModelSelection(editor.model.document.selection);\n\t\t\t\tif (modelCaptionElement) {\n\t\t\t\t\tconst figcaptionElement = editor.editing.mapper.toViewElement(modelCaptionElement);\n\t\t\t\t\teditingView.scrollToTheSelection();\n\t\t\t\t\teditingView.change((writer) => {\n\t\t\t\t\t\twriter.addClass(\"image__caption_highlighted\", figcaptionElement);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\teditor.editing.view.focus();\n\t\t\t});\n\t\t\treturn view;\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagecaption\n*/\n/**\n* The image caption plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-captions image caption} documentation.\n*/\nvar ImageCaption = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageCaptionEditing, ImageCaptionUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCaption\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Creates a regular expression used to test for image files.\n*\n* ```ts\n* const imageType = createImageTypeRegExp( [ 'png', 'jpeg', 'svg+xml', 'vnd.microsoft.icon' ] );\n*\n* console.log( 'is supported image', imageType.test( file.type ) );\n* ```\n*/\nfunction createImageTypeRegExp(types) {\n\tconst regExpSafeNames = types.map((type) => type.replace(\"+\", \"\\\\+\"));\n\treturn new RegExp(`^image\\\\/(${regExpSafeNames.join(\"|\")})$`);\n}\n/**\n* Creates a promise that fetches the image local source (Base64 or blob) and resolves with a `File` object.\n*\n* @internal\n* @param image Image whose source to fetch.\n* @returns A promise which resolves when an image source is fetched and converted to a `File` instance.\n* It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n*/\nfunction fetchLocalImage(image) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst imageSrc = image.getAttribute(\"src\");\n\t\tfetch(imageSrc).then((resource) => resource.blob()).then((blob) => {\n\t\t\tconst mimeType = getImageMimeType(blob, imageSrc);\n\t\t\tconst filename = `image.${mimeType.replace(\"image/\", \"\")}`;\n\t\t\tresolve(new File([blob], filename, { type: mimeType }));\n\t\t}).catch((err) => {\n\t\t\treturn err && err.name === \"TypeError\" ? convertLocalImageOnCanvas(imageSrc).then(resolve).catch(reject) : reject(err);\n\t\t});\n\t});\n}\n/**\n* Checks whether a given node is an image element with a local source (Base64 or blob).\n*\n* @param node The node to check.\n* @internal\n*/\nfunction isLocalImage(imageUtils, node) {\n\tif (!imageUtils.isInlineImageView(node) || !node.getAttribute(\"src\")) return false;\n\treturn !!node.getAttribute(\"src\").match(/^data:image\\/\\w+;base64,/g) || !!node.getAttribute(\"src\").match(/^blob:/g);\n}\n/**\n* Extracts an image type based on its blob representation or its source.\n* @param blob Image blob representation.\n* @param src Image `src` attribute value.\n*/\nfunction getImageMimeType(blob, src) {\n\tif (blob.type) return blob.type;\n\telse if (src.match(/data:(image\\/\\w+);base64/)) return src.match(/data:(image\\/\\w+);base64/)[1].toLowerCase();\n\telse return \"image/jpeg\";\n}\n/**\n* Creates a promise that converts the image local source (Base64 or blob) to a blob using canvas and resolves\n* with a `File` object.\n* @param imageSrc Image `src` attribute value.\n* @returns A promise which resolves when an image source is converted to a `File` instance.\n* It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n*/\nfunction convertLocalImageOnCanvas(imageSrc) {\n\treturn getBlobFromCanvas(imageSrc).then((blob) => {\n\t\tconst mimeType = getImageMimeType(blob, imageSrc);\n\t\tconst filename = `image.${mimeType.replace(\"image/\", \"\")}`;\n\t\treturn new File([blob], filename, { type: mimeType });\n\t});\n}\n/**\n* Creates a promise that resolves with a `Blob` object converted from the image source (Base64 or blob).\n* @param imageSrc Image `src` attribute value.\n*/\nfunction getBlobFromCanvas(imageSrc) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst image = global.document.createElement(\"img\");\n\t\timage.addEventListener(\"load\", () => {\n\t\t\tconst canvas = global.document.createElement(\"canvas\");\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\t\t\tcanvas.getContext(\"2d\").drawImage(image, 0, 0);\n\t\t\tcanvas.toBlob((blob) => blob ? resolve(blob) : reject());\n\t\t});\n\t\timage.addEventListener(\"error\", () => reject());\n\t\timage.src = imageSrc;\n\t});\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/imageuploadui\n*/\n/**\n* The image upload button plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature} documentation.\n*\n* Adds the `'uploadImage'` button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n* and also the `imageUpload` button as an alias for backward compatibility.\n*\n* Adds the `'menuBar:uploadImage'` menu button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}.\n*\n* It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are the default components\n* through which image upload is available.\n*/\nvar ImageUploadUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUploadUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\teditor.ui.componentFactory.add(\"uploadImage\", () => this._createToolbarButton());\n\t\teditor.ui.componentFactory.add(\"imageUpload\", () => this._createToolbarButton());\n\t\teditor.ui.componentFactory.add(\"menuBar:uploadImage\", () => this._createMenuBarButton(\"standalone\"));\n\t\tif (editor.plugins.has(\"ImageInsertUI\")) editor.plugins.get(\"ImageInsertUI\").registerIntegration({\n\t\t\tname: \"upload\",\n\t\t\tobservable: () => editor.commands.get(\"uploadImage\"),\n\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\tmenuBarButtonViewCreator: (isOnly) => this._createMenuBarButton(isOnly ? \"insertOnly\" : \"insertNested\")\n\t\t});\n\t}\n\t/**\n\t* Creates the base for various kinds of the button component provided by this feature.\n\t*/\n\t_createButton(ButtonClass) {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command = editor.commands.get(\"uploadImage\");\n\t\tconst imageTypes = editor.config.get(\"image.upload.types\");\n\t\tconst imageTypesRegExp = createImageTypeRegExp(imageTypes);\n\t\tconst view = new ButtonClass(editor.locale);\n\t\tconst t = locale.t;\n\t\tview.set({\n\t\t\tacceptedType: imageTypes.map((type) => `image/${type}`).join(\",\"),\n\t\t\tallowMultipleFiles: true,\n\t\t\tlabel: t(\"Upload from computer\"),\n\t\t\ticon: IconImageUpload\n\t\t});\n\t\tview.bind(\"isEnabled\").to(command);\n\t\tview.on(\"done\", (evt, files) => {\n\t\t\tconst imagesToUpload = Array.from(files).filter((file) => imageTypesRegExp.test(file.type));\n\t\t\tif (imagesToUpload.length) {\n\t\t\t\teditor.execute(\"uploadImage\", { file: imagesToUpload });\n\t\t\t\teditor.editing.view.focus();\n\t\t\t}\n\t\t});\n\t\treturn view;\n\t}\n\t/**\n\t* Creates a simple toolbar button, with an icon and a tooltip.\n\t*/\n\t_createToolbarButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI = this.editor.plugins.get(\"ImageInsertUI\");\n\t\tconst uploadImageCommand = this.editor.commands.get(\"uploadImage\");\n\t\tconst button = this._createButton(FileDialogButtonView);\n\t\tbutton.tooltip = true;\n\t\tbutton.bind(\"label\").to(imageInsertUI, \"isImageSelected\", uploadImageCommand, \"isAccessAllowed\", (isImageSelected, isAccessAllowed) => {\n\t\t\tif (!isAccessAllowed) return t(\"You have no image upload permissions.\");\n\t\t\treturn isImageSelected ? t(\"Replace image from computer\") : t(\"Upload image from computer\");\n\t\t});\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t*/\n\t_createDropdownButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI = this.editor.plugins.get(\"ImageInsertUI\");\n\t\tconst button = this._createButton(FileDialogButtonView);\n\t\tbutton.withText = true;\n\t\tbutton.bind(\"label\").to(imageInsertUI, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Replace from computer\") : t(\"Upload from computer\"));\n\t\tbutton.on(\"execute\", () => {\n\t\t\timageInsertUI.dropdownView.isOpen = false;\n\t\t});\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the menu bar.\n\t*/\n\t_createMenuBarButton(type) {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createButton(MenuBarMenuListItemFileDialogButtonView);\n\t\tbutton.withText = true;\n\t\tswitch (type) {\n\t\t\tcase \"standalone\":\n\t\t\t\tbutton.label = t(\"Image from computer\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertOnly\":\n\t\t\t\tbutton.label = t(\"Image\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertNested\":\n\t\t\t\tbutton.label = t(\"From computer\");\n\t\t\t\tbreak;\n\t\t}\n\t\treturn button;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/imageuploadprogress\n*/\n/**\n* The image upload progress plugin.\n* It shows a placeholder when the image is read from the disk and a progress bar while the image is uploading.\n*/\nvar ImageUploadProgress = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUploadProgress\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* The image placeholder that is displayed before real image data can be accessed.\n\t*\n\t* For the record, this image is a 1x1 px GIF with an aspect ratio set by CSS.\n\t*/\n\tplaceholder;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis.placeholder = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tif (editor.plugins.has(\"ImageBlockEditing\")) editor.editing.downcastDispatcher.on(\"attribute:uploadStatus:imageBlock\", this.uploadStatusChange);\n\t\tif (editor.plugins.has(\"ImageInlineEditing\")) editor.editing.downcastDispatcher.on(\"attribute:uploadStatus:imageInline\", this.uploadStatusChange);\n\t}\n\t/**\n\t* This method is called each time the image `uploadStatus` attribute is changed.\n\t*\n\t* @param evt An object containing information about the fired event.\n\t* @param data Additional information about the change.\n\t*/\n\tuploadStatusChange = (evt, data, conversionApi) => {\n\t\tconst editor = this.editor;\n\t\tconst modelImage = data.item;\n\t\tconst uploadId = modelImage.getAttribute(\"uploadId\");\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst fileRepository = editor.plugins.get(FileRepository);\n\t\tconst status = uploadId ? data.attributeNewValue : null;\n\t\tconst placeholder = this.placeholder;\n\t\tconst viewFigure = editor.editing.mapper.toViewElement(modelImage);\n\t\tconst viewWriter = conversionApi.writer;\n\t\tif (status == \"reading\") {\n\t\t\t_startAppearEffect(viewFigure, viewWriter);\n\t\t\t_showPlaceholder(imageUtils, placeholder, viewFigure, viewWriter);\n\t\t\treturn;\n\t\t}\n\t\tif (status == \"uploading\") {\n\t\t\tconst loader = fileRepository.loaders.get(uploadId);\n\t\t\t_startAppearEffect(viewFigure, viewWriter);\n\t\t\tif (!loader) _showPlaceholder(imageUtils, placeholder, viewFigure, viewWriter);\n\t\t\telse {\n\t\t\t\t_hidePlaceholder(viewFigure, viewWriter);\n\t\t\t\t_showProgressBar(viewFigure, viewWriter, loader, editor.editing.view);\n\t\t\t\t_displayLocalImage(imageUtils, viewFigure, viewWriter, loader);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (status == \"complete\" && fileRepository.loaders.get(uploadId)) _showCompleteIcon(viewFigure, viewWriter, editor.editing.view);\n\t\t_hideProgressBar(viewFigure, viewWriter);\n\t\t_hidePlaceholder(viewFigure, viewWriter);\n\t\t_stopAppearEffect(viewFigure, viewWriter);\n\t};\n};\n/**\n* Adds ck-appear class to the image figure if one is not already applied.\n*/\nfunction _startAppearEffect(viewFigure, writer) {\n\tif (!viewFigure.hasClass(\"ck-appear\")) writer.addClass(\"ck-appear\", viewFigure);\n}\n/**\n* Removes ck-appear class to the image figure if one is not already removed.\n*/\nfunction _stopAppearEffect(viewFigure, writer) {\n\twriter.removeClass(\"ck-appear\", viewFigure);\n}\n/**\n* Shows placeholder together with infinite progress bar on given image figure.\n*/\nfunction _showPlaceholder(imageUtils, placeholder, viewFigure, writer) {\n\tif (!viewFigure.hasClass(\"ck-image-upload-placeholder\")) writer.addClass(\"ck-image-upload-placeholder\", viewFigure);\n\tconst viewImg = imageUtils.findViewImgElement(viewFigure);\n\tif (viewImg.getAttribute(\"src\") !== placeholder) writer.setAttribute(\"src\", placeholder, viewImg);\n\tif (!_getUIElement(viewFigure, \"placeholder\")) writer.insert(writer.createPositionAfter(viewImg), _createPlaceholder(writer));\n}\n/**\n* Removes placeholder together with infinite progress bar on given image figure.\n*/\nfunction _hidePlaceholder(viewFigure, writer) {\n\tif (viewFigure.hasClass(\"ck-image-upload-placeholder\")) writer.removeClass(\"ck-image-upload-placeholder\", viewFigure);\n\t_removeUIElement(viewFigure, writer, \"placeholder\");\n}\n/**\n* Shows progress bar displaying upload progress.\n* Attaches it to the file loader to update when upload percentace is changed.\n*/\nfunction _showProgressBar(viewFigure, writer, loader, view) {\n\tconst progressBar = _createProgressBar(writer);\n\twriter.insert(writer.createPositionAt(viewFigure, \"end\"), progressBar);\n\tloader.on(\"change:uploadedPercent\", (evt, name, value) => {\n\t\tview.change((writer) => {\n\t\t\twriter.setStyle(\"width\", value + \"%\", progressBar);\n\t\t});\n\t});\n}\n/**\n* Hides upload progress bar.\n*/\nfunction _hideProgressBar(viewFigure, writer) {\n\t_removeUIElement(viewFigure, writer, \"progressBar\");\n}\n/**\n* Shows complete icon and hides after a certain amount of time.\n*/\nfunction _showCompleteIcon(viewFigure, writer, view) {\n\tconst completeIcon = writer.createUIElement(\"div\", { class: \"ck-image-upload-complete-icon\" });\n\twriter.insert(writer.createPositionAt(viewFigure, \"end\"), completeIcon);\n\tsetTimeout(() => {\n\t\tview.change((writer) => writer.remove(writer.createRangeOn(completeIcon)));\n\t}, 3e3);\n}\n/**\n* Create progress bar element using {@link module:engine/view/uielement~ViewUIElement}.\n*/\nfunction _createProgressBar(writer) {\n\tconst progressBar = writer.createUIElement(\"div\", { class: \"ck-progress-bar\" });\n\twriter.setCustomProperty(\"progressBar\", true, progressBar);\n\treturn progressBar;\n}\n/**\n* Create placeholder element using {@link module:engine/view/uielement~ViewUIElement}.\n*/\nfunction _createPlaceholder(writer) {\n\tconst placeholder = writer.createUIElement(\"div\", { class: \"ck-upload-placeholder-loader\" });\n\twriter.setCustomProperty(\"placeholder\", true, placeholder);\n\treturn placeholder;\n}\n/**\n* Returns {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n* Returns `undefined` if element is not found.\n*/\nfunction _getUIElement(imageFigure, uniqueProperty) {\n\tfor (const child of imageFigure.getChildren()) if (child.getCustomProperty(uniqueProperty)) return child;\n}\n/**\n* Removes {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n*/\nfunction _removeUIElement(viewFigure, writer, uniqueProperty) {\n\tconst element = _getUIElement(viewFigure, uniqueProperty);\n\tif (element) writer.remove(writer.createRangeOn(element));\n}\n/**\n* Displays local data from file loader.\n*/\nfunction _displayLocalImage(imageUtils, viewFigure, writer, loader) {\n\tif (loader.data) {\n\t\tconst viewImg = imageUtils.findViewImgElement(viewFigure);\n\t\twriter.setAttribute(\"src\", loader.data, viewImg);\n\t}\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/uploadimagecommand\n*/\n/**\n* The upload image command.\n*\n* The command is registered by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin as `uploadImage`\n* and it is also available via aliased `imageUpload` name.\n*\n* In order to upload an image at the current selection position\n* (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n* execute the command and pass the native image file instance:\n*\n* ```ts\n* this.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n* \t// Assuming that only images were pasted:\n* \tconst images = Array.from( data.dataTransfer.files );\n*\n* \t// Upload the first image:\n* \teditor.execute( 'uploadImage', { file: images[ 0 ] } );\n* } );\n* ```\n*\n* It is also possible to insert multiple images at once:\n*\n* ```ts\n* editor.execute( 'uploadImage', {\n* \tfile: [\n* \t\tfile1,\n* \t\tfile2\n* \t]\n* } );\n* ```\n*/\nvar UploadImageCommand = class extends Command {\n\t/**\n\t* Creates an instance of the `imageUlpoad` command. When executed, the command upload one of\n\t* the currently selected image from computer.\n\t*\n\t* @param editor The editor instance.\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis.set(\"isAccessAllowed\", true);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst selectedElement = editor.model.document.selection.getSelectedElement();\n\t\tthis.isEnabled = imageUtils.isImageAllowed() || imageUtils.isImage(selectedElement);\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* @fires execute\n\t* @param options Options for the executed command.\n\t* @param options.file The image file or an array of image files to upload.\n\t*/\n\texecute(options) {\n\t\tconst files = toArray(options.file);\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst selectionAttributes = Object.fromEntries(selection.getAttributes());\n\t\tfiles.forEach((file, index) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\t\t\tif (index && selectedElement && imageUtils.isImage(selectedElement)) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter(selectedElement);\n\t\t\t\tthis._uploadImage(file, selectionAttributes, position);\n\t\t\t} else this._uploadImage(file, selectionAttributes);\n\t\t});\n\t}\n\t/**\n\t* Handles uploading single file.\n\t*/\n\t_uploadImage(file, attributes, position) {\n\t\tconst editor = this.editor;\n\t\tconst loader = editor.plugins.get(FileRepository).createLoader(file);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tif (!loader) return;\n\t\timageUtils.insertImage({\n\t\t\t...attributes,\n\t\t\tuploadId: loader.id\n\t\t}, position);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload/imageuploadediting\n*/\n/**\n* The editing part of the image upload feature. It registers the `'uploadImage'` command\n* and the `imageUpload` command as an aliased name.\n*\n* When an image is uploaded, it fires the {@link ~ImageUploadEditing#event:uploadComplete `uploadComplete`} event\n* that allows adding custom attributes to the {@link module:engine/model/element~ModelElement image element}.\n*/\nvar ImageUploadEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tFileRepository,\n\t\t\tNotification,\n\t\t\tClipboardPipeline,\n\t\t\tImageUtils\n\t\t];\n\t}\n\tstatic get pluginName() {\n\t\treturn \"ImageUploadEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t* model elements during the upload.\n\t*\n\t* Model element of the uploaded image can change, for instance, when {@link module:image/image/imagetypecommand~ImageTypeCommand}\n\t* is executed as a result of adding caption or changing image style. As a result, the upload logic must keep track of the model\n\t* element (reference) and resolve the upload for the correct model element (instead of the one that landed in the `$graveyard`\n\t* after image type changed).\n\t*/\n\t_uploadImageElements;\n\t/**\n\t* An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t* upload responses for handling images dragged during their upload process. When such images are later\n\t* dropped, their original upload IDs no longer exist in the registry (as the original upload completed).\n\t* This map preserves the upload responses to properly handle such cases.\n\t*/\n\t_uploadedImages = /* @__PURE__ */ new Map();\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\teditor.config.define(\"image\", { upload: { types: [\n\t\t\t\"jpeg\",\n\t\t\t\"png\",\n\t\t\t\"gif\",\n\t\t\t\"bmp\",\n\t\t\t\"webp\",\n\t\t\t\"tiff\"\n\t\t] } });\n\t\tthis._uploadImageElements = /* @__PURE__ */ new Map();\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst doc = editor.model.document;\n\t\tconst conversion = editor.conversion;\n\t\tconst fileRepository = editor.plugins.get(FileRepository);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst clipboardPipeline = editor.plugins.get(\"ClipboardPipeline\");\n\t\tconst imageTypes = createImageTypeRegExp(editor.config.get(\"image.upload.types\"));\n\t\tconst uploadImageCommand = new UploadImageCommand(editor);\n\t\teditor.commands.add(\"uploadImage\", uploadImageCommand);\n\t\teditor.commands.add(\"imageUpload\", uploadImageCommand);\n\t\tconversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: \"img\",\n\t\t\t\tkey: \"uploadId\"\n\t\t\t},\n\t\t\tmodel: \"uploadId\"\n\t\t}).add((dispatcher) => dispatcher.on(\"element:img\", (evt, data, conversionApi) => {\n\t\t\tif (!conversionApi.consumable.test(data.viewItem, { attributes: [\"data-ck-upload-id\"] })) return;\n\t\t\tconst uploadId = data.viewItem.getAttribute(\"data-ck-upload-id\");\n\t\t\tif (!uploadId) return;\n\t\t\tif (!data.modelRange) return;\n\t\t\tconst [modelElement] = Array.from(data.modelRange.getItems({ shallow: true }));\n\t\t\tconst loader = fileRepository.loaders.get(uploadId);\n\t\t\t/* v8 ignore else -- @preserve */\n\t\t\tif (modelElement) {\n\t\t\t\tconversionApi.writer.setAttribute(\"uploadId\", uploadId, modelElement);\n\t\t\t\tconversionApi.consumable.consume(data.viewItem, { attributes: [\"data-ck-upload-id\"] });\n\t\t\t\tif (loader && loader.data) conversionApi.writer.setAttribute(\"uploadStatus\", loader.status, modelElement);\n\t\t\t}\n\t\t}, { priority: \"low\" }));\n\t\tthis.listenTo(editor.editing.view.document, \"clipboardInput\", (evt, data) => {\n\t\t\tif (isHtmlInDataTransfer(data.dataTransfer)) return;\n\t\t\tconst images = Array.from(data.dataTransfer.files).filter((file) => {\n\t\t\t\tif (!file) return false;\n\t\t\t\treturn imageTypes.test(file.type);\n\t\t\t});\n\t\t\tif (!images.length) return;\n\t\t\tevt.stop();\n\t\t\teditor.model.change((writer) => {\n\t\t\t\tif (data.targetRanges) writer.setSelection(data.targetRanges.map((viewRange) => editor.editing.mapper.toModelRange(viewRange)));\n\t\t\t\teditor.execute(\"uploadImage\", { file: images });\n\t\t\t});\n\t\t\tif (!editor.commands.get(\"uploadImage\").isAccessAllowed) {\n\t\t\t\tconst notification = editor.plugins.get(\"Notification\");\n\t\t\t\tconst t = editor.locale.t;\n\t\t\t\tnotification.showWarning(t(\"You have no image upload permissions.\"), { namespace: \"image\" });\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(clipboardPipeline, \"inputTransformation\", (evt, data) => {\n\t\t\tconst fetchableImages = Array.from(editor.editing.view.createRangeIn(data.content)).map((value) => value.item).filter((viewElement) => isLocalImage(imageUtils, viewElement) && !viewElement.getAttribute(\"uploadProcessed\")).map((viewElement) => {\n\t\t\t\treturn {\n\t\t\t\t\tpromise: fetchLocalImage(viewElement),\n\t\t\t\t\timageElement: viewElement\n\t\t\t\t};\n\t\t\t});\n\t\t\tif (!fetchableImages.length) return;\n\t\t\tconst writer = new ViewUpcastWriter(editor.editing.view.document);\n\t\t\tfor (const fetchableImage of fetchableImages) {\n\t\t\t\twriter.setAttribute(\"uploadProcessed\", true, fetchableImage.imageElement);\n\t\t\t\tconst loader = fileRepository.createLoader(fetchableImage.promise);\n\t\t\t\tif (loader) {\n\t\t\t\t\twriter.setAttribute(\"src\", \"\", fetchableImage.imageElement);\n\t\t\t\t\twriter.setAttribute(\"uploadId\", loader.id, fetchableImage.imageElement);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\teditor.editing.view.document.on(\"dragover\", (evt, data) => {\n\t\t\tdata.preventDefault();\n\t\t});\n\t\tdoc.on(\"change\", () => {\n\t\t\tconst changes = doc.differ.getChanges({ includeChangesInGraveyard: true }).reverse();\n\t\t\tconst insertedImagesIds = /* @__PURE__ */ new Set();\n\t\t\tfor (const entry of changes) if (entry.type == \"insert\" && entry.name != \"$text\") {\n\t\t\t\tconst item = entry.position.nodeAfter;\n\t\t\t\tconst isInsertedInGraveyard = entry.position.root.rootName == \"$graveyard\";\n\t\t\t\tfor (const imageElement of getImagesFromChangeItem(editor, item)) {\n\t\t\t\t\tconst uploadId = imageElement.getAttribute(\"uploadId\");\n\t\t\t\t\tconst uploadStatus = imageElement.getAttribute(\"uploadStatus\");\n\t\t\t\t\tif (!uploadId || uploadStatus == \"complete\") continue;\n\t\t\t\t\tconst loader = fileRepository.loaders.get(uploadId);\n\t\t\t\t\tif (!loader) {\n\t\t\t\t\t\tif (!isInsertedInGraveyard && this._uploadedImages.has(uploadId)) editor.model.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\t\t\t\twriter.setAttribute(\"uploadStatus\", \"complete\", imageElement);\n\t\t\t\t\t\t\tthis.fire(\"uploadComplete\", {\n\t\t\t\t\t\t\t\tdata: this._uploadedImages.get(uploadId),\n\t\t\t\t\t\t\t\timageElement\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (isInsertedInGraveyard) {\n\t\t\t\t\t\tif (!insertedImagesIds.has(uploadId)) {\n\t\t\t\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\t\t\t\tif (Array.from(this._uploadImageElements.get(uploadId)).every((element) => element.root.rootName == \"$graveyard\")) loader.abort();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinsertedImagesIds.add(uploadId);\n\t\t\t\t\t\tif (!this._uploadImageElements.has(uploadId)) this._uploadImageElements.set(uploadId, /* @__PURE__ */ new Set([imageElement]));\n\t\t\t\t\t\telse this._uploadImageElements.get(uploadId).add(imageElement);\n\t\t\t\t\t\tif (loader.status == \"idle\") this._readAndUpload(loader);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.on(\"uploadComplete\", (evt, { imageElement, data }) => {\n\t\t\tconst urls = data.urls ? data.urls : data;\n\t\t\tthis.editor.model.change((writer) => {\n\t\t\t\twriter.setAttribute(\"src\", urls.default, imageElement);\n\t\t\t\tthis._parseAndSetSrcsetAttributeOnImage(urls, imageElement, writer);\n\t\t\t\timageUtils.setImageNaturalSizeAttributes(imageElement);\n\t\t\t});\n\t\t}, { priority: \"low\" });\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (this.editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\tschema.extend(\"imageBlock\", { allowAttributes: [\"uploadId\", \"uploadStatus\"] });\n\t\t\tthis._registerConverters(\"imageBlock\");\n\t\t}\n\t\tif (this.editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\tschema.extend(\"imageInline\", { allowAttributes: [\"uploadId\", \"uploadStatus\"] });\n\t\t\tthis._registerConverters(\"imageInline\");\n\t\t}\n\t}\n\t/**\n\t* Reads and uploads an image.\n\t*\n\t* The image is read from the disk and as a Base64-encoded string it is set temporarily to\n\t* `image[src]`. When the image is successfully uploaded, the temporary data is replaced with the target\n\t* image's URL (the URL to the uploaded image on the server).\n\t*/\n\t_readAndUpload(loader) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst t = editor.locale.t;\n\t\tconst fileRepository = editor.plugins.get(FileRepository);\n\t\tconst notification = editor.plugins.get(Notification);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageUploadElements = this._uploadImageElements;\n\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\tconst elements = imageUploadElements.get(loader.id);\n\t\t\tfor (const element of elements) writer.setAttribute(\"uploadStatus\", \"reading\", element);\n\t\t});\n\t\treturn loader.read().then(() => {\n\t\t\tconst promise = loader.upload();\n\t\t\t/* v8 ignore else -- @preserve */\n\t\t\tif (editor.ui) editor.ui.ariaLiveAnnouncer.announce(t(\"Uploading image\"));\n\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) {\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif (env.isSafari) {\n\t\t\t\t\tconst viewFigure = editor.editing.mapper.toViewElement(imageElement);\n\t\t\t\t\tconst viewImg = imageUtils.findViewImgElement(viewFigure);\n\t\t\t\t\teditor.editing.view.once(\"render\", () => {\n\t\t\t\t\t\tif (!viewImg.parent) return;\n\t\t\t\t\t\tconst domFigure = editor.editing.view.domConverter.mapViewToDom(viewImg.parent);\n\t\t\t\t\t\tif (!domFigure) return;\n\t\t\t\t\t\tconst originalDisplay = domFigure.style.display;\n\t\t\t\t\t\tdomFigure.style.display = \"none\";\n\t\t\t\t\t\tdomFigure._ckHack = domFigure.offsetHeight;\n\t\t\t\t\t\tdomFigure.style.display = originalDisplay;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\t\twriter.setAttribute(\"uploadStatus\", \"uploading\", imageElement);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn promise;\n\t\t}).then((data) => {\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) {\n\t\t\t\t\twriter.setAttribute(\"uploadStatus\", \"complete\", imageElement);\n\t\t\t\t\tthis.fire(\"uploadComplete\", {\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\timageElement\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\tif (editor.ui) editor.ui.ariaLiveAnnouncer.announce(t(\"Image upload complete\"));\n\t\t\t\tthis._uploadedImages.set(loader.id, data);\n\t\t\t});\n\t\t\tclean();\n\t\t}).catch((error) => {\n\t\t\t/* v8 ignore else -- @preserve */\n\t\t\tif (editor.ui) editor.ui.ariaLiveAnnouncer.announce(t(\"Error during image upload\"));\n\t\t\tif (loader.status !== \"error\" && loader.status !== \"aborted\") throw error;\n\t\t\tif (loader.status == \"error\" && error) notification.showWarning(error, {\n\t\t\t\ttitle: t(\"Upload failed\"),\n\t\t\t\tnamespace: \"upload\"\n\t\t\t});\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) if (imageElement.root.rootName !== \"$graveyard\") writer.remove(imageElement);\n\t\t\t});\n\t\t\tclean();\n\t\t});\n\t\tfunction clean() {\n\t\t\tmodel.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\tfor (const imageElement of imageUploadElements.get(loader.id)) {\n\t\t\t\t\twriter.removeAttribute(\"uploadId\", imageElement);\n\t\t\t\t\twriter.removeAttribute(\"uploadStatus\", imageElement);\n\t\t\t\t}\n\t\t\t\timageUploadElements.delete(loader.id);\n\t\t\t});\n\t\t\tfileRepository.destroyLoader(loader);\n\t\t}\n\t}\n\t/**\n\t* Creates the `srcset` attribute based on a given file upload response and sets it as an attribute to a specific image element.\n\t*\n\t* @param data Data object from which `srcset` will be created.\n\t* @param image The image element on which the `srcset` attribute will be set.\n\t*/\n\t_parseAndSetSrcsetAttributeOnImage(data, image, writer) {\n\t\tlet maxWidth = 0;\n\t\tconst srcsetAttribute = Object.keys(data).filter((key) => {\n\t\t\tconst width = parseInt(key, 10);\n\t\t\tif (!isNaN(width)) {\n\t\t\t\tmaxWidth = Math.max(maxWidth, width);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}).map((key) => `${data[key]} ${key}w`).join(\", \");\n\t\tif (srcsetAttribute != \"\") {\n\t\t\tconst attributes = { srcset: srcsetAttribute };\n\t\t\tif (!image.hasAttribute(\"width\") && !image.hasAttribute(\"height\")) attributes.width = maxWidth;\n\t\t\twriter.setAttributes(attributes, image);\n\t\t}\n\t}\n\t/**\n\t* Registers image upload converters.\n\t*\n\t* @param imageType The type of the image.\n\t*/\n\t_registerConverters(imageType) {\n\t\tconst { conversion, plugins } = this.editor;\n\t\tconst fileRepository = plugins.get(FileRepository);\n\t\tconst imageUtils = plugins.get(ImageUtils);\n\t\tconversion.for(\"dataDowncast\").add((dispatcher) => {\n\t\t\tdispatcher.on(`attribute:uploadId:${imageType}`, (evt, data, conversionApi) => {\n\t\t\t\tif (!conversionApi.consumable.test(data.item, evt.name)) return;\n\t\t\t\tconst loader = fileRepository.loaders.get(data.attributeNewValue);\n\t\t\t\tif (!loader || !loader.data) return null;\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement(data.item);\n\t\t\t\tconst img = imageUtils.findViewImgElement(viewElement);\n\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\tif (img) {\n\t\t\t\t\tconversionApi.consumable.consume(data.item, evt.name);\n\t\t\t\t\tconversionApi.writer.setAttribute(\"data-ck-upload-id\", loader.id, img);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* TODO move this to the clipboard package.\n*\n* Returns `true` if non-empty `text/html` is included in the data transfer.\n*/\nfunction isHtmlInDataTransfer(dataTransfer) {\n\treturn Array.from(dataTransfer.types).includes(\"text/html\") && dataTransfer.getData(\"text/html\") !== \"\";\n}\nfunction getImagesFromChangeItem(editor, item) {\n\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\treturn Array.from(editor.model.createRangeOn(item)).filter((value) => imageUtils.isImage(value.item)).map((value) => value.item);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageupload\n*/\n/**\n* The image upload plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload image upload feature} documentation.\n*\n* This plugin does not do anything directly, but it loads a set of specific plugins to enable image uploading:\n*\n* * {@link module:image/imageupload/imageuploadediting~ImageUploadEditing},\n* * {@link module:image/imageupload/imageuploadui~ImageUploadUI},\n* * {@link module:image/imageupload/imageuploadprogress~ImageUploadProgress}.\n*/\nvar ImageUpload = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageUpload\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageUploadEditing,\n\t\t\tImageUploadUI,\n\t\t\tImageUploadProgress\n\t\t];\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/ui/imageinserturlview\n*/\n/**\n* The insert an image via URL view.\n*\n* See {@link module:image/imageinsert/imageinsertviaurlui~ImageInsertViaUrlUI}.\n*\n* @internal\n*/\nvar ImageInsertUrlView = class extends View {\n\t/**\n\t* The URL input field view.\n\t*/\n\turlInputView;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t*\n\t* @param locale The localization services instance.\n\t*/\n\tconstructor(locale) {\n\t\tsuper(locale);\n\t\tthis.set(\"imageURLInputValue\", \"\");\n\t\tthis.set(\"isImageSelected\", false);\n\t\tthis.set(\"isEnabled\", true);\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.urlInputView = this._createUrlInputView();\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\"ck\", \"ck-image-insert-url\"],\n\t\t\t\ttabindex: \"-1\"\n\t\t\t},\n\t\t\tchildren: [this.urlInputView, {\n\t\t\t\ttag: \"div\",\n\t\t\t\tattributes: { class: [\"ck\", \"ck-image-insert-url__action-row\"] }\n\t\t\t}]\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\tthis.keystrokes.listenTo(this.element);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Creates the {@link #urlInputView}.\n\t*/\n\t_createUrlInputView() {\n\t\tconst locale = this.locale;\n\t\tconst t = locale.t;\n\t\tconst urlInputView = new LabeledFieldView(locale, createLabeledInputText);\n\t\turlInputView.bind(\"label\").to(this, \"isImageSelected\", (value) => value ? t(\"Update image URL\") : t(\"Insert image via URL\"));\n\t\turlInputView.bind(\"isEnabled\").to(this);\n\t\turlInputView.fieldView.inputMode = \"url\";\n\t\turlInputView.fieldView.placeholder = \"https://example.com/image.png\";\n\t\turlInputView.fieldView.bind(\"value\").to(this, \"imageURLInputValue\", (value) => value || \"\");\n\t\turlInputView.fieldView.on(\"input\", () => {\n\t\t\tthis.imageURLInputValue = urlInputView.fieldView.element.value.trim();\n\t\t});\n\t\treturn urlInputView;\n\t}\n\t/**\n\t* Focuses the view.\n\t*/\n\tfocus() {\n\t\tthis.urlInputView.focus();\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert/imageinsertviaurlui\n*/\n/**\n* The image insert via URL plugin (UI part).\n*\n* The plugin introduces two UI components to the {@link module:ui/componentfactory~ComponentFactory UI component factory}:\n*\n* * the `'insertImageViaUrl'` toolbar button,\n* * the `'menuBar:insertImageViaUrl'` menu bar component.\n*\n* It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are default components\n* through which inserting image via URL is available.\n*/\nvar ImageInsertViaUrlUI = class extends Plugin {\n\t_imageInsertUI;\n\t_formView;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsertViaUrlUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageInsertUI, Dialog];\n\t}\n\tinit() {\n\t\tthis.editor.ui.componentFactory.add(\"insertImageViaUrl\", () => this._createToolbarButton());\n\t\tthis.editor.ui.componentFactory.add(\"menuBar:insertImageViaUrl\", () => this._createMenuBarButton(\"standalone\"));\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._imageInsertUI = this.editor.plugins.get(\"ImageInsertUI\");\n\t\tthis._imageInsertUI.registerIntegration({\n\t\t\tname: \"url\",\n\t\t\tobservable: () => this.editor.commands.get(\"insertImage\"),\n\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\tmenuBarButtonViewCreator: (isOnly) => this._createMenuBarButton(isOnly ? \"insertOnly\" : \"insertNested\")\n\t\t});\n\t}\n\t/**\n\t* Creates the base for various kinds of the button component provided by this feature.\n\t*/\n\t_createInsertUrlButton(ButtonClass) {\n\t\tconst button = new ButtonClass(this.editor.locale);\n\t\tbutton.icon = IconImageUrl;\n\t\tbutton.on(\"execute\", () => {\n\t\t\tthis._showModal();\n\t\t});\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a simple toolbar button, with an icon and a tooltip.\n\t*/\n\t_createToolbarButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton(ButtonView);\n\t\tbutton.tooltip = true;\n\t\tbutton.bind(\"label\").to(this._imageInsertUI, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Update image URL\") : t(\"Insert image via URL\"));\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t*/\n\t_createDropdownButton() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton(ButtonView);\n\t\tbutton.withText = true;\n\t\tbutton.bind(\"label\").to(this._imageInsertUI, \"isImageSelected\", (isImageSelected) => isImageSelected ? t(\"Update image URL\") : t(\"Insert via URL\"));\n\t\treturn button;\n\t}\n\t/**\n\t* Creates a button for the menu bar.\n\t*/\n\t_createMenuBarButton(type) {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton(MenuBarMenuListItemButtonView);\n\t\tbutton.withText = true;\n\t\tswitch (type) {\n\t\t\tcase \"standalone\":\n\t\t\t\tbutton.label = t(\"Image via URL\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertOnly\":\n\t\t\t\tbutton.label = t(\"Image\");\n\t\t\t\tbreak;\n\t\t\tcase \"insertNested\":\n\t\t\t\tbutton.label = t(\"Via URL\");\n\t\t\t\tbreak;\n\t\t}\n\t\treturn button;\n\t}\n\t/**\n\t* Creates the form view used to submit the image URL.\n\t*/\n\t_createInsertUrlView() {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst replaceImageSourceCommand = editor.commands.get(\"replaceImageSource\");\n\t\tconst insertImageCommand = editor.commands.get(\"insertImage\");\n\t\tconst imageInsertUrlView = new ImageInsertUrlView(locale);\n\t\timageInsertUrlView.bind(\"isImageSelected\").to(this._imageInsertUI);\n\t\timageInsertUrlView.bind(\"isEnabled\").toMany([insertImageCommand, replaceImageSourceCommand], \"isEnabled\", (...isEnabled) => isEnabled.some((isCommandEnabled) => isCommandEnabled));\n\t\treturn imageInsertUrlView;\n\t}\n\t/**\n\t* Shows the insert image via URL form view in a modal.\n\t*/\n\t_showModal() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst dialog = editor.plugins.get(\"Dialog\");\n\t\tif (!this._formView) {\n\t\t\tthis._formView = this._createInsertUrlView();\n\t\t\tthis._formView.on(\"submit\", () => this._handleSave());\n\t\t}\n\t\tconst replaceImageSourceCommand = editor.commands.get(\"replaceImageSource\");\n\t\tthis._formView.imageURLInputValue = replaceImageSourceCommand.value || \"\";\n\t\tdialog.show({\n\t\t\tid: \"insertImageViaUrl\",\n\t\t\ttitle: t(\"Image via URL\"),\n\t\t\tisModal: true,\n\t\t\tcontent: this._formView,\n\t\t\tactionButtons: [{\n\t\t\t\tlabel: t(\"Cancel\"),\n\t\t\t\twithText: true,\n\t\t\t\tonExecute: () => dialog.hide()\n\t\t\t}, {\n\t\t\t\tlabel: this._imageInsertUI.isImageSelected ? t(\"Save\") : t(\"Insert\"),\n\t\t\t\tclass: \"ck-button-action\",\n\t\t\t\twithText: true,\n\t\t\t\tonExecute: () => this._handleSave()\n\t\t\t}]\n\t\t});\n\t}\n\t/**\n\t* Executes appropriate command depending on selection and form value.\n\t*/\n\t_handleSave() {\n\t\tif (this.editor.commands.get(\"replaceImageSource\").isEnabled) this.editor.execute(\"replaceImageSource\", { source: this._formView.imageURLInputValue });\n\t\telse this.editor.execute(\"insertImage\", { source: this._formView.imageURLInputValue });\n\t\tthis.editor.plugins.get(\"Dialog\").hide();\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsertviaurl\n*/\n/**\n* The image insert via URL plugin.\n*\n* For a detailed overview, check the {@glink features/images/images-inserting\n* Insert images via source URL} documentation.\n*\n* This plugin does not do anything directly, but it loads a set of specific plugins\n* to enable image inserting via implemented integrations:\n*\n* * {@link module:image/imageinsert/imageinsertui~ImageInsertUI},\n*/\nvar ImageInsertViaUrl = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsertViaUrl\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageInsertViaUrlUI, ImageInsertUI];\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageinsert\n*/\n/**\n* The image insert plugin.\n*\n* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n* and {@glink features/images/images-inserting Insert images via source URL} documentation.\n*\n* This plugin does not do anything directly, but it loads a set of specific plugins\n* to enable image uploading or inserting via implemented integrations:\n*\n* * {@link module:image/imageupload~ImageUpload}\n* * {@link module:image/imageinsert/imageinsertui~ImageInsertUI}\n*/\nvar ImageInsert = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageInsert\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageUpload,\n\t\t\tImageInsertViaUrl,\n\t\t\tImageInsertUI\n\t\t];\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/resizeimagecommand\n*/\n/**\n* The resize image command. Currently, it only supports the width attribute.\n*/\nvar ResizeImageCommand = class extends Command {\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst element = editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(editor.model.document.selection);\n\t\tthis.isEnabled = !!element;\n\t\tif (!element || !element.hasAttribute(\"resizedWidth\")) this.value = null;\n\t\telse this.value = {\n\t\t\twidth: element.getAttribute(\"resizedWidth\"),\n\t\t\theight: null\n\t\t};\n\t}\n\t/**\n\t* Executes the command.\n\t*\n\t* ```ts\n\t* // Sets the width to 50%:\n\t* editor.execute( 'resizeImage', { width: '50%' } );\n\t*\n\t* // Removes the width attribute:\n\t* editor.execute( 'resizeImage', { width: null } );\n\t* ```\n\t*\n\t* @param options\n\t* @param options.width The new width of the image.\n\t* @fires execute\n\t*/\n\texecute(options) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\tthis.value = {\n\t\t\twidth: options.width,\n\t\t\theight: null\n\t\t};\n\t\tif (imageElement) model.change((writer) => {\n\t\t\twriter.setAttribute(\"resizedWidth\", options.width, imageElement);\n\t\t\twriter.removeAttribute(\"resizedHeight\", imageElement);\n\t\t\timageUtils.setImageNaturalSizeAttributes(imageElement);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image resize editing feature.\n*\n* It adds the ability to resize each image using handles or manually by\n* {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n*/\nvar ImageResizeEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResizeEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t* @internal\n\t*/\n\tstatic get licenseFeatureCode() {\n\t\treturn \"IR\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isPremiumPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\teditor.config.define(\"image\", {\n\t\t\tresizeUnit: \"%\",\n\t\t\tresizeOptions: [\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:original\",\n\t\t\t\t\tvalue: null,\n\t\t\t\t\ticon: \"original\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:custom\",\n\t\t\t\t\tvalue: \"custom\",\n\t\t\t\t\ticon: \"custom\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:25\",\n\t\t\t\t\tvalue: \"25\",\n\t\t\t\t\ticon: \"small\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:50\",\n\t\t\t\t\tvalue: \"50\",\n\t\t\t\t\ticon: \"medium\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"resizeImage:75\",\n\t\t\t\t\tvalue: \"75\",\n\t\t\t\t\ticon: \"large\"\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst resizeImageCommand = new ResizeImageCommand(editor);\n\t\tthis._registerConverters(\"imageBlock\");\n\t\tthis._registerConverters(\"imageInline\");\n\t\teditor.commands.add(\"resizeImage\", resizeImageCommand);\n\t\teditor.commands.add(\"imageResize\", resizeImageCommand);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tthis._registerSchema();\n\t}\n\t_registerSchema() {\n\t\tconst schema = this.editor.model.schema;\n\t\tif (this.editor.plugins.has(\"ImageBlockEditing\")) {\n\t\t\tschema.extend(\"imageBlock\", { allowAttributes: [\"resizedWidth\", \"resizedHeight\"] });\n\t\t\tschema.setAttributeProperties(\"resizedWidth\", { isFormatting: true });\n\t\t\tschema.setAttributeProperties(\"resizedHeight\", { isFormatting: true });\n\t\t}\n\t\tif (this.editor.plugins.has(\"ImageInlineEditing\")) {\n\t\t\tschema.extend(\"imageInline\", { allowAttributes: [\"resizedWidth\", \"resizedHeight\"] });\n\t\t\tschema.setAttributeProperties(\"resizedWidth\", { isFormatting: true });\n\t\t\tschema.setAttributeProperties(\"resizedHeight\", { isFormatting: true });\n\t\t}\n\t}\n\t/**\n\t* Registers image resize converters.\n\t*\n\t* @param imageType The type of the image.\n\t*/\n\t_registerConverters(imageType) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\teditor.conversion.for(\"downcast\").add((dispatcher) => dispatcher.on(`attribute:resizedWidth:${imageType}`, (evt, data, conversionApi) => {\n\t\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewImg = conversionApi.mapper.toViewElement(data.item);\n\t\t\tif (data.attributeNewValue !== null) {\n\t\t\t\tviewWriter.setStyle(\"width\", data.attributeNewValue, viewImg);\n\t\t\t\tviewWriter.addClass(\"image_resized\", viewImg);\n\t\t\t} else {\n\t\t\t\tviewWriter.removeStyle(\"width\", viewImg);\n\t\t\t\tviewWriter.removeClass(\"image_resized\", viewImg);\n\t\t\t}\n\t\t}));\n\t\teditor.conversion.for(\"dataDowncast\").attributeToAttribute({\n\t\t\tmodel: {\n\t\t\t\tname: imageType,\n\t\t\t\tkey: \"resizedHeight\"\n\t\t\t},\n\t\t\tview: (modelAttributeValue) => ({\n\t\t\t\tkey: \"style\",\n\t\t\t\tvalue: { \"height\": modelAttributeValue }\n\t\t\t})\n\t\t});\n\t\teditor.conversion.for(\"editingDowncast\").add((dispatcher) => dispatcher.on(`attribute:resizedHeight:${imageType}`, (evt, data, conversionApi) => {\n\t\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewImg = conversionApi.mapper.toViewElement(data.item);\n\t\t\tconst target = imageType === \"imageInline\" ? imageUtils.findViewImgElement(viewImg) : viewImg;\n\t\t\tif (data.attributeNewValue !== null) viewWriter.setStyle(\"height\", data.attributeNewValue, target);\n\t\t\telse viewWriter.removeStyle(\"height\", target);\n\t\t}));\n\t\teditor.conversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: imageType === \"imageBlock\" ? \"figure\" : \"img\",\n\t\t\t\tstyles: { width: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"resizedWidth\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return null;\n\t\t\t\t\treturn viewElement.getStyle(\"width\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\teditor.conversion.for(\"upcast\").attributeToAttribute({\n\t\t\tview: {\n\t\t\t\tname: imageType === \"imageBlock\" ? \"figure\" : \"img\",\n\t\t\t\tstyles: { height: /.+/ }\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: \"resizedHeight\",\n\t\t\t\tvalue: (viewElement) => {\n\t\t\t\t\tif (widthAndHeightStylesAreBothSet(viewElement)) return null;\n\t\t\t\t\treturn viewElement.getStyle(\"height\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\teditor.conversion.for(\"upcast\").add((dispatcher) => {\n\t\t\tdispatcher.on(`element:${imageType === \"imageBlock\" ? \"figure\" : \"img\"}`, (evt, data, conversionApi) => {\n\t\t\t\tconversionApi.consumable.consume(data.viewItem, { classes: [\"image_resized\"] });\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/imageresizebuttons\n*/\nconst RESIZE_ICONS = /* #__PURE__ */ (() => ({\n\tsmall: IconObjectSizeSmall,\n\tmedium: IconObjectSizeMedium,\n\tlarge: IconObjectSizeLarge,\n\tcustom: IconObjectSizeCustom,\n\toriginal: IconObjectSizeFull\n}))();\n/**\n* The image resize buttons plugin.\n*\n* It adds a possibility to resize images using the toolbar dropdown or individual buttons, depending on the plugin configuration.\n*/\nvar ImageResizeButtons = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageResizeEditing];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResizeButtons\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* The resize unit.\n\t* @default '%'\n\t*/\n\t_resizeUnit;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tsuper(editor);\n\t\tthis._resizeUnit = editor.config.get(\"image.resizeUnit\");\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst options = editor.config.get(\"image.resizeOptions\");\n\t\tconst command = editor.commands.get(\"resizeImage\");\n\t\tthis.bind(\"isEnabled\").to(command);\n\t\tfor (const option of options) this._registerImageResizeButton(option);\n\t\tthis._registerImageResizeDropdown(options);\n\t}\n\t/**\n\t* A helper function that creates a standalone button component for the plugin.\n\t*\n\t* @param option A model of the resize option.\n\t*/\n\t_registerImageResizeButton(option) {\n\t\tconst editor = this.editor;\n\t\tconst { name, value, icon } = option;\n\t\teditor.ui.componentFactory.add(name, (locale) => {\n\t\t\tconst button = new ButtonView(locale);\n\t\t\tconst command = editor.commands.get(\"resizeImage\");\n\t\t\tconst labelText = this._getOptionLabelValue(option, true);\n\t\t\tif (!RESIZE_ICONS[icon])\n /**\n\t\t\t* When configuring {@link module:image/imageconfig~ImageConfig#resizeOptions `config.image.resizeOptions`} for standalone\n\t\t\t* buttons, a valid `icon` token must be set for each option.\n\t\t\t*\n\t\t\t* See all valid options described in the\n\t\t\t* {@link module:image/imageconfig~ImageResizeOption plugin configuration}.\n\t\t\t*\n\t\t\t* @error imageresizebuttons-missing-icon\n\t\t\t* @param {module:image/imageconfig~ImageResizeOption} option Invalid image resize option.\n\t\t\t*/\n\t\t\tthrow new CKEditorError(\"imageresizebuttons-missing-icon\", editor, option);\n\t\t\tbutton.set({\n\t\t\t\tlabel: labelText,\n\t\t\t\ticon: RESIZE_ICONS[icon],\n\t\t\t\ttooltip: labelText,\n\t\t\t\tisToggleable: true\n\t\t\t});\n\t\t\tbutton.bind(\"isEnabled\").to(this);\n\t\t\tif (editor.plugins.has(\"ImageCustomResizeUI\") && isCustomImageResizeOption(option)) {\n\t\t\t\tconst customResizeUI = editor.plugins.get(\"ImageCustomResizeUI\");\n\t\t\t\tthis.listenTo(button, \"execute\", () => {\n\t\t\t\t\tcustomResizeUI._showForm(this._resizeUnit);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst optionValueWithUnit = value ? value + this._resizeUnit : null;\n\t\t\t\tbutton.bind(\"isOn\").to(command, \"value\", command, \"isEnabled\", getIsOnButtonCallback(optionValueWithUnit));\n\t\t\t\tthis.listenTo(button, \"execute\", () => {\n\t\t\t\t\teditor.execute(\"resizeImage\", { width: optionValueWithUnit });\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn button;\n\t\t});\n\t}\n\t/**\n\t* A helper function that creates a dropdown component for the plugin containing all the resize options defined in\n\t* the editor configuration.\n\t*\n\t* @param options An array of configured options.\n\t*/\n\t_registerImageResizeDropdown(options) {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst originalSizeOption = options.find((option) => !option.value);\n\t\tconst componentCreator = (locale) => {\n\t\t\tconst command = editor.commands.get(\"resizeImage\");\n\t\t\tconst dropdownView = createDropdown(locale, DropdownButtonView);\n\t\t\tconst dropdownButton = dropdownView.buttonView;\n\t\t\tconst accessibleLabel = t(\"Resize image\");\n\t\t\tdropdownButton.set({\n\t\t\t\ttooltip: accessibleLabel,\n\t\t\t\tcommandValue: originalSizeOption.value,\n\t\t\t\ticon: RESIZE_ICONS.medium,\n\t\t\t\tisToggleable: true,\n\t\t\t\tlabel: this._getOptionLabelValue(originalSizeOption),\n\t\t\t\twithText: true,\n\t\t\t\tclass: \"ck-resize-image-button\",\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\tariaLabelledBy: void 0\n\t\t\t});\n\t\t\tdropdownButton.bind(\"label\").to(command, \"value\", (commandValue) => {\n\t\t\t\tif (commandValue && commandValue.width) return commandValue.width;\n\t\t\t\telse return this._getOptionLabelValue(originalSizeOption);\n\t\t\t});\n\t\t\tdropdownView.bind(\"isEnabled\").to(this);\n\t\t\taddListToDropdown(dropdownView, () => this._getResizeDropdownListItemDefinitions(options, command), {\n\t\t\t\tariaLabel: t(\"Image resize list\"),\n\t\t\t\trole: \"menu\"\n\t\t\t});\n\t\t\tthis.listenTo(dropdownView, \"execute\", (evt) => {\n\t\t\t\tif (\"onClick\" in evt.source) evt.source.onClick();\n\t\t\t\telse {\n\t\t\t\t\teditor.execute(evt.source.commandName, { width: evt.source.commandValue });\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn dropdownView;\n\t\t};\n\t\teditor.ui.componentFactory.add(\"resizeImage\", componentCreator);\n\t\teditor.ui.componentFactory.add(\"imageResize\", componentCreator);\n\t}\n\t/**\n\t* A helper function for creating an option label value string.\n\t*\n\t* @param option A resize option object.\n\t* @param forTooltip An optional flag for creating a tooltip label.\n\t* @returns A user-defined label combined from the numeric value and the resize unit or the default label\n\t* for reset options (`Original`).\n\t*/\n\t_getOptionLabelValue(option, forTooltip = false) {\n\t\tconst t = this.editor.t;\n\t\tif (option.label) return option.label;\n\t\telse if (forTooltip) if (isCustomImageResizeOption(option)) return t(\"Custom image size\");\n\t\telse if (option.value) return t(\"Resize image to %0\", option.value + this._resizeUnit);\n\t\telse return t(\"Resize image to the original size\");\n\t\telse if (isCustomImageResizeOption(option)) return t(\"Custom\");\n\t\telse if (option.value) return option.value + this._resizeUnit;\n\t\telse return t(\"Original\");\n\t}\n\t/**\n\t* A helper function that parses the resize options and returns list item definitions ready for use in the dropdown.\n\t*\n\t* @param options The resize options.\n\t* @param command The resize image command.\n\t* @returns Dropdown item definitions.\n\t*/\n\t_getResizeDropdownListItemDefinitions(options, command) {\n\t\tconst { editor } = this;\n\t\tconst itemDefinitions = new Collection();\n\t\tconst optionsWithSerializedValues = options.map((option) => {\n\t\t\tif (isCustomImageResizeOption(option)) return {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: \"custom\"\n\t\t\t};\n\t\t\tif (!option.value) return {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: null\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: `${option.value}${this._resizeUnit}`\n\t\t\t};\n\t\t});\n\t\tfor (const option of optionsWithSerializedValues) {\n\t\t\tlet definition;\n\t\t\tif (editor.plugins.has(\"ImageCustomResizeUI\") && isCustomImageResizeOption(option)) {\n\t\t\t\tconst customResizeUI = editor.plugins.get(\"ImageCustomResizeUI\");\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tmodel: new UIModel({\n\t\t\t\t\t\tlabel: this._getOptionLabelValue(option),\n\t\t\t\t\t\trole: \"menuitemradio\",\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tcustomResizeUI._showForm(this._resizeUnit);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tconst allDropdownValues = Object.values(optionsWithSerializedValues).map((option) => option.valueWithUnits);\n\t\t\t\tdefinition.model.bind(\"isOn\").to(command, \"value\", command, \"isEnabled\", getIsOnCustomButtonCallback(allDropdownValues));\n\t\t\t} else {\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tmodel: new UIModel({\n\t\t\t\t\t\tcommandName: \"resizeImage\",\n\t\t\t\t\t\tcommandValue: option.valueWithUnits,\n\t\t\t\t\t\tlabel: this._getOptionLabelValue(option),\n\t\t\t\t\t\trole: \"menuitemradio\",\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tdefinition.model.bind(\"isOn\").to(command, \"value\", command, \"isEnabled\", getIsOnButtonCallback(option.valueWithUnits));\n\t\t\t}\n\t\t\tdefinition.model.bind(\"isEnabled\").to(command, \"isEnabled\");\n\t\t\titemDefinitions.add(definition);\n\t\t}\n\t\treturn itemDefinitions;\n\t}\n};\n/**\n* A helper that checks if provided option triggers custom resize balloon.\n*/\nfunction isCustomImageResizeOption(option) {\n\treturn option.value === \"custom\";\n}\n/**\n* A helper function for setting the `isOn` state of buttons in value bindings.\n*/\nfunction getIsOnButtonCallback(value) {\n\treturn (commandValue, isEnabled) => {\n\t\tconst objectCommandValue = commandValue;\n\t\tif (objectCommandValue === void 0 || !isEnabled) return false;\n\t\tif (value === null && objectCommandValue === value) return true;\n\t\treturn objectCommandValue !== null && objectCommandValue.width === value;\n\t};\n}\n/**\n* A helper function for setting the `isOn` state of custom size button in value bindings.\n*/\nfunction getIsOnCustomButtonCallback(allDropdownValues) {\n\treturn (commandValue, isEnabled) => !allDropdownValues.some((dropdownValue) => getIsOnButtonCallback(dropdownValue)(commandValue, isEnabled));\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\nconst RESIZABLE_IMAGES_CSS_SELECTOR = \"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\";\nconst RESIZED_IMAGE_CLASS = \"image_resized\";\n/**\n* The image resize by handles feature.\n*\n* It adds the ability to resize each image using handles or manually by\n* {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n*/\nvar ImageResizeHandles = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [WidgetResize, ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResizeHandles\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst command = this.editor.commands.get(\"resizeImage\");\n\t\tthis.bind(\"isEnabled\").to(command);\n\t\tthis._setupResizerCreator();\n\t}\n\t/**\n\t* Attaches the listeners responsible for creating a resizer for each image, except for images inside the HTML embed preview.\n\t*/\n\t_setupResizerCreator() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\teditingView.addObserver(ImageLoadObserver);\n\t\tthis.listenTo(editingView.document, \"imageLoaded\", (evt, domEvent) => {\n\t\t\tif (!domEvent.target.matches(RESIZABLE_IMAGES_CSS_SELECTOR)) return;\n\t\t\tconst domConverter = editor.editing.view.domConverter;\n\t\t\tconst imageView = domConverter.domToView(domEvent.target);\n\t\t\tconst widgetView = imageUtils.getImageWidgetFromImageView(imageView);\n\t\t\tlet resizer = this.editor.plugins.get(WidgetResize).getResizerByViewElement(widgetView);\n\t\t\tif (resizer) {\n\t\t\t\tresizer.redraw();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst mapper = editor.editing.mapper;\n\t\t\tconst imageModel = mapper.toModelElement(widgetView);\n\t\t\tresizer = editor.plugins.get(WidgetResize).attachTo({\n\t\t\t\tunit: editor.config.get(\"image.resizeUnit\"),\n\t\t\t\tmodelElement: imageModel,\n\t\t\t\tviewElement: widgetView,\n\t\t\t\teditor,\n\t\t\t\tgetHandleHost(domWidgetElement) {\n\t\t\t\t\treturn domWidgetElement.querySelector(\"img\");\n\t\t\t\t},\n\t\t\t\tgetResizeHost() {\n\t\t\t\t\treturn domConverter.mapViewToDom(mapper.toViewElement(imageModel));\n\t\t\t\t},\n\t\t\t\tisCentered() {\n\t\t\t\t\treturn imageModel.getAttribute(\"imageStyle\") == \"alignCenter\";\n\t\t\t\t},\n\t\t\t\tonCommit(newValue) {\n\t\t\t\t\teditingView.change((writer) => {\n\t\t\t\t\t\twriter.removeClass(RESIZED_IMAGE_CLASS, widgetView);\n\t\t\t\t\t});\n\t\t\t\t\teditor.execute(\"resizeImage\", { width: newValue });\n\t\t\t\t}\n\t\t\t});\n\t\t\tresizer.on(\"updateSize\", () => {\n\t\t\t\tif (!widgetView.hasClass(RESIZED_IMAGE_CLASS)) editingView.change((writer) => {\n\t\t\t\t\twriter.addClass(RESIZED_IMAGE_CLASS, widgetView);\n\t\t\t\t});\n\t\t\t\tconst target = imageModel.name === \"imageInline\" ? imageView : widgetView;\n\t\t\t\tif (target.getStyle(\"height\")) editingView.change((writer) => {\n\t\t\t\t\twriter.removeStyle(\"height\", target);\n\t\t\t\t});\n\t\t\t});\n\t\t\tresizer.bind(\"isEnabled\").to(this);\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Finds model, view and DOM element for selected image element. Returns `null` if there is no image selected.\n*\n* @param editor Editor instance.\n* @internal\n*/\nfunction getSelectedImageEditorNodes(editor) {\n\tconst { editing } = editor;\n\tconst imageModelElement = editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(editor.model.document.selection);\n\tif (!imageModelElement) return null;\n\tconst imageViewElement = editing.mapper.toViewElement(imageModelElement);\n\treturn {\n\t\tmodel: imageModelElement,\n\t\tview: imageViewElement,\n\t\tdom: editing.view.domConverter.mapViewToDom(imageViewElement)\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/utils/getselectedimagewidthinunits\n*/\n/**\n* Returns image width in specified units. It is width of image after resize.\n*\n* \t* If image is not selected or command is disabled then `null` will be returned.\n* \t* If image is not fully loaded (and it is impossible to determine its natural size) then `null` will be returned.\n*\t* If `targetUnit` percentage is passed then it will return width percentage of image related to its accessors.\n*\n* @param editor Editor instance.\n* @param targetUnit Unit in which dimension will be returned.\n* @returns Parsed image width after resize (with unit).\n* @internal\n*/\nfunction getSelectedImageWidthInUnits(editor, targetUnit) {\n\tconst imageNodes = getSelectedImageEditorNodes(editor);\n\tif (!imageNodes) return null;\n\tconst parsedResizedWidth = _tryParseDimensionWithUnit(imageNodes.model.getAttribute(\"resizedWidth\") || null);\n\tif (!parsedResizedWidth) return null;\n\tif (parsedResizedWidth.unit === targetUnit) return parsedResizedWidth;\n\treturn _tryCastDimensionsToUnit(calculateResizeHostAncestorWidth(imageNodes.dom), {\n\t\tunit: \"px\",\n\t\tvalue: new Rect(imageNodes.dom).width\n\t}, targetUnit);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/ui/imagecustomresizeformview\n*/\n/**\n* The ImageCustomResizeFormView class.\n*\n* @internal\n*/\nvar ImageCustomResizeFormView = class extends View {\n\t/**\n\t* Tracks information about the DOM focus in the form.\n\t*/\n\tfocusTracker;\n\t/**\n\t* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t*/\n\tkeystrokes;\n\t/**\n\t* Resize unit shortcut.\n\t*/\n\tunit;\n\t/**\n\t* The Back button view displayed in the header.\n\t*/\n\tbackButtonView;\n\t/**\n\t* A button used to submit the form.\n\t*/\n\tsaveButtonView;\n\t/**\n\t* An input with a label.\n\t*/\n\tlabeledInput;\n\t/**\n\t* A collection of child views.\n\t*/\n\tchildren;\n\t/**\n\t* A collection of views which can be focused in the form.\n\t*/\n\t_focusables;\n\t/**\n\t* Helps cycling over {@link #_focusables} in the form.\n\t*/\n\t_focusCycler;\n\t/**\n\t* An array of form validators used by {@link #isValid}.\n\t*/\n\t_validators;\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(locale, unit, validators) {\n\t\tsuper(locale);\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.unit = unit;\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\t\tthis.labeledInput = this._createLabeledInputView();\n\t\tthis.children = this.createCollection([this._createHeaderView()]);\n\t\tthis.children.add(new FormRowView(locale, {\n\t\t\tchildren: [this.labeledInput, this.saveButtonView],\n\t\t\tclass: [\"ck-form__row_with-submit\", \"ck-form__row_large-top-padding\"]\n\t\t}));\n\t\tthis._focusables = new ViewCollection();\n\t\tthis._validators = validators;\n\t\tthis.keystrokes.set(\"Esc\", (data, cancel) => {\n\t\t\tthis.fire(\"cancel\");\n\t\t\tcancel();\n\t\t});\n\t\tthis._focusCycler = new FocusCycler({\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\tfocusPrevious: \"shift + tab\",\n\t\t\t\tfocusNext: \"tab\"\n\t\t\t}\n\t\t});\n\t\tthis.setTemplate({\n\t\t\ttag: \"form\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t\"ck\",\n\t\t\t\t\t\"ck-form\",\n\t\t\t\t\t\"ck-image-custom-resize-form\",\n\t\t\t\t\t\"ck-responsive-form\"\n\t\t\t\t],\n\t\t\t\ttabindex: \"-1\"\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t});\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trender() {\n\t\tsuper.render();\n\t\tsubmitHandler({ view: this });\n\t\t[\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t].forEach((v) => {\n\t\t\tthis._focusables.add(v);\n\t\t\tthis.focusTracker.add(v.element);\n\t\t});\n\t\tthis.keystrokes.listenTo(this.element);\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\t/**\n\t* Creates a back button view that cancels the form.\n\t*/\n\t_createBackButton() {\n\t\tconst t = this.locale.t;\n\t\tconst backButton = new ButtonView(this.locale);\n\t\tbackButton.set({\n\t\t\tclass: \"ck-button-back\",\n\t\t\tlabel: t(\"Back\"),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t});\n\t\tbackButton.delegate(\"execute\").to(this, \"cancel\");\n\t\treturn backButton;\n\t}\n\t/**\n\t* Creates a save button view that resize the image.\n\t*/\n\t_createSaveButton() {\n\t\tconst t = this.locale.t;\n\t\tconst saveButton = new ButtonView(this.locale);\n\t\tsaveButton.set({\n\t\t\tlabel: t(\"Save\"),\n\t\t\twithText: true,\n\t\t\ttype: \"submit\",\n\t\t\tclass: \"ck-button-action ck-button-bold\"\n\t\t});\n\t\treturn saveButton;\n\t}\n\t/**\n\t* Creates a header view for the form.\n\t*/\n\t_createHeaderView() {\n\t\tconst t = this.locale.t;\n\t\tconst header = new FormHeaderView(this.locale, { label: t(\"Image Resize\") });\n\t\theader.children.add(this.backButtonView, 0);\n\t\treturn header;\n\t}\n\t/**\n\t* Creates an input with a label.\n\t*\n\t* @returns Labeled field view instance.\n\t*/\n\t_createLabeledInputView() {\n\t\tconst t = this.locale.t;\n\t\tconst labeledInput = new LabeledFieldView(this.locale, createLabeledInputNumber);\n\t\tlabeledInput.label = t(\"Resize image (in %0)\", this.unit);\n\t\tlabeledInput.class = \"ck-labeled-field-view_full-width\";\n\t\tlabeledInput.fieldView.set({ step: .1 });\n\t\treturn labeledInput;\n\t}\n\t/**\n\t* Validates the form and returns `false` when some fields are invalid.\n\t*/\n\tisValid() {\n\t\tthis.resetFormStatus();\n\t\tfor (const validator of this._validators) {\n\t\t\tconst errorText = validator(this);\n\t\t\tif (errorText) {\n\t\t\t\tthis.labeledInput.errorText = errorText;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\t/**\n\t* Cleans up the supplementary error and information text of the {@link #labeledInput}\n\t* bringing them back to the state when the form has been displayed for the first time.\n\t*\n\t* See {@link #isValid}.\n\t*/\n\tresetFormStatus() {\n\t\tthis.labeledInput.errorText = null;\n\t}\n\t/**\n\t* The native DOM `value` of the input element of {@link #labeledInput}.\n\t*/\n\tget rawSize() {\n\t\tconst { element } = this.labeledInput.fieldView;\n\t\tif (!element) return null;\n\t\treturn element.value;\n\t}\n\t/**\n\t* Get numeric value of size. Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t*/\n\tget parsedSize() {\n\t\tconst { rawSize } = this;\n\t\tif (rawSize === null) return null;\n\t\tconst parsed = Number.parseFloat(rawSize);\n\t\tif (Number.isNaN(parsed)) return null;\n\t\treturn parsed;\n\t}\n\t/**\n\t* Returns serialized image input size with unit.\n\t* Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t*/\n\tget sizeWithUnits() {\n\t\tconst { parsedSize, unit } = this;\n\t\tif (parsedSize === null) return null;\n\t\treturn `${parsedSize}${unit}`;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* Returns min and max value of resize image in specified unit.\n*\n* @param editor Editor instance.\n* @param targetUnit Unit in which dimension will be returned.\n* @returns Possible resize range in numeric form.\n* @internal\n*/\nfunction getSelectedImagePossibleResizeRange(editor, targetUnit) {\n\tconst imageNodes = getSelectedImageEditorNodes(editor);\n\tif (!imageNodes) return null;\n\tconst imageParentWidthPx = calculateResizeHostAncestorWidth(imageNodes.dom);\n\tconst minimumImageWidth = _tryParseDimensionWithUnit(window.getComputedStyle(imageNodes.dom).minWidth) || {\n\t\tvalue: 1,\n\t\tunit: \"px\"\n\t};\n\treturn {\n\t\tunit: targetUnit,\n\t\tlower: Math.max(.1, _tryCastDimensionsToUnit(imageParentWidthPx, minimumImageWidth, targetUnit).value),\n\t\tupper: targetUnit === \"px\" ? imageParentWidthPx : 100\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize/imagecustomresizeui\n*/\n/**\n* The custom resize image UI plugin.\n*\n* The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n*/\nvar ImageCustomResizeUI = class extends Plugin {\n\t/**\n\t* The contextual balloon plugin instance.\n\t*/\n\t_balloon;\n\t/**\n\t* A form containing a textarea and buttons, used to change the `alt` text value.\n\t*/\n\t_form;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ContextualBalloon];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageCustomResizeUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tif (this._form) this._form.destroy();\n\t}\n\t/**\n\t* Creates the {@link module:image/imageresize/ui/imagecustomresizeformview~ImageCustomResizeFormView}\n\t* form.\n\t*/\n\t_createForm(unit) {\n\t\tconst editor = this.editor;\n\t\tthis._balloon = this.editor.plugins.get(\"ContextualBalloon\");\n\t\tthis._form = new (CssTransitionDisablerMixin(ImageCustomResizeFormView))(editor.locale, unit, getFormValidators(editor));\n\t\tthis._form.render();\n\t\tthis.listenTo(this._form, \"submit\", () => {\n\t\t\tif (this._form.isValid()) {\n\t\t\t\teditor.execute(\"resizeImage\", { width: this._form.sizeWithUnits });\n\t\t\t\tthis._hideForm(true);\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(this._form.labeledInput, \"change:errorText\", () => {\n\t\t\teditor.ui.update();\n\t\t});\n\t\tthis.listenTo(this._form, \"cancel\", () => {\n\t\t\tthis._hideForm(true);\n\t\t});\n\t\tclickOutsideHandler({\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [this._balloon.view.element],\n\t\t\tcallback: () => this._hideForm()\n\t\t});\n\t}\n\t/**\n\t* Shows the {@link #_form} in the {@link #_balloon}.\n\t*\n\t* @internal\n\t*/\n\t_showForm(unit) {\n\t\tif (this._isVisible) return;\n\t\tif (!this._form) this._createForm(unit);\n\t\tconst editor = this.editor;\n\t\tconst labeledInput = this._form.labeledInput;\n\t\tthis._form.disableCssTransitions();\n\t\tthis._form.resetFormStatus();\n\t\tif (!this._isInBalloon) this._balloon.add({\n\t\t\tview: this._form,\n\t\t\tposition: getBalloonPositionData(editor)\n\t\t});\n\t\tconst currentParsedWidth = getSelectedImageWidthInUnits(editor, unit);\n\t\tconst initialInputValue = currentParsedWidth ? currentParsedWidth.value.toFixed(1) : \"\";\n\t\tconst possibleRange = getSelectedImagePossibleResizeRange(editor, unit);\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element.value = initialInputValue;\n\t\tif (possibleRange) Object.assign(labeledInput.fieldView, {\n\t\t\tmin: possibleRange.lower.toFixed(1),\n\t\t\tmax: Math.ceil(possibleRange.upper).toFixed(1)\n\t\t});\n\t\tthis._form.labeledInput.fieldView.select();\n\t\tthis._form.enableCssTransitions();\n\t}\n\t/**\n\t* Removes the {@link #_form} from the {@link #_balloon}.\n\t*\n\t* @param focusEditable Controls whether the editing view is focused afterwards.\n\t*/\n\t_hideForm(focusEditable = false) {\n\t\tif (!this._isInBalloon) return;\n\t\tif (this._form.focusTracker.isFocused) this._form.saveButtonView.focus();\n\t\tthis._balloon.remove(this._form);\n\t\tif (focusEditable) this.editor.editing.view.focus();\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t*/\n\tget _isVisible() {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\t/**\n\t* Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t*/\n\tget _isInBalloon() {\n\t\treturn !!this._balloon && this._balloon.hasView(this._form);\n\t}\n};\n/**\n* Returns image resize form validation callbacks.\n*\n* @param editor Editor instance.\n*/\nfunction getFormValidators(editor) {\n\tconst t = editor.t;\n\treturn [(form) => {\n\t\tif (form.rawSize.trim() === \"\") return t(\"The value must not be empty.\");\n\t\tif (form.parsedSize === null) return t(\"The value should be a plain number.\");\n\t}];\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imageresize\n*/\n/**\n* The image resize plugin.\n*\n* It adds a possibility to resize each image using handles.\n*/\nvar ImageResize = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [\n\t\t\tImageResizeEditing,\n\t\t\tImageResizeHandles,\n\t\t\tImageCustomResizeUI,\n\t\t\tImageResizeButtons\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageResize\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* The image style command. It is used to apply {@link module:image/imageconfig~ImageStyleConfig#options image style option}\n* to a selected image.\n*\n* **Note**: Executing this command may change the image model element if the desired style requires an image of a different\n* type. See {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand#execute} to learn more.\n*/\nvar ImageStyleCommand = class extends Command {\n\t/**\n\t* An object containing names of default style options for the inline and block images.\n\t* If there is no default style option for the given image type in the configuration,\n\t* the name will be `false`.\n\t*/\n\t_defaultStyles;\n\t/**\n\t* The styles handled by this command.\n\t*/\n\t_styles;\n\t/**\n\t* Creates an instance of the image style command. When executed, the command applies one of\n\t* {@link module:image/imageconfig~ImageStyleConfig#options style options} to the currently selected image.\n\t*\n\t* @param editor The editor instance.\n\t* @param styles The style options that this command supports.\n\t*/\n\tconstructor(editor, styles) {\n\t\tsuper(editor);\n\t\tthis._defaultStyles = {\n\t\t\timageBlock: false,\n\t\t\timageInline: false\n\t\t};\n\t\tthis._styles = new Map(styles.map((style) => {\n\t\t\tif (style.isDefault) for (const modelElementName of style.modelElements) this._defaultStyles[modelElementName] = style.name;\n\t\t\treturn [style.name, style];\n\t\t}));\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\trefresh() {\n\t\tconst element = this.editor.plugins.get(\"ImageUtils\").getClosestSelectedImageElement(this.editor.model.document.selection);\n\t\tthis.isEnabled = !!element;\n\t\tif (!this.isEnabled) this.value = false;\n\t\telse if (element.hasAttribute(\"imageStyle\")) this.value = element.getAttribute(\"imageStyle\");\n\t\telse this.value = this._defaultStyles[element.name];\n\t}\n\t/**\n\t* Returns whether the style with the given name can be applied to the currently selected image.\n\t*\n\t* Applying a style may internally trigger a type conversion (block ↔ inline) when the style\n\t* supports only the opposite type. If that conversion would be rejected by the schema (for\n\t* example, converting an inline image to a block image inside `$inlineRoot`), this style\n\t* cannot be applied even though the command itself is enabled. UI components representing\n\t* individual styles should reflect this per-style state in their `isEnabled`.\n\t*/\n\tisStyleEnabled(styleName) {\n\t\tif (!this.isEnabled) return false;\n\t\tconst imageUtils = this.editor.plugins.get(\"ImageUtils\");\n\t\tconst element = imageUtils.getClosestSelectedImageElement(this.editor.model.document.selection);\n\t\tif (!element || !this._styles.has(styleName)) return false;\n\t\tif (!this.shouldConvertImageType(styleName, element)) return true;\n\t\tconst typeCommandName = imageUtils.isBlockImage(element) ? \"imageTypeInline\" : \"imageTypeBlock\";\n\t\tconst typeCommand = this.editor.commands.get(typeCommandName);\n\t\treturn !!typeCommand && typeCommand.isEnabled;\n\t}\n\t/**\n\t* Executes the command and applies the style to the currently selected image:\n\t*\n\t* ```ts\n\t* editor.execute( 'imageStyle', { value: 'side' } );\n\t* ```\n\t*\n\t* **Note**: Executing this command may change the image model element if the desired style requires an image\n\t* of a different type. Learn more about {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements model element}\n\t* configuration for the style option.\n\t*\n\t* @param options.value The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t* @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t* The default is `true`.\n\t* @fires execute\n\t*/\n\texecute(options = {}) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tif (options.value && !this.isStyleEnabled(options.value)) return;\n\t\tmodel.change((writer) => {\n\t\t\tconst requestedStyle = options.value;\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tlet imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\t\tif (requestedStyle && this.shouldConvertImageType(requestedStyle, imageElement)) {\n\t\t\t\tthis.editor.execute(imageUtils.isBlockImage(imageElement) ? \"imageTypeInline\" : \"imageTypeBlock\", { setImageSizes });\n\t\t\t\timageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);\n\t\t\t}\n\t\t\tif (!requestedStyle || this._styles.get(requestedStyle).isDefault) writer.removeAttribute(\"imageStyle\", imageElement);\n\t\t\telse writer.setAttribute(\"imageStyle\", requestedStyle, imageElement);\n\t\t\tif (setImageSizes) imageUtils.setImageNaturalSizeAttributes(imageElement);\n\t\t});\n\t}\n\t/**\n\t* Returns `true` if requested style change would trigger the image type change.\n\t*\n\t* @param requestedStyle The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t* @param imageElement The image model element.\n\t*/\n\tshouldConvertImageType(requestedStyle, imageElement) {\n\t\treturn !this._styles.get(requestedStyle).modelElements.includes(imageElement.name);\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/utils\n*/\n/**\n* Default image style options provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n* configuration.\n*\n* There are available 5 styles focused on formatting:\n*\n* * **`'alignLeft'`** aligns the inline or block image to the left and wraps it with the text using the `image-style-align-left` class,\n* * **`'alignRight'`** aligns the inline or block image to the right and wraps it with the text using the `image-style-align-right` class,\n* * **`'alignCenter'`** centers the block image using the `image-style-align-center` class,\n* * **`'alignBlockLeft'`** aligns the block image to the left using the `image-style-block-align-left` class,\n* * **`'alignBlockRight'`** aligns the block image to the right using the `image-style-block-align-right` class,\n*\n* and 3 semantic styles:\n*\n* * **`'inline'`** is an inline image without any CSS class,\n* * **`'block'`** is a block image without any CSS class,\n* * **`'side'`** is a block image styled with the `image-style-side` CSS class.\n*\n* @internal\n*/\nconst DEFAULT_OPTIONS = {\n\tget inline() {\n\t\treturn {\n\t\t\tname: \"inline\",\n\t\t\ttitle: \"In line\",\n\t\t\ticon: IconObjectInline,\n\t\t\tmodelElements: [\"imageInline\"],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\tget alignLeft() {\n\t\treturn {\n\t\t\tname: \"alignLeft\",\n\t\t\ttitle: \"Left aligned image\",\n\t\t\ticon: IconObjectInlineLeft,\n\t\t\tmodelElements: [\"imageBlock\", \"imageInline\"],\n\t\t\tclassName: \"image-style-align-left\"\n\t\t};\n\t},\n\tget alignBlockLeft() {\n\t\treturn {\n\t\t\tname: \"alignBlockLeft\",\n\t\t\ttitle: \"Left aligned image\",\n\t\t\ticon: IconObjectLeft,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-block-align-left\"\n\t\t};\n\t},\n\tget alignCenter() {\n\t\treturn {\n\t\t\tname: \"alignCenter\",\n\t\t\ttitle: \"Centered image\",\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-align-center\"\n\t\t};\n\t},\n\tget alignRight() {\n\t\treturn {\n\t\t\tname: \"alignRight\",\n\t\t\ttitle: \"Right aligned image\",\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [\"imageBlock\", \"imageInline\"],\n\t\t\tclassName: \"image-style-align-right\"\n\t\t};\n\t},\n\tget alignBlockRight() {\n\t\treturn {\n\t\t\tname: \"alignBlockRight\",\n\t\t\ttitle: \"Right aligned image\",\n\t\t\ticon: IconObjectRight,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-block-align-right\"\n\t\t};\n\t},\n\tget block() {\n\t\treturn {\n\t\t\tname: \"block\",\n\t\t\ttitle: \"Centered image\",\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\tget side() {\n\t\treturn {\n\t\t\tname: \"side\",\n\t\t\ttitle: \"Side image\",\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [\"imageBlock\"],\n\t\t\tclassName: \"image-style-side\"\n\t\t};\n\t}\n};\n/**\n* Default image style icons provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n* configuration.\n*\n* See {@link module:image/imageconfig~ImageStyleOptionDefinition#icon} to learn more.\n*\n* There are 7 default icons available: `'full'`, `'left'`, `'inlineLeft'`, `'center'`, `'right'`, `'inlineRight'`, and `'inline'`.\n*\n* @internal\n*/\nconst DEFAULT_ICONS = /* #__PURE__ */ (() => ({\n\tfull: IconObjectFullWidth,\n\tleft: IconObjectLeft,\n\tright: IconObjectRight,\n\tcenter: IconObjectCenter,\n\tinlineLeft: IconObjectInlineLeft,\n\tinlineRight: IconObjectInlineRight,\n\tinline: IconObjectInline\n}))();\n/**\n* Default drop-downs provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#toolbar}\n* configuration. The drop-downs are containers for the {@link module:image/imageconfig~ImageStyleConfig#options image style options}.\n*\n* If both of the `ImageEditing` plugins are loaded, there are 2 predefined drop-downs available:\n*\n* * **`'imageStyle:wrapText'`**, which contains the `alignLeft` and `alignRight` options, that is,\n* those that wraps the text around the image,\n* * **`'imageStyle:breakText'`**, which contains the `alignBlockLeft`, `alignCenter` and `alignBlockRight` options, that is,\n* those that breaks the text around the image.\n*\n* @internal\n*/\nconst DEFAULT_DROPDOWN_DEFINITIONS = [{\n\tname: \"imageStyle:wrapText\",\n\ttitle: \"Wrap text\",\n\tdefaultItem: \"imageStyle:alignLeft\",\n\titems: [\"imageStyle:alignLeft\", \"imageStyle:alignRight\"]\n}, {\n\tname: \"imageStyle:breakText\",\n\ttitle: \"Break text\",\n\tdefaultItem: \"imageStyle:block\",\n\titems: [\n\t\t\"imageStyle:alignBlockLeft\",\n\t\t\"imageStyle:block\",\n\t\t\"imageStyle:alignBlockRight\"\n\t]\n}];\n/**\n* Returns the style with a given `name` from an array of styles.\n*\n* @internal\n*/\nfunction getStyleDefinitionByName(name, styles) {\n\tfor (const style of styles) if (style.name === name) return style;\n}\n/**\n* Returns a list of the normalized and validated image style options.\n*\n* @param config\n* @param config.isInlinePluginLoaded\n* Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n* @param config.isBlockPluginLoaded\n* Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n* @param config.configuredStyles\n* The image styles configuration provided in the image styles {@link module:image/imageconfig~ImageConfig#styles configuration}\n* as a default or custom value.\n* @returns\n* * Each of options contains a complete icon markup.\n* * The image style options not supported by any of the loaded plugins are filtered out.\n*/\nfunction normalizeStyles(config) {\n\treturn (config.configuredStyles.options || []).map((arrangement) => normalizeDefinition(arrangement)).filter((arrangement) => isValidOption(arrangement, config));\n}\n/**\n* Returns the default image styles configuration depending on the loaded image editing plugins.\n*\n* @param isInlinePluginLoaded\n* Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n*\n* @param isBlockPluginLoaded\n* Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n*\n* @returns\n* It returns an object with the lists of the image style options and groups defined as strings related to the\n* {@link module:image/imagestyle/utils#DEFAULT_OPTIONS default options}\n*/\nfunction getDefaultStylesConfiguration(isBlockPluginLoaded, isInlinePluginLoaded) {\n\tif (isBlockPluginLoaded && isInlinePluginLoaded) return { options: [\n\t\t\"inline\",\n\t\t\"alignLeft\",\n\t\t\"alignRight\",\n\t\t\"alignCenter\",\n\t\t\"alignBlockLeft\",\n\t\t\"alignBlockRight\",\n\t\t\"block\",\n\t\t\"side\"\n\t] };\n\telse if (isBlockPluginLoaded) return { options: [\"block\", \"side\"] };\n\telse if (isInlinePluginLoaded) return { options: [\n\t\t\"inline\",\n\t\t\"alignLeft\",\n\t\t\"alignRight\"\n\t] };\n\treturn {};\n}\n/**\n* Returns a list of the available predefined drop-downs' definitions depending on the loaded image editing plugins.\n*/\nfunction getDefaultDropdownDefinitions(pluginCollection) {\n\tif (pluginCollection.has(\"ImageBlockEditing\") && pluginCollection.has(\"ImageInlineEditing\")) return [...DEFAULT_DROPDOWN_DEFINITIONS];\n\telse return [];\n}\n/**\n* Normalizes an image style option or group provided in the {@link module:image/imageconfig~ImageConfig#styles}\n* and returns it in a {@link module:image/imageconfig~ImageStyleOptionDefinition}/\n*/\nfunction normalizeDefinition(definition) {\n\tif (typeof definition === \"string\") if (!DEFAULT_OPTIONS[definition]) definition = { name: definition };\n\telse definition = { ...DEFAULT_OPTIONS[definition] };\n\telse definition = extendStyle(DEFAULT_OPTIONS[definition.name], definition);\n\tif (typeof definition.icon === \"string\") definition.icon = DEFAULT_ICONS[definition.icon] || definition.icon;\n\treturn definition;\n}\n/**\n* Checks if the image style option is valid:\n* * if it has the modelElements fields defined and filled,\n* * if the defined modelElements are supported by any of the loaded image editing plugins.\n* It also displays a console warning these conditions are not met.\n*\n* @param option image style option\n*/\nfunction isValidOption(option, { isBlockPluginLoaded, isInlinePluginLoaded }) {\n\tconst { modelElements, name } = option;\n\tif (!modelElements || !modelElements.length || !name) {\n\t\twarnInvalidStyle({ style: option });\n\t\treturn false;\n\t} else {\n\t\tconst supportedElements = [isBlockPluginLoaded ? \"imageBlock\" : null, isInlinePluginLoaded ? \"imageInline\" : null];\n\t\tif (!modelElements.some((elementName) => supportedElements.includes(elementName))) {\n\t\t\t/**\n\t\t\t* In order to work correctly, each image style {@link module:image/imageconfig~ImageStyleOptionDefinition option}\n\t\t\t* requires specific model elements (also: types of images) to be supported by the editor.\n\t\t\t*\n\t\t\t* Model element names to which the image style option can be applied are defined in the\n\t\t\t* {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements} property of the style option\n\t\t\t* definition.\n\t\t\t*\n\t\t\t* Explore the warning in the console to find out precisely which option is not supported and which editor plugins\n\t\t\t* are missing. Make sure these plugins are loaded in your editor to get this image style option working.\n\t\t\t*\n\t\t\t* @error image-style-missing-dependency\n\t\t\t* @param {string} style The name of the unsupported option.\n\t\t\t* @param {Array.<string>} missingPlugins The names of the plugins one of which has to be loaded for the particular option.\n\t\t\t*/\n\t\t\tlogWarning(\"image-style-missing-dependency\", {\n\t\t\t\tstyle: option,\n\t\t\t\tmissingPlugins: modelElements.map((name) => name === \"imageBlock\" ? \"ImageBlockEditing\" : \"ImageInlineEditing\")\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n* Extends the default style with a style provided by the developer.\n* Note: Don't override the custom–defined style object, clone it instead.\n*/\nfunction extendStyle(source, style) {\n\tconst extendedStyle = { ...style };\n\tfor (const prop in source) if (!Object.prototype.hasOwnProperty.call(style, prop)) extendedStyle[prop] = source[prop];\n\treturn extendedStyle;\n}\n/**\n* Displays a console warning with the 'image-style-configuration-definition-invalid' error.\n*/\nfunction warnInvalidStyle(info) {\n\t/**\n\t* The image style definition provided in the configuration is invalid.\n\t*\n\t* Please make sure the definition implements properly one of the following:\n\t*\n\t* * {@link module:image/imageconfig~ImageStyleOptionDefinition image style option definition},\n\t* * {@link module:image/imageconfig~ImageStyleDropdownDefinition image style dropdown definition}\n\t*\n\t* @error image-style-configuration-definition-invalid\n\t* @param {object} info The information about the invalid definition.\n\t*/\n\tlogWarning(\"image-style-configuration-definition-invalid\", info);\n}\n/**\n* @internal\n*/\nconst utils = {\n\tnormalizeStyles,\n\tgetDefaultStylesConfiguration,\n\tgetDefaultDropdownDefinitions,\n\twarnInvalidStyle\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/converters\n*/\n/**\n* Returns a converter for the `imageStyle` attribute. It can be used for adding, changing and removing the attribute.\n*\n* @param styles An array containing available image style options.\n* @returns A model-to-view attribute converter.\n* @internal\n*/\nfunction modelToViewStyleAttribute(styles) {\n\treturn (evt, data, conversionApi) => {\n\t\tif (!conversionApi.consumable.consume(data.item, evt.name)) return;\n\t\tconst newStyle = getStyleDefinitionByName(data.attributeNewValue, styles);\n\t\tconst oldStyle = getStyleDefinitionByName(data.attributeOldValue, styles);\n\t\tconst viewElement = conversionApi.mapper.toViewElement(data.item);\n\t\tconst viewWriter = conversionApi.writer;\n\t\tif (oldStyle) viewWriter.removeClass(oldStyle.className, viewElement);\n\t\tif (newStyle) viewWriter.addClass(newStyle.className, viewElement);\n\t};\n}\n/**\n* Returns a view-to-model converter converting image CSS classes to a proper value in the model.\n*\n* @param styles Image style options for which the converter is created.\n* @returns A view-to-model converter.\n* @internal\n*/\nfunction viewToModelStyleAttribute(styles) {\n\tconst nonDefaultStyles = {\n\t\timageInline: styles.filter((style) => !style.isDefault && style.modelElements.includes(\"imageInline\")),\n\t\timageBlock: styles.filter((style) => !style.isDefault && style.modelElements.includes(\"imageBlock\"))\n\t};\n\treturn (evt, data, conversionApi) => {\n\t\tif (!data.modelRange) return;\n\t\tconst viewElement = data.viewItem;\n\t\tconst modelImageElement = first(data.modelRange.getItems());\n\t\tif (!modelImageElement) return;\n\t\tif (!conversionApi.schema.checkAttribute(modelImageElement, \"imageStyle\")) return;\n\t\tfor (const style of nonDefaultStyles[modelImageElement.name]) if (conversionApi.consumable.consume(viewElement, { classes: style.className })) conversionApi.writer.setAttribute(\"imageStyle\", style.name, modelImageElement);\n\t\tnormalizeFloatToDefinitionStyle(conversionApi, viewElement, modelImageElement, styles);\n\t};\n}\n/**\n* A helper function that attempts to convert the `float` CSS style into a corresponding `imageStyle` attribute.\n*\n* It maps `float: left` and `float: right` to standard alignment styles (e.g. `'alignLeft'`, `'alignRight'`),\n* but only if the target style definition matches one of the {@link module:image/image/utils~DEFAULT_OPTIONS default options}.\n*/\nfunction normalizeFloatToDefinitionStyle(conversionApi, viewElement, modelElement, styles) {\n\tif (!conversionApi.consumable.test(viewElement, { styles: [\"float\"] })) return;\n\tlet floatStyleName = null;\n\tswitch (viewElement.getStyle(\"float\")) {\n\t\tcase \"left\":\n\t\t\tfloatStyleName = \"alignLeft\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tfloatStyleName = \"alignRight\";\n\t\t\tbreak;\n\t}\n\tif (!floatStyleName) return;\n\tconst definition = getStyleDefinitionByName(floatStyleName, styles);\n\tif (!definition) return;\n\tconst builtinDefinition = DEFAULT_OPTIONS[definition.name];\n\tif (!isEqual(definition, builtinDefinition)) return;\n\tconversionApi.writer.setAttribute(\"imageStyle\", floatStyleName, modelElement);\n\tconversionApi.consumable.consume(viewElement, { styles: [\"float\"] });\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/imagestyleediting\n*/\n/**\n* The image style engine plugin. It sets the default configuration, creates converters and registers\n* {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.\n*/\nvar ImageStyleEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageStyleEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageUtils];\n\t}\n\t/**\n\t* It contains a list of the normalized and validated style options.\n\t*\n\t* * Each option contains a complete icon markup.\n\t* * The style options not supported by any of the loaded image editing plugins (\n\t* {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} or\n\t* {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`}) are filtered out.\n\t*\n\t* @internal\n\t* @readonly\n\t*/\n\tnormalizedStyles;\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst isBlockPluginLoaded = editor.plugins.has(\"ImageBlockEditing\");\n\t\tconst isInlinePluginLoaded = editor.plugins.has(\"ImageInlineEditing\");\n\t\teditor.config.define(\"image.styles\", utils.getDefaultStylesConfiguration(isBlockPluginLoaded, isInlinePluginLoaded));\n\t\tthis.normalizedStyles = utils.normalizeStyles({\n\t\t\tconfiguredStyles: editor.config.get(\"image.styles\"),\n\t\t\tisBlockPluginLoaded,\n\t\t\tisInlinePluginLoaded\n\t\t});\n\t\tthis._setupConversion(isBlockPluginLoaded, isInlinePluginLoaded);\n\t\tthis._setupPostFixer();\n\t\teditor.commands.add(\"imageStyle\", new ImageStyleCommand(editor, this.normalizedStyles));\n\t}\n\t/**\n\t* Sets the editor conversion taking the presence of\n\t* {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}\n\t* and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.\n\t*/\n\t_setupConversion(isBlockPluginLoaded, isInlinePluginLoaded) {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst modelToViewConverter = modelToViewStyleAttribute(this.normalizedStyles);\n\t\tconst viewToModelConverter = viewToModelStyleAttribute(this.normalizedStyles);\n\t\teditor.editing.downcastDispatcher.on(\"attribute:imageStyle\", modelToViewConverter);\n\t\teditor.data.downcastDispatcher.on(\"attribute:imageStyle\", modelToViewConverter);\n\t\tif (isBlockPluginLoaded) {\n\t\t\tschema.extend(\"imageBlock\", { allowAttributes: \"imageStyle\" });\n\t\t\tschema.setAttributeProperties(\"imageStyle\", {\n\t\t\t\tisFormatting: true,\n\t\t\t\tblockAlignment: getBlockAlignmentAttributeProperty(this.normalizedStyles)\n\t\t\t});\n\t\t\teditor.data.upcastDispatcher.on(\"element:figure\", viewToModelConverter, { priority: \"low\" });\n\t\t}\n\t\tif (isInlinePluginLoaded) {\n\t\t\tschema.extend(\"imageInline\", { allowAttributes: \"imageStyle\" });\n\t\t\tschema.setAttributeProperties(\"imageStyle\", { isFormatting: true });\n\t\t\teditor.data.upcastDispatcher.on(\"element:img\", viewToModelConverter, { priority: \"low\" });\n\t\t}\n\t}\n\t/**\n\t* Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).\n\t*/\n\t_setupPostFixer() {\n\t\tconst editor = this.editor;\n\t\tconst document = editor.model.document;\n\t\tconst imageUtils = editor.plugins.get(ImageUtils);\n\t\tconst stylesMap = new Map(this.normalizedStyles.map((style) => [style.name, style]));\n\t\tdocument.registerPostFixer((writer) => {\n\t\t\tlet changed = false;\n\t\t\tfor (const change of document.differ.getChanges()) if (change.type == \"insert\" || change.type == \"attribute\" && change.attributeKey == \"imageStyle\") {\n\t\t\t\tlet element = change.type == \"insert\" ? change.position.nodeAfter : change.range.start.nodeAfter;\n\t\t\t\tif (element && element.is(\"element\", \"paragraph\") && element.childCount > 0) element = element.getChild(0);\n\t\t\t\tif (!imageUtils.isImage(element)) continue;\n\t\t\t\tconst imageStyle = element.getAttribute(\"imageStyle\");\n\t\t\t\tif (!imageStyle) continue;\n\t\t\t\tconst imageStyleDefinition = stylesMap.get(imageStyle);\n\t\t\t\tif (!imageStyleDefinition || !imageStyleDefinition.modelElements.includes(element.name)) {\n\t\t\t\t\twriter.removeAttribute(\"imageStyle\", element);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn changed;\n\t\t});\n\t}\n};\n/**\n* Returns a mapping of generic alignment values ('left', 'right', 'center') to their corresponding\n* block image alignment style names.\n*\n* This function is particularly useful for scenarios like `td[align]` conversion, which needs to know\n* exactly how to map a generic `align` attribute to the correct alignment value. This mapping is necessary\n* because the actual alignment value can differ depending on the target element type (e.g., block images\n* vs. tables).\n*\n* @param styles An array of available image style option definitions.\n* @returns A record mapping basic alignments to their valid, block-specific style names.\n*/\nfunction getBlockAlignmentAttributeProperty(styles) {\n\tconst pickFirstSupported = (...names) => {\n\t\tconst found = names.map((name) => getStyleDefinitionByName(name, styles)).find((definition) => definition?.modelElements.includes(\"imageBlock\"));\n\t\tif (!found) return;\n\t\treturn {\n\t\t\tisDefault: !!found.isDefault,\n\t\t\tvalue: found.name\n\t\t};\n\t};\n\treturn Object.fromEntries(Object.entries({\n\t\tleft: [\"alignBlockLeft\", \"alignLeft\"],\n\t\tright: [\"alignBlockRight\", \"alignRight\"],\n\t\tcenter: [\"block\", \"alignCenter\"]\n\t}).map(([align, names]) => [align, pickFirstSupported(...names)]).filter(([, resolved]) => resolved !== void 0));\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle/imagestyleui\n*/\n/**\n* The image style UI plugin.\n*\n* It registers buttons corresponding to the {@link module:image/imageconfig~ImageConfig#styles} configuration.\n* It also registers the {@link module:image/imagestyle/utils#DEFAULT_DROPDOWN_DEFINITIONS default drop-downs} and the\n* custom drop-downs defined by the developer in the {@link module:image/imageconfig~ImageConfig#toolbar} configuration.\n*/\nvar ImageStyleUI = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageStyleEditing];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageStyleUI\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* Returns the default localized style titles provided by the plugin.\n\t*\n\t* The following localized titles corresponding with\n\t* {@link module:image/imagestyle/utils#DEFAULT_OPTIONS} are available:\n\t*\n\t* * `'Wrap text'`,\n\t* * `'Break text'`,\n\t* * `'In line'`,\n\t* * `'Full size image'`,\n\t* * `'Side image'`,\n\t* * `'Left aligned image'`,\n\t* * `'Centered image'`,\n\t* * `'Right aligned image'`\n\t*/\n\tget localizedDefaultStylesTitles() {\n\t\tconst t = this.editor.t;\n\t\treturn {\n\t\t\t\"Wrap text\": t(\"Wrap text\"),\n\t\t\t\"Break text\": t(\"Break text\"),\n\t\t\t\"In line\": t(\"In line\"),\n\t\t\t\"Full size image\": t(\"Full size image\"),\n\t\t\t\"Side image\": t(\"Side image\"),\n\t\t\t\"Left aligned image\": t(\"Left aligned image\"),\n\t\t\t\"Centered image\": t(\"Centered image\"),\n\t\t\t\"Right aligned image\": t(\"Right aligned image\")\n\t\t};\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst plugins = this.editor.plugins;\n\t\tconst toolbarConfig = this.editor.config.get(\"image.toolbar\") || [];\n\t\tconst definedStyles = translateStyles(plugins.get(\"ImageStyleEditing\").normalizedStyles, this.localizedDefaultStylesTitles);\n\t\tfor (const styleConfig of definedStyles) this._createButton(styleConfig);\n\t\tconst definedDropdowns = translateStyles([...toolbarConfig.filter(isObject), ...utils.getDefaultDropdownDefinitions(plugins)], this.localizedDefaultStylesTitles);\n\t\tfor (const dropdownConfig of definedDropdowns) this._createDropdown(dropdownConfig, definedStyles);\n\t}\n\t/**\n\t* Creates a dropdown and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t*/\n\t_createDropdown(dropdownConfig, definedStyles) {\n\t\tconst factory = this.editor.ui.componentFactory;\n\t\tfactory.add(dropdownConfig.name, (locale) => {\n\t\t\tlet defaultButton;\n\t\t\tconst { defaultItem, items, title } = dropdownConfig;\n\t\t\tconst buttonViews = items.filter((itemName) => definedStyles.find(({ name }) => getUIComponentName(name) === itemName)).map((buttonName) => {\n\t\t\t\tconst button = factory.create(buttonName);\n\t\t\t\tif (buttonName === defaultItem) defaultButton = button;\n\t\t\t\treturn button;\n\t\t\t});\n\t\t\tif (items.length !== buttonViews.length) utils.warnInvalidStyle({ dropdown: dropdownConfig });\n\t\t\tconst dropdownView = createDropdown(locale, SplitButtonView);\n\t\t\tconst splitButtonView = dropdownView.buttonView;\n\t\t\tconst splitButtonViewArrow = splitButtonView.arrowView;\n\t\t\taddToolbarToDropdown(dropdownView, buttonViews, { enableActiveItemFocusOnDropdownOpen: true });\n\t\t\tsplitButtonView.set({\n\t\t\t\tlabel: getDropdownButtonTitle(title, defaultButton.label),\n\t\t\t\tclass: null,\n\t\t\t\ttooltip: true\n\t\t\t});\n\t\t\tsplitButtonViewArrow.unbind(\"label\");\n\t\t\tsplitButtonViewArrow.set({ label: title });\n\t\t\tsplitButtonView.bind(\"icon\").toMany(buttonViews, \"isOn\", (...areOn) => {\n\t\t\t\tconst index = areOn.findIndex(identity);\n\t\t\t\treturn index < 0 ? defaultButton.icon : buttonViews[index].icon;\n\t\t\t});\n\t\t\tsplitButtonView.bind(\"label\").toMany(buttonViews, \"isOn\", (...areOn) => {\n\t\t\t\tconst index = areOn.findIndex(identity);\n\t\t\t\treturn getDropdownButtonTitle(title, index < 0 ? defaultButton.label : buttonViews[index].label);\n\t\t\t});\n\t\t\tsplitButtonView.bind(\"isOn\").toMany(buttonViews, \"isOn\", (...areOn) => areOn.some(identity));\n\t\t\tsplitButtonView.bind(\"class\").toMany(buttonViews, \"isOn\", (...areOn) => areOn.some(identity) ? \"ck-splitbutton_flatten\" : void 0);\n\t\t\tsplitButtonView.on(\"execute\", () => {\n\t\t\t\tif (!buttonViews.some(({ isOn }) => isOn)) defaultButton.fire(\"execute\");\n\t\t\t\telse dropdownView.isOpen = !dropdownView.isOpen;\n\t\t\t});\n\t\t\tdropdownView.bind(\"isEnabled\").toMany(buttonViews, \"isEnabled\", (...areEnabled) => areEnabled.some(identity));\n\t\t\tthis.listenTo(dropdownView, \"execute\", () => {\n\t\t\t\tthis.editor.editing.view.focus();\n\t\t\t});\n\t\t\treturn dropdownView;\n\t\t});\n\t}\n\t/**\n\t* Creates a button and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t*/\n\t_createButton(buttonConfig) {\n\t\tconst buttonName = buttonConfig.name;\n\t\tthis.editor.ui.componentFactory.add(getUIComponentName(buttonName), (locale) => {\n\t\t\tconst editor = this.editor;\n\t\t\tconst command = editor.commands.get(\"imageStyle\");\n\t\t\tconst view = new ButtonView(locale);\n\t\t\tview.set({\n\t\t\t\tlabel: buttonConfig.title,\n\t\t\t\ticon: buttonConfig.icon,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t});\n\t\t\tconst reactiveSources = [command];\n\t\t\tconst imageTypeBlock = editor.commands.get(\"imageTypeBlock\");\n\t\t\tconst imageTypeInline = editor.commands.get(\"imageTypeInline\");\n\t\t\tif (imageTypeBlock) reactiveSources.push(imageTypeBlock);\n\t\t\tif (imageTypeInline) reactiveSources.push(imageTypeInline);\n\t\t\tview.bind(\"isEnabled\").toMany(reactiveSources, \"isEnabled\", () => command.isStyleEnabled(buttonName));\n\t\t\tview.bind(\"isOn\").to(command, \"value\", (value) => value === buttonName);\n\t\t\tview.on(\"execute\", this._executeCommand.bind(this, buttonName));\n\t\t\treturn view;\n\t\t});\n\t}\n\t_executeCommand(name) {\n\t\tthis.editor.execute(\"imageStyle\", { value: name });\n\t\tthis.editor.editing.view.focus();\n\t}\n};\n/**\n* Returns the translated `title` from the passed styles array.\n*/\nfunction translateStyles(styles, titles) {\n\tfor (const style of styles) if (titles[style.title]) style.title = titles[style.title];\n\treturn styles;\n}\n/**\n* Returns the image style component name with the \"imageStyle:\" prefix.\n*/\nfunction getUIComponentName(name) {\n\treturn `imageStyle:${name}`;\n}\n/**\n* Returns title for the splitbutton containing the dropdown title and default action item title.\n*/\nfunction getDropdownButtonTitle(dropdownTitle, buttonTitle) {\n\treturn (dropdownTitle ? dropdownTitle + \": \" : \"\") + buttonTitle;\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagestyle\n*/\n/**\n* The image style plugin.\n*\n* For a detailed overview of the image styles feature, check the {@glink features/images/images-styles documentation}.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n* * {@link module:image/imagestyle/imagestyleediting~ImageStyleEditing},\n* * {@link module:image/imagestyle/imagestyleui~ImageStyleUI}\n*\n* It provides a default configuration, which can be extended or overwritten.\n* Read more about the {@link module:image/imageconfig~ImageConfig#styles image styles configuration}.\n*/\nvar ImageStyle = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageStyleEditing, ImageStyleUI];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageStyle\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/imagetoolbar\n*/\n/**\n* The image toolbar plugin. It creates and manages the image toolbar (the toolbar displayed when an image is selected).\n*\n* For an overview, check the {@glink features/images/images-overview#image-contextual-toolbar image contextual toolbar} documentation.\n*\n* Instances of toolbar components (e.g. buttons) are created using the editor's\n* {@link module:ui/componentfactory~ComponentFactory component factory}\n* based on the {@link module:image/imageconfig~ImageConfig#toolbar `image.toolbar` configuration option}.\n*\n* The toolbar uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n*/\nvar ImageToolbar = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [WidgetToolbarRepository, ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ImageToolbar\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst widgetToolbarRepository = editor.plugins.get(WidgetToolbarRepository);\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\twidgetToolbarRepository.register(\"image\", {\n\t\t\tariaLabel: t(\"Image toolbar\"),\n\t\t\titems: normalizeDeclarativeConfig(editor.config.get(\"image.toolbar\") || []),\n\t\t\tgetRelatedElement: (selection) => imageUtils.getClosestSelectedImageWidget(selection)\n\t\t});\n\t}\n};\n/**\n* Convert the dropdown definitions to their keys registered in the ComponentFactory.\n* The registration precess should be handled by the plugin which handles the UI of a particular feature.\n*/\nfunction normalizeDeclarativeConfig(config) {\n\treturn config.map((item) => isObject(item) ? item.name : item);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module image/pictureediting\n*/\n/**\n* This plugin enables the [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture) element support in the editor.\n*\n* * It enables the `sources` model attribute on `imageBlock` and `imageInline` model elements\n* (brought by {@link module:image/imageblock~ImageBlock} and {@link module:image/imageinline~ImageInline}, respectively).\n* * It translates the `sources` model element to the view (also: data) structure that may look as follows:\n*\n* ```html\n* <p>Inline image using picture:\n* \t<picture>\n* \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n* \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n* \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n* \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n* \t</picture>\n* </p>\n*\n* <p>Block image using picture:</p>\n* <figure class=\"image\">\n* \t<picture>\n* \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n* \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n* \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n* \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n* \t</picture>\n* \t<figcaption>Caption of the image</figcaption>\n* </figure>\n* ```\n*\n* **Note:** The value of the `sources` {@glink framework/architecture/editing-engine#changing-the-model model attribute}\n* in both examples equals:\n*\n* ```css\n* [\n* \t{\n* \t\tmedia: '(min-width: 800px)',\n* \t\tsrcset: 'image-large.webp',\n* \t\ttype: 'image/webp'\n* \t},\n* \t{\n* \t\tmedia: '(max-width: 800px)',\n* \t\tsrcset: 'image-small.webp',\n* \t\ttype: 'image/webp'\n* \t}\n* ]\n* ```\n*\n* * It integrates with the {@link module:image/imageupload~ImageUpload} plugin so images uploaded in the editor\n* automatically render using `<picture>` if the {@glink features/images/image-upload/image-upload upload adapter}\n* supports image sources and provides neccessary data.\n*\n* @private\n*/\nvar PictureEditing = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get requires() {\n\t\treturn [ImageEditing, ImageUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"PictureEditing\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tafterInit() {\n\t\tconst editor = this.editor;\n\t\tif (editor.plugins.has(\"ImageBlockEditing\")) editor.model.schema.extend(\"imageBlock\", { allowAttributes: [\"sources\"] });\n\t\tif (editor.plugins.has(\"ImageInlineEditing\")) editor.model.schema.extend(\"imageInline\", { allowAttributes: [\"sources\"] });\n\t\tthis._setupConversion();\n\t\tthis._setupImageUploadEditingIntegration();\n\t}\n\t/**\n\t* Configures conversion pipelines to support upcasting and downcasting images using the `<picture>` view element\n\t* and the model `sources` attribute.\n\t*/\n\t_setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils = editor.plugins.get(\"ImageUtils\");\n\t\tconversion.for(\"upcast\").add(upcastPicture(imageUtils));\n\t\tconversion.for(\"downcast\").add(downcastSourcesAttribute(imageUtils));\n\t}\n\t/**\n\t* Makes it possible for uploaded images to get the `sources` model attribute and the `<picture>...</picture>`\n\t* view structure out-of-the-box if relevant data is provided along the\n\t* {@link module:image/imageupload/imageuploadediting~ImageUploadEditing#event:uploadComplete} event.\n\t*/\n\t_setupImageUploadEditingIntegration() {\n\t\tconst editor = this.editor;\n\t\tif (!editor.plugins.has(\"ImageUploadEditing\")) return;\n\t\tconst imageUploadEditing = editor.plugins.get(\"ImageUploadEditing\");\n\t\tthis.listenTo(imageUploadEditing, \"uploadComplete\", (evt, { imageElement, data }) => {\n\t\t\tconst sources = data.sources;\n\t\t\tif (!sources) return;\n\t\t\teditor.model.change((writer) => {\n\t\t\t\twriter.setAttributes({ sources }, imageElement);\n\t\t\t});\n\t\t});\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n\nexport { AutoImage, Image, ImageBlock, ImageBlockEditing, ImageCaption, ImageCaptionEditing, ImageCaptionUI, ImageCaptionUtils, ImageCustomResizeUI, ImageEditing, ImageInline, ImageInlineEditing, ImageInsert, ImageInsertUI, ImageInsertViaUrl, ImageInsertViaUrlUI, ImageLoadObserver, ImagePlaceholder, ImageResize, ImageResizeButtons, ImageResizeEditing, ImageResizeHandles, ImageSizeAttributes, ImageStyle, ImageStyleCommand, ImageStyleEditing, ImageStyleUI, ImageTextAlternative, ImageTextAlternativeCommand, ImageTextAlternativeEditing, ImageTextAlternativeUI, ImageToolbar, ImageTypeCommand, ImageUpload, ImageUploadEditing, ImageUploadProgress, ImageUploadUI, ImageUtils, InsertImageCommand, PictureEditing, ReplaceImageSourceCommand, ResizeImageCommand, ToggleImageCaptionCommand, UploadImageCommand, DEFAULT_DROPDOWN_DEFINITIONS as _IMAGE_DEFAULT_DROPDOWN_DEFINITIONS, DEFAULT_ICONS as _IMAGE_DEFAULT_ICONS, DEFAULT_OPTIONS as _IMAGE_DEFAULT_OPTIONS, ImageCustomResizeFormView as _ImageCustomResizeFormView, ImageInsertFormView as _ImageInsertFormView, ImageInsertUrlView as _ImageInsertUrlView, utils as _ImageStyleUtils, TextAlternativeFormView as _ImageTextAlternativeFormView, widthAndHeightStylesAreBothSet as _checkIfImageWidthAndHeightStylesAreBothSet, createBlockImageViewElement as _createBlockImageViewElement, createInlineImageViewElement as _createInlineImageViewElement, determineImageTypeForInsertionAtSelection as _determineImageTypeForInsertionAtSelection, downcastImageAttribute as _downcastImageAttribute, downcastSourcesAttribute as _downcastImageSourcesAttribute, downcastSrcsetAttribute as _downcastImageSrcsetAttribute, fetchLocalImage as _fetchLocalImage, getBalloonPositionData as _getImageBalloonPositionData, getSizeValueIfInPx as _getImageSizeValueIfInPx, getImgViewElementMatcher as _getImageViewElementMatcher, getSelectedImageEditorNodes as _getSelectedImageEditorNodes, getSelectedImagePossibleResizeRange as _getSelectedImagePossibleResizeRange, getSelectedImageWidthInUnits as _getSelectedImageWidthInUnits, isLocalImage as _isLocalImage, modelToViewStyleAttribute as _modelToViewImageStyleAttribute, repositionContextualBalloon as _repositionImageContextualBalloon, upcastImageFigure as _upcastImageFigure, upcastPicture as _upcastImagePicture, viewToModelStyleAttribute as _viewToModelImageStyleAttribute, createImageTypeRegExp, isHtmlInDataTransfer };\n//# sourceMappingURL=index.js.map","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/utils\n */\n\nimport {\n\ttype ModelDocumentSelection,\n\ttype MatcherPattern,\n\ttype ModelPosition,\n\ttype ModelSchema,\n\ttype ModelSelection,\n\ttype ViewContainerElement,\n\ttype ViewDowncastWriter,\n\ttype ViewElement,\n\t_isParagraphableModelNode as isParagraphable\n} from '@ckeditor/ckeditor5-engine';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport { first } from '@ckeditor/ckeditor5-utils';\n\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * Creates a view element representing the inline image.\n *\n * ```html\n * <span class=\"image-inline\"><img></img></span>\n * ```\n *\n * Note that `alt` and `src` attributes are converted separately, so they are not included.\n *\n * @internal\n */\nexport function createInlineImageViewElement( writer: ViewDowncastWriter ): ViewContainerElement {\n\treturn writer.createContainerElement( 'span', { class: 'image-inline' },\n\t\twriter.createEmptyElement( 'img' )\n\t);\n}\n\n/**\n * Creates a view element representing the block image.\n *\n * ```html\n * <figure class=\"image\"><img></img></figure>\n * ```\n *\n * Note that `alt` and `src` attributes are converted separately, so they are not included.\n *\n * @internal\n */\nexport function createBlockImageViewElement( writer: ViewDowncastWriter ): ViewContainerElement {\n\treturn writer.createContainerElement( 'figure', { class: 'image' }, [\n\t\twriter.createEmptyElement( 'img' ),\n\t\twriter.createSlot( 'children' )\n\t] );\n}\n\n/**\n * A function returning a `MatcherPattern` for a particular type of View images.\n *\n * @deprecated\n * @internal\n * @param matchImageType The type of created image.\n */\nexport function getImgViewElementMatcher( editor: Editor, matchImageType: 'imageBlock' | 'imageInline' ): MatcherPattern {\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\tconst areBothImagePluginsLoaded = editor.plugins.has( 'ImageInlineEditing' ) && editor.plugins.has( 'ImageBlockEditing' );\n\n\treturn element => {\n\t\t// Check if the matched view element is an <img>.\n\t\tif ( !imageUtils.isInlineImageView( element ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If just one of the plugins is loaded (block or inline), it will match all kinds of images.\n\t\tif ( !areBothImagePluginsLoaded ) {\n\t\t\treturn getPositiveMatchPattern( element );\n\t\t}\n\n\t\tconst imageType = getViewImageType( element, imageUtils );\n\n\t\tif ( imageType !== matchImageType ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn getPositiveMatchPattern( element );\n\t};\n\n\tfunction getPositiveMatchPattern( element: ViewElement ) {\n\t\tconst pattern: Record<string, unknown> = {\n\t\t\tname: true\n\t\t};\n\n\t\t// This will trigger src consumption (See https://github.com/ckeditor/ckeditor5/issues/11530).\n\t\tif ( element.hasAttribute( 'src' ) ) {\n\t\t\tpattern.attributes = [ 'src' ];\n\t\t}\n\n\t\treturn pattern;\n\t}\n}\n\n/**\n * Resolves the model image type (`'imageBlock'` or `'imageInline'`) that a given `<img>` view element represents,\n * based purely on its view structure.\n *\n * An `<img>` is treated as a block image when it has a `display: block` style or is wrapped in a block image figure\n * (`<figure class=\"image\">`, also `<figure class=\"image\"><a>...</a></figure>` added by the `LinkImage` plugin).\n * Otherwise it is treated as an inline image.\n *\n * Note that this only reflects the view representation - it does not check whether the resolved type is allowed by the\n * schema at the insertion position.\n *\n * @internal\n * @param element The `<img>` view element to resolve the type for.\n * @param imageUtils The `ImageUtils` plugin instance.\n */\nexport function getViewImageType( element: ViewElement, imageUtils: ImageUtils ): 'imageBlock' | 'imageInline' {\n\t// The <img> can be standalone, wrapped in <figure>...</figure> (ImageBlock plugin) or\n\t// wrapped in <figure><a>...</a></figure> (LinkImage plugin).\n\treturn ( element.getStyle( 'display' ) == 'block' || element.findAncestor( imageUtils.isBlockImageView ) ?\n\t\t'imageBlock' :\n\t\t'imageInline'\n\t);\n}\n\n/**\n * Checks whether the given image type can be placed at the specified position - either directly (or after hoisting\n * to an allowed ancestor) or, for inline images, wrapped in an auto-created paragraph.\n *\n * This is the predicate that decides whether a block image may land at a position or must degrade to an inline image\n * (for example, inside an `$inlineRoot` that disallows block content) and, symmetrically, whether an inline image may\n * become a block image. `isParagraphable()` is always `false` for `imageBlock` (a block object never fits in a\n * paragraph), so the auto-paragraph relaxation only applies to the inline target.\n *\n * @internal\n * @param schema The model schema to check against.\n * @param position The position at which the image type should be placed.\n * @param imageType The image type to check.\n */\nexport function isImageTypePlaceable(\n\tschema: ModelSchema,\n\tposition: ModelPosition,\n\timageType: 'imageBlock' | 'imageInline'\n): boolean {\n\treturn !!schema.findAllowedParent( position, imageType ) || isParagraphable( position, imageType, schema );\n}\n\n/**\n * Considering the current model selection, it returns the name of the model image element\n * (`'imageBlock'` or `'imageInline'`) that will make most sense from the UX perspective if a new\n * image was inserted (also: uploaded, dropped, pasted) at that selection.\n *\n * The assumption is that inserting images into empty blocks or on other block widgets should\n * produce block images. Inline images should be inserted in other cases, e.g. in paragraphs\n * that already contain some text.\n *\n * @internal\n */\nexport function determineImageTypeForInsertionAtSelection(\n\tschema: ModelSchema,\n\tselection: ModelSelection | ModelDocumentSelection\n): 'imageBlock' | 'imageInline' {\n\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t// Insert a block image if the selection is not in/on block elements or it's on a block widget.\n\tif ( !firstBlock || schema.isObject( firstBlock ) ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// A block image should also be inserted into an empty block element\n\t// (that is not an empty list item so the list won't get split).\n\tif ( firstBlock.isEmpty && firstBlock.name != 'listItem' ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// Otherwise insert an inline image.\n\treturn 'imageInline';\n}\n\n/**\n * Returns parsed value of the size, but only if it contains unit: px.\n *\n * @internal\n */\nexport function getSizeValueIfInPx( size: string | undefined ): number | null {\n\tif ( size && size.endsWith( 'px' ) ) {\n\t\treturn parseInt( size );\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns true if both styles (width and height) are set.\n *\n * If both image styles: width & height are set, they will override the image width & height attributes in the\n * browser. In this case, the image looks the same as if these styles were applied to attributes instead of styles.\n * That's why we can upcast these styles to width & height attributes instead of resizedWidth and resizedHeight.\n *\n * @internal\n */\nexport function widthAndHeightStylesAreBothSet( viewElement: ViewElement ): boolean {\n\tconst widthStyle = getSizeValueIfInPx( viewElement.getStyle( 'width' ) );\n\tconst heightStyle = getSizeValueIfInPx( viewElement.getStyle( 'height' ) );\n\n\treturn !!( widthStyle && heightStyle );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageutils\n */\n\nimport type {\n\tModelElement,\n\tViewElement,\n\tViewNode,\n\tModelDocumentSelection,\n\tViewDocumentSelection,\n\tModelSelection,\n\tViewSelection,\n\tModelDocumentFragment,\n\tViewDocumentFragment,\n\tViewDowncastWriter,\n\tModel,\n\tModelPosition,\n\tViewContainerElement\n} from '@ckeditor/ckeditor5-engine';\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\nimport { findOptimalInsertionRange, isWidget, toWidget } from '@ckeditor/ckeditor5-widget';\nimport { determineImageTypeForInsertionAtSelection } from './image/utils.js';\nimport { DomEmitterMixin, type DomEmitter, global } from '@ckeditor/ckeditor5-utils';\n\nconst IMAGE_WIDGETS_CLASSES_MATCH_REGEXP = /^(image|image-inline)$/;\n\n/**\n * A set of helpers related to images.\n */\nexport class ImageUtils extends Plugin {\n\t/**\n\t * DOM Emitter.\n\t */\n\tprivate _domEmitter: DomEmitter = new ( DomEmitterMixin() )();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUtils' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `image` or `imageInline`.\n\t */\n\tpublic isImage( modelElement?: ModelElement | null ): modelElement is ModelElement & { name: 'imageInline' | 'imageBlock' } {\n\t\treturn this.isInlineImage( modelElement ) || this.isBlockImage( modelElement );\n\t}\n\n\t/**\n\t * Checks if the provided view element represents an inline image.\n\t *\n\t * Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t */\n\tpublic isInlineImageView( element?: ViewElement | null ): boolean {\n\t\treturn !!element && element.is( 'element', 'img' );\n\t}\n\n\t/**\n\t * Checks if the provided view element represents a block image.\n\t *\n\t * Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t */\n\tpublic isBlockImageView( element?: ViewElement | null ): boolean {\n\t\treturn !!element && element.is( 'element', 'figure' ) && element.hasClass( 'image' );\n\t}\n\n\t/**\n\t * Handles inserting single file. This method unifies image insertion using {@link module:widget/utils~findOptimalInsertionRange}\n\t * method.\n\t *\n\t * ```ts\n\t * const imageUtils = editor.plugins.get( 'ImageUtils' );\n\t *\n\t * imageUtils.insertImage( { src: 'path/to/image.jpg' } );\n\t * ```\n\t *\n\t * @param attributes Attributes of the inserted image.\n\t * This method filters out the attributes which are disallowed by the {@link module:engine/model/schema~ModelSchema}.\n\t * @param selectable Place to insert the image. If not specified,\n\t * the {@link module:widget/utils~findOptimalInsertionRange} logic will be applied for the block images\n\t * and `model.document.selection` for the inline images.\n\t *\n\t * **Note**: If `selectable` is passed, this helper will not be able to set selection attributes (such as `linkHref`)\n\t * and apply them to the new image. In this case, make sure all selection attributes are passed in `attributes`.\n\t *\n\t * @param imageType Image type of inserted image. If not specified,\n\t * it will be determined automatically depending of editor config or place of the insertion.\n\t * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t * The default is `true`.\n\t * @return The inserted model image element.\n\t */\n\tpublic insertImage(\n\t\tattributes: Record<string, unknown> = {},\n\t\tselectable: ModelSelection | ModelPosition | null = null,\n\t\timageType: ( 'imageBlock' | 'imageInline' | null ) = null,\n\t\toptions: { setImageSizes?: boolean } = {}\n\t): ModelElement | null {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\tconst determinedImageType = determineImageTypeForInsertion( editor, selectable || selection, imageType );\n\n\t\t// Mix declarative attributes with selection attributes because the new image should \"inherit\"\n\t\t// the latter for best UX. For instance, inline images inserted into existing links\n\t\t// should not split them. To do that, they need to have \"linkHref\" inherited from the selection.\n\t\tattributes = {\n\t\t\t...Object.fromEntries( selection.getAttributes() ),\n\t\t\t...attributes\n\t\t};\n\n\t\tfor ( const attributeName in attributes ) {\n\t\t\tif ( !model.schema.checkAttribute( determinedImageType, attributeName ) ) {\n\t\t\t\tdelete attributes[ attributeName ];\n\t\t\t}\n\t\t}\n\n\t\treturn model.change( writer => {\n\t\t\tconst { setImageSizes = true } = options;\n\t\t\tconst imageElement = writer.createElement( determinedImageType, attributes );\n\n\t\t\tmodel.insertObject( imageElement, selectable, null, {\n\t\t\t\tsetSelection: 'on',\n\t\t\t\t// If we want to insert a block image (for whatever reason) then we don't want to split text blocks.\n\t\t\t\t// This applies only when we don't have the selectable specified (i.e., we insert multiple block images at once).\n\t\t\t\tfindOptimalPosition: !selectable && determinedImageType != 'imageInline' ? 'auto' : undefined\n\t\t\t} );\n\n\t\t\t// Inserting an image might've failed due to schema regulations.\n\t\t\tif ( imageElement.parent ) {\n\t\t\t\tif ( setImageSizes ) {\n\t\t\t\t\tthis.setImageNaturalSizeAttributes( imageElement );\n\t\t\t\t}\n\n\t\t\t\treturn imageElement;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} );\n\t}\n\n\t/**\n\t * Reads original image sizes and sets them as `width` and `height`.\n\t *\n\t * The `src` attribute may not be available if the user is using an upload adapter. In such a case,\n\t * this method is called again after the upload process is complete and the `src` attribute is available.\n\t */\n\tpublic setImageNaturalSizeAttributes( imageElement: ModelElement ): void {\n\t\tconst src = imageElement.getAttribute( 'src' ) as string;\n\n\t\tif ( !src ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( imageElement.getAttribute( 'width' ) || imageElement.getAttribute( 'height' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.editor.model.change( writer => {\n\t\t\tconst img = new global.window.Image();\n\n\t\t\tthis._domEmitter.listenTo( img, 'load', () => {\n\t\t\t\tif ( !imageElement.getAttribute( 'width' ) && !imageElement.getAttribute( 'height' ) ) {\n\t\t\t\t\t// We use writer.batch to be able to undo (in a single step) width and height setting\n\t\t\t\t\t// along with any change that triggered this action (e.g. image resize or image style change).\n\t\t\t\t\tthis.editor.model.enqueueChange( writer.batch, writer => {\n\t\t\t\t\t\twriter.setAttribute( 'width', img.naturalWidth, imageElement );\n\t\t\t\t\t\twriter.setAttribute( 'height', img.naturalHeight, imageElement );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tthis._domEmitter.stopListening( img, 'load' );\n\t\t\t} );\n\n\t\t\timg.src = src;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns an image widget editing view element if one is selected or is among the selection's ancestors.\n\t */\n\tpublic getClosestSelectedImageWidget( selection: ViewSelection | ViewDocumentSelection ): ViewElement | null {\n\t\tconst selectionPosition = selection.getFirstPosition();\n\n\t\tif ( !selectionPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst viewElement = selection.getSelectedElement();\n\n\t\tif ( viewElement && this.isImageWidget( viewElement ) ) {\n\t\t\treturn viewElement;\n\t\t}\n\n\t\tlet parent: ViewNode | ViewDocumentFragment | null = selectionPosition.parent;\n\n\t\twhile ( parent ) {\n\t\t\tif ( parent.is( 'element' ) && this.isImageWidget( parent ) ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns a image model element if one is selected or is among the selection's ancestors.\n\t */\n\tpublic getClosestSelectedImageElement( selection: ModelSelection | ModelDocumentSelection ): ModelElement | null {\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\treturn this.isImage( selectedElement ) ? selectedElement : selection.getFirstPosition()!.findAncestor( 'imageBlock' );\n\t}\n\n\t/**\n\t * Returns an image widget editing view based on the passed image view.\n\t */\n\tpublic getImageWidgetFromImageView( imageView: ViewElement ): ViewContainerElement | null {\n\t\treturn imageView.findAncestor( { classes: IMAGE_WIDGETS_CLASSES_MATCH_REGEXP } ) as ( ViewContainerElement | null );\n\t}\n\n\t/**\n\t * Checks if image can be inserted at current model selection.\n\t *\n\t * @internal\n\t */\n\tpublic isImageAllowed(): boolean {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\treturn isImageAllowedInParent( this.editor, selection ) && isNotInsideImage( selection );\n\t}\n\n\t/**\n\t * Converts a given {@link module:engine/view/element~ViewElement} to an image widget:\n\t * * Adds a {@link module:engine/view/element~ViewElement#_setCustomProperty custom property} allowing to recognize the image widget\n\t * element.\n\t * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n\t *\n\t * @param writer An instance of the view writer.\n\t * @param label The element's label. It will be concatenated with the image `alt` attribute if one is present.\n\t */\n\tpublic toImageWidget( viewElement: ViewElement, writer: ViewDowncastWriter, label: string ): ViewElement {\n\t\twriter.setCustomProperty( 'image', true, viewElement );\n\n\t\tconst labelCreator = () => {\n\t\t\tconst imgElement = this.findViewImgElement( viewElement )!;\n\t\t\tconst altText = imgElement.getAttribute( 'alt' );\n\n\t\t\treturn altText ? `${ altText } ${ label }` : label;\n\t\t};\n\n\t\treturn toWidget( viewElement, writer, { label: labelCreator } );\n\t}\n\n\t/**\n\t * Checks if a given view element is an image widget.\n\t */\n\tprotected isImageWidget( viewElement: ViewElement ): boolean {\n\t\treturn !!viewElement.getCustomProperty( 'image' ) && isWidget( viewElement );\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `image`.\n\t */\n\tpublic isBlockImage( modelElement?: ModelElement | null ): boolean {\n\t\treturn !!modelElement && modelElement.is( 'element', 'imageBlock' );\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `imageInline`.\n\t */\n\tpublic isInlineImage( modelElement?: ModelElement | null ): boolean {\n\t\treturn !!modelElement && modelElement.is( 'element', 'imageInline' );\n\t}\n\n\t/**\n\t * Get the view `<img>` from another view element, e.g. a widget (`<figure class=\"image\">`), a link (`<a>`).\n\t *\n\t * The `<img>` can be located deep in other elements, so this helper performs a deep tree search.\n\t */\n\tpublic findViewImgElement( figureView: ViewElement ): ViewElement | undefined {\n\t\tif ( this.isInlineImageView( figureView ) ) {\n\t\t\treturn figureView;\n\t\t}\n\n\t\tconst editingView = this.editor.editing.view;\n\n\t\tfor ( const { item } of editingView.createRangeIn( figureView ) ) {\n\t\t\tif ( this.isInlineImageView( item as ViewElement ) ) {\n\t\t\t\treturn item as ViewElement;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tthis._domEmitter.stopListening();\n\n\t\treturn super.destroy();\n\t}\n}\n\n/**\n * Checks if image is allowed by schema in optimal insertion parent.\n */\nfunction isImageAllowedInParent( editor: Editor, selection: ModelSelection | ModelDocumentSelection ): boolean {\n\tconst imageType = determineImageTypeForInsertion( editor, selection, null );\n\n\tif ( imageType == 'imageBlock' ) {\n\t\treturn isBlockImageAllowedAtInsertion( editor.model, selection );\n\t}\n\n\treturn editor.model.schema.checkChild( selection.focus!, 'imageInline' );\n}\n\n/**\n * Checks if selection is not placed inside an image (e.g. its caption).\n */\nfunction isNotInsideImage( selection: ModelDocumentSelection ): boolean {\n\treturn [ ...selection.focus!.getAncestors() ].every( ancestor => !ancestor.is( 'element', 'imageBlock' ) );\n}\n\n/**\n * Returns a node that will be used to insert image with `model.insertContent`.\n */\nfunction getInsertImageParent( selection: ModelSelection | ModelDocumentSelection, model: Model ): ModelElement | ModelDocumentFragment {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'rootElement' ) ) {\n\t\treturn parent.parent!;\n\t}\n\n\treturn parent;\n}\n\n/**\n * Checks whether a block image is allowed by the schema at the optimal insertion point for the given selectable\n * (e.g. it is not allowed inside `$inlineRoot` or any other inline-only container).\n */\nfunction isBlockImageAllowedAtInsertion(\n\tmodel: Model,\n\tselectable: ModelPosition | ModelSelection | ModelDocumentSelection\n): boolean {\n\tconst selection = selectable.is( 'position' ) ? model.createSelection( selectable ) : selectable;\n\tconst insertionParent = getInsertImageParent( selection, model );\n\n\treturn model.schema.checkChild( insertionParent as ModelElement, 'imageBlock' );\n}\n\n/**\n * Determine image element type name depending on editor config or place of insertion.\n *\n * @param imageType Image element type name. Used to force return of provided element name,\n * but only if there is proper plugin enabled.\n */\nfunction determineImageTypeForInsertion(\n\teditor: Editor,\n\tselectable: ModelPosition | ModelSelection | ModelDocumentSelection,\n\timageType: 'imageBlock' | 'imageInline' | null\n): 'imageBlock' | 'imageInline' {\n\tconst schema = editor.model.schema;\n\tconst configImageInsertType = editor.config.get( 'image.insert.type' );\n\n\tif ( !editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\treturn 'imageBlock';\n\t}\n\n\tif ( imageType ) {\n\t\treturn imageType;\n\t}\n\n\t// Force `imageInline` when a block image cannot be placed at the insertion location (e.g. inside\n\t// `$inlineRoot` or another inline-only container). Otherwise the `image.insert.type` config\n\t// (default: `'block'`) could pick a type the schema would later reject.\n\tif ( !isBlockImageAllowedAtInsertion( editor.model, selectable ) ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( configImageInsertType === 'inline' ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( configImageInsertType !== 'auto' ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// Try to replace the selected widget (e.g. another image).\n\tif ( selectable.is( 'selection' ) ) {\n\t\treturn determineImageTypeForInsertionAtSelection( schema, selectable );\n\t}\n\n\treturn schema.checkChild( selectable, 'imageInline' ) ? 'imageInline' : 'imageBlock';\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/autoimage\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tClipboard,\n\ttype ClipboardInputTransformationEvent,\n\ttype ClipboardPipeline\n} from '@ckeditor/ckeditor5-clipboard';\nimport { ModelLivePosition, ModelLiveRange } from '@ckeditor/ckeditor5-engine';\nimport { Undo } from '@ckeditor/ckeditor5-undo';\nimport { Delete } from '@ckeditor/ckeditor5-typing';\nimport { global } from '@ckeditor/ckeditor5-utils';\n\nimport { ImageUtils } from './imageutils.js';\n\n// Implements the pattern: http(s)://(www.)example.com/path/to/resource.ext?query=params&maybe=too.\nconst IMAGE_URL_REGEXP = new RegExp( String( /^(http(s)?:\\/\\/)?[\\w-]+\\.[\\w.~:/[\\]@!$&'()*+,;=%-]+/.source +\n\t/\\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source +\n\t/(\\?[\\w.~:/[\\]@!$&'()*+,;=%-]*)?/.source +\n\t/(#[\\w.~:/[\\]@!$&'()*+,;=%-]*)?$/.source ) );\n\n/**\n * The auto-image plugin. It recognizes image links in the pasted content and embeds\n * them shortly after they are injected into the document.\n */\nexport class AutoImage extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ Clipboard, ImageUtils, Undo, Delete ]> {\n\t\treturn [ Clipboard, ImageUtils, Undo, Delete ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AutoImage' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The paste–to–embed `setTimeout` ID. Stored as a property to allow\n\t * cleaning of the timeout.\n\t */\n\tprivate _timeoutId: ReturnType<typeof setTimeout> | null;\n\n\t/**\n\t * The position where the `<imageBlock>` element will be inserted after the timeout,\n\t * determined each time a new content is pasted into the document.\n\t */\n\tprivate _positionToInsert: ModelLivePosition | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._timeoutId = null;\n\n\t\tthis._positionToInsert = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\t// We need to listen on `Clipboard#inputTransformation` because we need to save positions of selection.\n\t\t// After pasting, the content between those positions will be checked for a URL that could be transformed\n\t\t// into an image.\n\t\tthis.listenTo<ClipboardInputTransformationEvent>( clipboardPipeline, 'inputTransformation', () => {\n\t\t\tconst firstRange = modelDocument.selection.getFirstRange()!;\n\n\t\t\tconst leftLivePosition = ModelLivePosition.fromPosition( firstRange.start );\n\t\t\tleftLivePosition.stickiness = 'toPrevious';\n\n\t\t\tconst rightLivePosition = ModelLivePosition.fromPosition( firstRange.end );\n\t\t\trightLivePosition.stickiness = 'toNext';\n\n\t\t\tmodelDocument.once( 'change:data', () => {\n\t\t\t\tthis._embedImageBetweenPositions( leftLivePosition, rightLivePosition );\n\n\t\t\t\tleftLivePosition.detach();\n\t\t\t\trightLivePosition.detach();\n\t\t\t}, { priority: 'high' } );\n\t\t} );\n\n\t\teditor.commands.get( 'undo' )!.on( 'execute', () => {\n\t\t\tif ( this._timeoutId ) {\n\t\t\t\tglobal.window.clearTimeout( this._timeoutId );\n\t\t\t\tthis._positionToInsert!.detach();\n\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Analyzes the part of the document between provided positions in search for a URL representing an image.\n\t * When the URL is found, it is automatically converted into an image.\n\t *\n\t * @param leftPosition Left position of the selection.\n\t * @param rightPosition Right position of the selection.\n\t */\n\tprivate _embedImageBetweenPositions( leftPosition: ModelLivePosition, rightPosition: ModelLivePosition ): void {\n\t\tconst editor = this.editor;\n\t\t// TODO: Use a marker instead of ModelLiveRange & LivePositions.\n\t\tconst urlRange = new ModelLiveRange( leftPosition, rightPosition );\n\t\tconst walker = urlRange.getWalker( { ignoreElementEnd: true } );\n\t\tconst selectionAttributes = Object.fromEntries( editor.model.document.selection.getAttributes() );\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tlet src = '';\n\n\t\tfor ( const node of walker ) {\n\t\t\tif ( node.item.is( '$textProxy' ) ) {\n\t\t\t\tsrc += node.item.data;\n\t\t\t}\n\t\t}\n\n\t\tsrc = src.trim();\n\n\t\t// If the URL does not match the image URL regexp, let's skip that.\n\t\tif ( !src.match( IMAGE_URL_REGEXP ) ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Position will not be available in the `setTimeout` function so let's clone it.\n\t\tthis._positionToInsert = ModelLivePosition.fromPosition( leftPosition );\n\n\t\t// This action mustn't be executed if undo was called between pasting and auto-embedding.\n\t\tthis._timeoutId = setTimeout( () => {\n\t\t\t// Do nothing if image element cannot be inserted at the current position.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/2763.\n\t\t\t// Condition must be checked after timeout - pasting may take place on an element, replacing it. The final position matters.\n\t\t\tconst imageCommand = editor.commands.get( 'insertImage' )!;\n\n\t\t\tif ( !imageCommand.isEnabled ) {\n\t\t\t\turlRange.detach();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\tthis._timeoutId = null;\n\n\t\t\t\twriter.remove( urlRange );\n\t\t\t\turlRange.detach();\n\n\t\t\t\tlet insertionPosition;\n\n\t\t\t\t// Check if the position where the element should be inserted is still valid.\n\t\t\t\t// Otherwise leave it as undefined to use the logic of insertImage().\n\t\t\t\tif ( this._positionToInsert!.root.rootName !== '$graveyard' ) {\n\t\t\t\t\tinsertionPosition = this._positionToInsert!.toPosition();\n\t\t\t\t}\n\n\t\t\t\timageUtils.insertImage( { ...selectionAttributes, src }, insertionPosition );\n\n\t\t\t\tthis._positionToInsert!.detach();\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t} );\n\n\t\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\n\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t}, 100 );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativecommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image text alternative command. It is used to change the `alt` attribute of `<imageBlock>` and `<imageInline>` model elements.\n */\nexport class ImageTextAlternativeCommand extends Command {\n\t/**\n\t * The command value: `false` if there is no `alt` attribute, otherwise the value of the `alt` attribute.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public value: string | false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection )!;\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( this.isEnabled && element.hasAttribute( 'alt' ) ) {\n\t\t\tthis.value = element.getAttribute( 'alt' ) as string | false;\n\t\t} else {\n\t\t\tthis.value = false;\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options\n\t * @param options.newValue The new value of the `alt` attribute to set.\n\t */\n\tpublic override execute( options: { newValue: string } ): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst model = editor.model;\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setAttribute( 'alt', options.newValue, imageElement! );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativeediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageTextAlternativeCommand } from './imagetextalternativecommand.js';\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image text alternative editing plugin.\n *\n * Registers the `'imageTextAlternative'` command.\n */\nexport class ImageTextAlternativeEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternativeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis.editor.commands.add( 'imageTextAlternative', new ImageTextAlternativeCommand( this.editor ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/ui/textalternativeformview\n */\n\nimport {\n\tButtonView,\n\tFocusCycler,\n\tFormRowView,\n\tFormHeaderView,\n\tLabeledFieldView,\n\tView,\n\tViewCollection,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\ttype InputView,\n\ttype FocusableView\n} from '@ckeditor/ckeditor5-ui';\nimport { FocusTracker, KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\nimport { IconPreviousArrow } from '@ckeditor/ckeditor5-icons';\n\n/**\n * The TextAlternativeFormView class.\n *\n * @internal\n */\nexport class TextAlternativeFormView extends View {\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * An input with a label.\n\t */\n\tpublic labeledInput: LabeledFieldView<InputView>;\n\n\t/**\n\t * The Back button view displayed in the header.\n\t */\n\tpublic backButtonView: ButtonView;\n\n\t/**\n\t * A button used to submit the form.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * A collection of child views.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A collection of views which can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\t// Create buttons.\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\n\t\t// Create input fields.\n\t\tthis.labeledInput = this._createLabeledInputView();\n\n\t\tthis.children = this.createCollection( [\n\t\t\tthis._createHeaderView()\n\t\t] );\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\tthis.labeledInput,\n\t\t\t\tthis.saveButtonView\n\t\t\t],\n\t\t\tclass: [\n\t\t\t\t'ck-form__row_with-submit',\n\t\t\t\t'ck-form__row_large-top-padding'\n\t\t\t]\n\t\t} ) );\n\n\t\tthis._focusables = new ViewCollection();\n\n\t\t// Close the panel on esc key press when the **form has focus**.\n\t\tthis.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis.fire<TextAlternativeFormViewCancelEvent>( 'cancel' );\n\t\t\tcancel();\n\t\t} );\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form',\n\t\t\t\t\t'ck-text-alternative-form',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/40\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tconst childViews = [\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element! );\n\t\t} );\n\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates a back button view that cancels the form.\n\t */\n\tprivate _createBackButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst backButton = new ButtonView( this.locale );\n\n\t\tbackButton.set( {\n\t\t\tclass: 'ck-button-back',\n\t\t\tlabel: t( 'Back' ),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbackButton.delegate( 'execute' ).to( this, 'cancel' );\n\n\t\treturn backButton;\n\t}\n\n\t/**\n\t * Creates a save button view that text alternative the image.\n\t */\n\tprivate _createSaveButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst saveButton = new ButtonView( this.locale );\n\n\t\tsaveButton.set( {\n\t\t\tlabel: t( 'Save' ),\n\t\t\twithText: true,\n\t\t\ttype: 'submit',\n\t\t\tclass: 'ck-button-action ck-button-bold'\n\t\t} );\n\n\t\treturn saveButton;\n\t}\n\n\t/**\n\t * Creates a header view for the form.\n\t */\n\tprivate _createHeaderView(): FormHeaderView {\n\t\tconst t = this.locale!.t;\n\n\t\tconst header = new FormHeaderView( this.locale, {\n\t\t\tlabel: t( 'Text Alternative' )\n\t\t} );\n\n\t\theader.children.add( this.backButtonView, 0 );\n\n\t\treturn header;\n\t}\n\n\t/**\n\t * Creates an input with a label.\n\t *\n\t * @returns Labeled field view instance.\n\t */\n\tprivate _createLabeledInputView(): LabeledFieldView<InputView> {\n\t\tconst t = this.locale!.t;\n\t\tconst labeledInput = new LabeledFieldView<InputView>( this.locale, createLabeledInputText );\n\n\t\tlabeledInput.label = t( 'Text alternative' );\n\t\tlabeledInput.class = 'ck-labeled-field-view_full-width';\n\n\t\treturn labeledInput;\n\t}\n}\n\n/**\n * Fired when the form view is submitted.\n *\n * @eventName ~TextAlternativeFormView#submit\n * @internal\n */\nexport type TextAlternativeFormViewSubmitEvent = {\n\tname: 'submit';\n\targs: [];\n};\n\n/**\n * Fired when the form view is canceled.\n *\n * @eventName ~TextAlternativeFormView#cancel\n * @internal\n */\nexport type TextAlternativeFormViewCancelEvent = {\n\tname: 'cancel';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/ui/utils\n */\n\nimport type { DomOptimalPositionOptions } from '@ckeditor/ckeditor5-utils';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport { BalloonPanelView, type ContextualBalloon } from '@ckeditor/ckeditor5-ui';\n\nimport { type ImageUtils } from '../../imageutils.js';\n\n/**\n * A helper utility that positions the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} instance\n * with respect to the image in the editor content, if one is selected.\n *\n * @param editor The editor instance.\n * @internal\n */\nexport function repositionContextualBalloon( editor: Editor ): void {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\tif ( imageUtils.getClosestSelectedImageWidget( editor.editing.view.document.selection ) ) {\n\t\tconst position = getBalloonPositionData( editor );\n\n\t\tballoon.updatePosition( position );\n\t}\n}\n\n/**\n * Returns the positioning options that control the geometry of the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} with respect\n * to the selected element in the editor content.\n *\n * @param editor The editor instance.\n * @internal\n */\nexport function getBalloonPositionData( editor: Editor ): Partial<DomOptimalPositionOptions> {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom(\n\t\t\timageUtils.getClosestSelectedImageWidget( editingView.document.selection )!\n\t\t) as HTMLElement,\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativeui\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tButtonView,\n\tContextualBalloon,\n\tclickOutsideHandler,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from '@ckeditor/ckeditor5-ui';\nimport { IconTextAlternative } from '@ckeditor/ckeditor5-icons';\n\nimport {\n\tTextAlternativeFormView,\n\ttype TextAlternativeFormViewCancelEvent,\n\ttype TextAlternativeFormViewSubmitEvent\n} from './ui/textalternativeformview.js';\nimport { repositionContextualBalloon, getBalloonPositionData } from '../image/ui/utils.js';\nimport { type ImageTextAlternativeCommand } from './imagetextalternativecommand.js';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image text alternative UI plugin.\n *\n * The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport class ImageTextAlternativeUI extends Plugin {\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon?: ContextualBalloon;\n\n\t/**\n\t * A form containing a textarea and buttons, used to change the `alt` text value.\n\t */\n\tprivate _form?: TextAlternativeFormView & ViewWithCssTransitionDisabler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ContextualBalloon ]> {\n\t\treturn [ ContextualBalloon ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternativeUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis._createButton();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see https://github.com/ckeditor/ckeditor5/issues/1341).\n\t\tif ( this._form ) {\n\t\t\tthis._form.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a button showing the balloon panel for changing the image text alternative and\n\t * registers it in the editor {@link module:ui/componentfactory~ComponentFactory ComponentFactory}.\n\t */\n\tprivate _createButton(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'imageTextAlternative', locale => {\n\t\t\tconst command: ImageTextAlternativeCommand = editor.commands.get( 'imageTextAlternative' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Change image text alternative' ),\n\t\t\t\ticon: IconTextAlternative,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\t\tview.bind( 'isOn' ).to( command, 'value', value => !!value );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\tthis._showForm();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the {@link module:image/imagetextalternative/ui/textalternativeformview~TextAlternativeFormView}\n\t * form.\n\t */\n\tprivate _createForm(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis._form = new ( CssTransitionDisablerMixin( TextAlternativeFormView ) )( editor.locale );\n\n\t\t// Render the form so its #element is available for clickOutsideHandler.\n\t\tthis._form.render();\n\n\t\tthis.listenTo<TextAlternativeFormViewSubmitEvent>( this._form, 'submit', () => {\n\t\t\teditor.execute( 'imageTextAlternative', {\n\t\t\t\tnewValue: this._form!.labeledInput.fieldView.element!.value\n\t\t\t} );\n\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\tthis.listenTo<TextAlternativeFormViewCancelEvent>( this._form, 'cancel', () => {\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\t// Reposition the balloon or hide the form if an image widget is no longer selected.\n\t\tthis.listenTo( editor.ui, 'update', () => {\n\t\t\tif ( !imageUtils.getClosestSelectedImageWidget( viewDocument.selection ) ) {\n\t\t\t\tthis._hideForm( true );\n\t\t\t} else if ( this._isVisible ) {\n\t\t\t\trepositionContextualBalloon( editor );\n\t\t\t}\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [ this._balloon!.view.element! ],\n\t\t\tcallback: () => this._hideForm()\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the {@link #_form} in the {@link #_balloon}.\n\t */\n\tprivate _showForm(): void {\n\t\tif ( this._isVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._form ) {\n\t\t\tthis._createForm();\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst command: ImageTextAlternativeCommand = editor.commands.get( 'imageTextAlternative' )!;\n\t\tconst labeledInput = this._form!.labeledInput;\n\n\t\tthis._form!.disableCssTransitions();\n\n\t\tif ( !this._isInBalloon ) {\n\t\t\tthis._balloon!.add( {\n\t\t\t\tview: this._form!,\n\t\t\t\tposition: getBalloonPositionData( editor )\n\t\t\t} );\n\t\t}\n\n\t\t// Make sure that each time the panel shows up, the field remains in sync with the value of\n\t\t// the command. If the user typed in the input, then canceled the balloon (`labeledInput#value`\n\t\t// stays unaltered) and re-opened it without changing the value of the command, they would see the\n\t\t// old value instead of the actual value of the command.\n\t\t// https://github.com/ckeditor/ckeditor5-image/issues/114\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element!.value = command.value || '';\n\n\t\tthis._form!.labeledInput.fieldView.select();\n\n\t\tthis._form!.enableCssTransitions();\n\t}\n\n\t/**\n\t * Removes the {@link #_form} from the {@link #_balloon}.\n\t *\n\t * @param focusEditable Controls whether the editing view is focused afterwards.\n\t */\n\tprivate _hideForm( focusEditable: boolean = false ): void {\n\t\tif ( !this._isInBalloon ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur the input element before removing it from DOM to prevent issues in some browsers.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\tif ( this._form!.focusTracker.isFocused ) {\n\t\t\tthis._form!.saveButtonView.focus();\n\t\t}\n\n\t\tthis._balloon!.remove( this._form! );\n\n\t\tif ( focusEditable ) {\n\t\t\tthis.editor.editing.view.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t */\n\tprivate get _isVisible(): boolean {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t */\n\tprivate get _isInBalloon(): boolean {\n\t\treturn !!this._balloon && this._balloon.hasView( this._form! );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetextalternative\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageTextAlternativeEditing } from './imagetextalternative/imagetextalternativeediting.js';\nimport { ImageTextAlternativeUI } from './imagetextalternative/imagetextalternativeui.js';\n\n/**\n * The image text alternative plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-styles image styles} documentation.\n *\n * This is a \"glue\" plugin which loads the\n * {@link module:image/imagetextalternative/imagetextalternativeediting~ImageTextAlternativeEditing}\n * and {@link module:image/imagetextalternative/imagetextalternativeui~ImageTextAlternativeUI} plugins.\n */\nexport class ImageTextAlternative extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageTextAlternativeEditing, ImageTextAlternativeUI ]> {\n\t\treturn [ ImageTextAlternativeEditing, ImageTextAlternativeUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternative' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/converters\n */\n\nimport {\n\ttype DowncastDispatcher,\n\ttype ModelElement,\n\ttype UpcastDispatcher,\n\ttype UpcastElementEvent,\n\ttype ViewElement,\n\ttype ViewElementAttributes,\n\ttype DowncastAttributeEvent,\n\ttype Consumables\n} from '@ckeditor/ckeditor5-engine';\nimport { first, type GetCallback } from '@ckeditor/ckeditor5-utils';\nimport { type ImageUtils } from '../imageutils.js';\nimport { getViewImageType, isImageTypePlaceable } from './utils.js';\n\n/**\n * Returns a function that converts the image view representation:\n *\n * ```html\n * <figure class=\"image\"><img src=\"...\" alt=\"...\"></img></figure>\n * ```\n *\n * to the model representation:\n *\n * ```html\n * <imageBlock src=\"...\" alt=\"...\"></imageBlock>\n * ```\n *\n * The entire content of the `<figure>` element except the first `<img>` is being converted as children\n * of the `<imageBlock>` model element.\n *\n * @internal\n */\nexport function upcastImageFigure( imageUtils: ImageUtils ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\t// Do not convert if this is not an \"image figure\".\n\t\tif ( !conversionApi.consumable.test( data.viewItem, { name: true, classes: 'image' } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find an image element inside the figure element.\n\t\tconst viewImage = imageUtils.findViewImgElement( data.viewItem );\n\n\t\t// Do not convert if image element is absent or was already converted.\n\t\tif ( !viewImage || !conversionApi.consumable.test( viewImage, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If a block image cannot land at this position (e.g. inside an inline root or another limit that\n\t\t// disallows block content), do not handle the figure here. Leaving it unconsumed lets the default\n\t\t// converter unwrap the figure so the `upcastImg()` converter can turn the inner `<img>` into an inline\n\t\t// image - otherwise the whole figure (the image included) would be dropped.\n\t\tif ( !isImageTypePlaceable( conversionApi.schema, data.modelCursor, 'imageBlock' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Consume the figure to prevent other converters from processing it again.\n\t\tconversionApi.consumable.consume( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t// Convert view image to model image.\n\t\tconst conversionResult = conversionApi.convertItem( viewImage, data.modelCursor );\n\n\t\t// When nothing was converted there is no model image to attach the figure's children to.\n\t\t// In practice `convertItem()` yields a non-null (empty) range for an `<img/>` - handled by the\n\t\t// `!modelImage` check below - so this only guards the `ModelRange | null` return type.\n\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\tif ( !conversionResult.modelRange ) {\n\t\t\t// Revert consumed figure so other features can convert it.\n\t\t\tconversionApi.consumable.revert( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Get image element from conversion result.\n\t\tconst modelImage = first( conversionResult.modelRange.getItems() ) as ModelElement;\n\n\t\t// When image wasn't successfully converted then finish conversion.\n\t\tif ( !modelImage ) {\n\t\t\t// Revert consumed figure so other features can convert it.\n\t\t\tconversionApi.consumable.revert( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert rest of the figure element's children as an image children.\n\t\tconversionApi.convertChildren( data.viewItem, modelImage );\n\n\t\tconversionApi.updateConversionResult( modelImage, data );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:figure', converter );\n\t};\n}\n\n/**\n * Returns a function that upcasts an `<img>` element to either an `imageBlock` or an `imageInline` model element.\n *\n * The image type is first determined from the view structure (see {@link module:image/image/utils~getViewImageType}):\n * an `<img>` wrapped in a `<figure class=\"image\">` or styled with `display: block` becomes an `imageBlock`, otherwise\n * an `imageInline`.\n *\n * That structural type is then verified against the schema at the insertion position. If it cannot be placed there -\n * neither directly (or after hoisting to an allowed ancestor) nor wrapped in an auto-created paragraph - the converter\n * falls back to `matchImageType`. This is what allows a block image to degrade to an inline image inside an inline root\n * (and, symmetrically, an inline image to become a block image in a context that only accepts block images) instead of\n * being dropped.\n *\n * Both `ImageBlockEditing` and `ImageInlineEditing` register this converter, each passing the type it falls back to.\n * When only one of them is loaded, that single type is always produced.\n *\n * @internal\n * @param matchImageType The image type to fall back to when the type resolved from the view cannot be placed at the\n * insertion position.\n * @param imageUtils The `ImageUtils` plugin instance.\n */\nexport function upcastImg(\n\tmatchImageType: 'imageBlock' | 'imageInline',\n\timageUtils: ImageUtils\n): ( dispatcher: UpcastDispatcher ) => void {\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\t// Check if the `<img>` should be upcasted as a block image or an inline one.\n\t\tlet imageType = getViewImageType( data.viewItem, imageUtils );\n\n\t\t// Collect attributes and build consumables to test.\n\t\tconst attributes = data.viewItem.hasAttribute( 'src' ) ? {\n\t\t\tsrc: data.viewItem.getAttribute( 'src' )\n\t\t} : undefined;\n\n\t\tconst consumables: Consumables = {\n\t\t\tname: true,\n\t\t\tattributes: Object.keys( attributes || {} )\n\t\t};\n\n\t\t// Exit early if it is already consumed by some other converter.\n\t\tif ( !conversionApi.consumable.test( data.viewItem, consumables ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Is this image type allowed here? Switch type if not.\n\t\tif ( imageType != matchImageType && !isImageTypePlaceable( conversionApi.schema, data.modelCursor, imageType ) ) {\n\t\t\timageType = matchImageType;\n\t\t}\n\n\t\tconst modelElement = conversionApi.writer.createElement( imageType, attributes );\n\n\t\tif ( !conversionApi.safeInsert( modelElement, data.modelCursor ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconversionApi.consumable.consume( data.viewItem, consumables );\n\t\tconversionApi.convertChildren( data.viewItem, modelElement );\n\t\tconversionApi.updateConversionResult( modelElement, data );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:img', converter );\n\t};\n}\n\n/**\n * Returns a function that converts the image view representation:\n *\n * ```html\n * <picture><source ... /><source ... />...<img ... /></picture>\n * ```\n *\n * to the model representation as the `sources` attribute:\n *\n * ```html\n * <image[Block|Inline] ... sources=\"...\"></image[Block|Inline]>\n * ```\n *\n * @internal\n */\nexport function upcastPicture( imageUtils: ImageUtils ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst sourceAttributeNames = [ 'srcset', 'media', 'type', 'sizes' ];\n\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\tconst pictureViewElement = data.viewItem;\n\n\t\t// Do not convert <picture> if already consumed.\n\t\tif ( !conversionApi.consumable.test( pictureViewElement, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst sources = new Map<ViewElement, Record<string, string | undefined>>();\n\n\t\t// Collect all <source /> elements attribute values.\n\t\tfor ( const childSourceElement of pictureViewElement.getChildren() ) {\n\t\t\tif ( childSourceElement.is( 'element', 'source' ) ) {\n\t\t\t\tconst attributes: Record<string, string | undefined> = {};\n\n\t\t\t\tfor ( const name of sourceAttributeNames ) {\n\t\t\t\t\tif ( childSourceElement.hasAttribute( name ) ) {\n\t\t\t\t\t\t// Don't collect <source /> attribute if already consumed somewhere else.\n\t\t\t\t\t\tif ( conversionApi.consumable.test( childSourceElement, { attributes: name } ) ) {\n\t\t\t\t\t\t\tattributes[ name ] = childSourceElement.getAttribute( name );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( attributes ).length ) {\n\t\t\t\t\tsources.set( childSourceElement, attributes );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst imgViewElement = imageUtils.findViewImgElement( pictureViewElement );\n\n\t\t// Don't convert when a picture has no <img/> inside (it is broken).\n\t\tif ( !imgViewElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet modelImage = data.modelCursor.parent;\n\n\t\t// - In case of an inline image (cursor parent in a <paragraph>), the <img/> must be converted right away\n\t\t// because no converter handled it yet and otherwise there would be no model element to set the sources attribute on.\n\t\t// - In case of a block image, the <figure class=\"image\"> converter (in ImageBlockEditing) converts the\n\t\t// <img/> right away on its own and the modelCursor is already inside an imageBlock and there's nothing special\n\t\t// to do here.\n\t\tif ( !modelImage.is( 'element', 'imageBlock' ) ) {\n\t\t\tconst conversionResult = conversionApi.convertItem( imgViewElement, data.modelCursor );\n\n\t\t\t// Set image range as conversion result.\n\t\t\tdata.modelRange = conversionResult.modelRange;\n\n\t\t\t// Continue conversion where image conversion ends.\n\t\t\tdata.modelCursor = conversionResult.modelCursor;\n\n\t\t\t// The `<img/>` was not converted to a model image element (e.g. an inline root only allows\n\t\t\t// inline content and neither image type was allowed), so there is nothing to set the sources on.\n\t\t\t// In practice `convertItem()` yields a non-null (empty) range for an `<img/>` - handled by the\n\t\t\t// `!modelImage` check below - so this only guards the `ModelRange | null` return type.\n\t\t\t/* istanbul ignore if: defensive guard for the `ModelRange | null` return type -- @preserve */\n\t\t\tif ( !conversionResult.modelRange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodelImage = first( conversionResult.modelRange.getItems() ) as ModelElement;\n\n\t\t\tif ( !modelImage ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconversionApi.consumable.consume( pictureViewElement, { name: true } );\n\n\t\t// Consume only these <source/> attributes that were actually collected and will be passed on\n\t\t// to the image model element.\n\t\tfor ( const [ sourceElement, attributes ] of sources ) {\n\t\t\tconversionApi.consumable.consume( sourceElement, { attributes: Object.keys( attributes ) } );\n\t\t}\n\n\t\tif ( sources.size ) {\n\t\t\tconversionApi.writer.setAttribute( 'sources', Array.from( sources.values() ), modelImage );\n\t\t}\n\n\t\t// Convert rest of the <picture> children as an image children. Other converters may want to consume them.\n\t\tconversionApi.convertChildren( pictureViewElement, modelImage );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:picture', converter );\n\t};\n}\n\n/**\n * Converter used to convert the `srcset` model image attribute to the `srcset` and `sizes` attributes in the view.\n *\n * @internal\n * @param imageType The type of the image.\n */\nexport function downcastSrcsetAttribute(\n\timageUtils: ImageUtils,\n\timageType: 'imageBlock' | 'imageInline'\n): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<ModelElement>> = ( evt, data, conversionApi\t) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst writer = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\tif ( data.attributeNewValue === null ) {\n\t\t\twriter.removeAttribute( 'srcset', img );\n\t\t\twriter.removeAttribute( 'sizes', img );\n\t\t} else {\n\t\t\tif ( data.attributeNewValue ) {\n\t\t\t\twriter.setAttribute( 'srcset', data.attributeNewValue, img );\n\t\t\t\t// Always outputting `100vw`. See https://github.com/ckeditor/ckeditor5-image/issues/2.\n\t\t\t\twriter.setAttribute( 'sizes', '100vw', img );\n\t\t\t}\n\t\t}\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( `attribute:srcset:${ imageType }`, converter );\n\t};\n}\n\n/**\n * Converts the `source` model attribute to the `<picture><source /><source />...<img /></picture>`\n * view structure.\n *\n * @internal\n */\nexport function downcastSourcesAttribute( imageUtils: ImageUtils ): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<ModelElement>> = ( evt, data, conversionApi\t) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst imgElement = imageUtils.findViewImgElement( element )!;\n\t\tconst attributeNewValue = data.attributeNewValue as null | Array<ViewElementAttributes>;\n\n\t\tif ( attributeNewValue && attributeNewValue.length ) {\n\t\t\t// Collect all wrapping attribute elements.\n\t\t\tconst attributeElements = [];\n\t\t\tlet viewElement = imgElement.parent;\n\n\t\t\twhile ( viewElement && viewElement.is( 'attributeElement' ) ) {\n\t\t\t\tconst parentElement = viewElement.parent;\n\n\t\t\t\tviewWriter.unwrap( viewWriter.createRangeOn( imgElement ), viewElement );\n\n\t\t\t\tattributeElements.unshift( viewElement );\n\t\t\t\tviewElement = parentElement;\n\t\t\t}\n\n\t\t\tconst hasPictureElement = imgElement.parent!.is( 'element', 'picture' );\n\n\t\t\t// Reuse existing <picture> element (https://github.com/ckeditor/ckeditor5/issues/17192) or create a new one.\n\t\t\tconst pictureElement = hasPictureElement ? imgElement.parent : viewWriter.createContainerElement( 'picture', null );\n\n\t\t\tif ( !hasPictureElement ) {\n\t\t\t\tviewWriter.insert( viewWriter.createPositionBefore( imgElement ), pictureElement );\n\t\t\t}\n\n\t\t\tviewWriter.remove( viewWriter.createRangeIn( pictureElement ) );\n\n\t\t\tviewWriter.insert( viewWriter.createPositionAt( pictureElement, 'end' ),\n\t\t\t\tattributeNewValue.map( sourceAttributes => {\n\t\t\t\t\treturn viewWriter.createEmptyElement( 'source', sourceAttributes );\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tviewWriter.move( viewWriter.createRangeOn( imgElement ), viewWriter.createPositionAt( pictureElement, 'end' ) );\n\n\t\t\t// Apply collected attribute elements over the new picture element.\n\t\t\tfor ( const attributeElement of attributeElements ) {\n\t\t\t\tviewWriter.wrap( viewWriter.createRangeOn( pictureElement ), attributeElement );\n\t\t\t}\n\t\t}\n\t\t// Both setting \"sources\" to an empty array and removing the attribute should unwrap the <img />.\n\t\t// Unwrap once if the latter followed the former, though.\n\t\telse if ( imgElement.parent!.is( 'element', 'picture' ) ) {\n\t\t\tconst pictureElement = imgElement.parent;\n\n\t\t\tviewWriter.move( viewWriter.createRangeOn( imgElement ), viewWriter.createPositionBefore( pictureElement ) );\n\t\t\tviewWriter.remove( pictureElement );\n\t\t}\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( 'attribute:sources:imageBlock', converter );\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( 'attribute:sources:imageInline', converter );\n\t};\n}\n\n/**\n * Converter used to convert a given image attribute from the model to the view.\n *\n * @internal\n * @param imageType The type of the image.\n * @param attributeKey The name of the attribute to convert.\n */\nexport function downcastImageAttribute(\n\timageUtils: ImageUtils,\n\timageType: 'imageBlock' | 'imageInline',\n\tattributeKey: string\n): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<ModelElement>> = ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\tviewWriter.setAttribute( data.attributeKey, data.attributeNewValue || '', img );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( `attribute:${ attributeKey }:${ imageType }`, converter );\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageloadobserver\n */\n\nimport { Observer } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Observes all new images added to the {@link module:engine/view/document~ViewDocument},\n * fires {@link module:engine/view/document~ViewDocument#event:imageLoaded} and\n * {@link module:engine/view/document~ViewDocument#event:layoutChanged} event every time when the new image\n * has been loaded.\n *\n * **Note:** This event is not fired for images that has been added to the document and rendered as `complete` (already loaded).\n */\nexport class ImageLoadObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe( domRoot: HTMLElement ): void {\n\t\tthis.listenTo( domRoot, 'load', ( event, domEvent ) => {\n\t\t\tconst domElement = domEvent.target as HTMLElement;\n\n\t\t\tif ( this.checkShouldIgnoreEventFromTarget( domElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( domElement.tagName == 'IMG' ) {\n\t\t\t\tthis._fireEvents( domEvent );\n\t\t\t}\n\t\t\t// Use capture phase for better performance (https://github.com/ckeditor/ckeditor5/issues/4504).\n\t\t}, { useCapture: true } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving( domRoot: HTMLElement ): void {\n\t\tthis.stopListening( domRoot );\n\t}\n\n\t/**\n\t * Fires {@link module:engine/view/document~ViewDocument#event:layoutChanged} and\n\t * {@link module:engine/view/document~ViewDocument#event:imageLoaded}\n\t * if observer {@link #isEnabled is enabled}.\n\t *\n\t * @param domEvent The DOM event.\n\t */\n\tprivate _fireEvents( domEvent: Event ): void {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis.document.fire( 'layoutChanged' );\n\t\t\tthis.document.fire<ImageLoadedEvent>( 'imageLoaded', domEvent );\n\t\t}\n\t}\n}\n\n/**\n * Fired when an <img/> DOM element has been loaded in the DOM root.\n *\n * Introduced by {@link module:image/image/imageloadobserver~ImageLoadObserver}.\n *\n * @see module:image/image/imageloadobserver~ImageLoadObserver\n *\n * @eventName module:engine/view/document~ViewDocument#imageLoaded\n * @param data Event data.\n */\nexport type ImageLoadedEvent = {\n\tname: 'imageLoaded';\n\targs: [ Event ];\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/insertimagecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { logWarning, toArray, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * Insert image command.\n *\n * The command is registered by the {@link module:image/image/imageediting~ImageEditing} plugin as `insertImage`\n * and it is also available via aliased `imageInsert` name.\n *\n * In order to insert an image at the current selection position\n * (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n * execute the command and specify the image source:\n *\n * ```ts\n * editor.execute( 'insertImage', { source: 'http://url.to.the/image' } );\n * ```\n *\n * It is also possible to insert multiple images at once:\n *\n * ```ts\n * editor.execute( 'insertImage', {\n * \tsource: [\n * \t\t'path/to/image.jpg',\n * \t\t'path/to/other-image.jpg'\n * \t]\n * } );\n * ```\n *\n * If you want to take the full control over the process, you can specify individual model attributes:\n *\n * ```ts\n * editor.execute( 'insertImage', {\n * \tsource: [\n * \t\t{ src: 'path/to/image.jpg', alt: 'First alt text' },\n * \t\t{ src: 'path/to/other-image.jpg', alt: 'Second alt text', customAttribute: 'My attribute value' }\n * \t]\n * } );\n * ```\n */\nexport class InsertImageCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tconst configImageInsertType = editor.config.get( 'image.insert.type' );\n\n\t\tif ( !editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tif ( configImageInsertType === 'block' ) {\n\t\t\t\t/**\n\t\t\t\t * The {@link module:image/imageblock~ImageBlock} plugin must be enabled to allow inserting block images. See\n\t\t\t\t * {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t\t *\n\t\t\t\t * @error image-block-plugin-required\n\t\t\t\t */\n\t\t\t\tlogWarning( 'image-block-plugin-required' );\n\t\t\t}\n\t\t}\n\n\t\tif ( !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tif ( configImageInsertType === 'inline' ) {\n\t\t\t\t/**\n\t\t\t\t * The {@link module:image/imageinline~ImageInline} plugin must be enabled to allow inserting inline images. See\n\t\t\t\t * {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t\t *\n\t\t\t\t * @error image-inline-plugin-required\n\t\t\t\t */\n\t\t\t\tlogWarning( 'image-inline-plugin-required' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tthis.isEnabled = imageUtils.isImageAllowed();\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.imageType The type of the image to insert. If not specified, the type will be determined automatically.\n\t * @param options.source The image source or an array of image sources to insert.\n\t * @param options.breakBlock If set to `true`, the block at the selection start will be broken before inserting the image.\n\t * See the documentation of the command to learn more about accepted formats.\n\t */\n\tpublic override execute(\n\t\toptions: {\n\t\t\tsource: ArrayOrItem<string | Record<string, unknown>>;\n\t\t\timageType?: 'imageBlock' | 'imageInline' | null;\n\t\t\tbreakBlock?: boolean;\n\t\t}\n\t): void {\n\t\tconst sourceDefinitions = toArray<string | Record<string, unknown>>( options.source );\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// In case of multiple images, each image (starting from the 2nd) will be inserted at a position that\n\t\t// follows the previous one. That will move the selection and, to stay on the safe side and make sure\n\t\t// all images inherit the same selection attributes, they are collected beforehand.\n\t\t//\n\t\t// Applying these attributes ensures, for instance, that inserting an (inline) image into a link does\n\t\t// not split that link but preserves its continuity.\n\t\t//\n\t\t// Note: Selection attributes that do not make sense for images will be filtered out by insertImage() anyway.\n\t\tconst selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n\t\tsourceDefinitions.forEach( ( sourceDefinition, index ) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\tif ( typeof sourceDefinition === 'string' ) {\n\t\t\t\tsourceDefinition = { src: sourceDefinition };\n\t\t\t}\n\n\t\t\t// Inserting of an inline image replace the selected element and make a selection on the inserted image.\n\t\t\t// Therefore inserting multiple inline images requires creating position after each element.\n\t\t\tif ( index && selectedElement && imageUtils.isImage( selectedElement ) ) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter( selectedElement );\n\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes }, position, options.imageType );\n\t\t\t} else if ( options.breakBlock ) {\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes }, selection.getFirstPosition(), options.imageType );\n\t\t\t} else {\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes }, null, options.imageType );\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/replaceimagesourcecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\nimport type { ModelWriter, ModelElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Replace image source command.\n *\n * Changes image source to the one provided. Can be executed as follows:\n *\n * ```ts\n * editor.execute( 'replaceImageSource', { source: 'http://url.to.the/image' } );\n * ```\n */\nexport class ReplaceImageSourceCommand extends Command {\n\tdeclare public value: string | null;\n\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.decorate( 'cleanupImage' );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = this.editor.model.document.selection.getSelectedElement()!;\n\n\t\tthis.isEnabled = imageUtils.isImage( element );\n\t\tthis.value = this.isEnabled ? element.getAttribute( 'src' ) as string : null;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.source The image source to replace.\n\t */\n\tpublic override execute( options: { source: string } ): void {\n\t\tconst image = this.editor.model.document.selection.getSelectedElement()!;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setAttribute( 'src', options.source, image );\n\n\t\t\tthis.cleanupImage( writer, image );\n\n\t\t\timageUtils.setImageNaturalSizeAttributes( image );\n\t\t} );\n\t}\n\n\t/**\n\t * Cleanup image attributes that are not relevant to the new source.\n\t *\n\t * Removed attributes are: 'srcset', 'sizes', 'sources', 'width', 'height', 'alt'.\n\t *\n\t * This method is decorated, to allow custom cleanup logic.\n\t * For example, to remove 'myImageId' attribute after 'src' has changed:\n\t *\n\t * ```ts\n\t * replaceImageSourceCommand.on( 'cleanupImage', ( eventInfo, [ writer, image ] ) => {\n\t * \twriter.removeAttribute( 'myImageId', image );\n\t * } );\n\t * ```\n\t */\n\tpublic cleanupImage( writer: ModelWriter, image: ModelElement ): void {\n\t\twriter.removeAttribute( 'srcset', image );\n\t\twriter.removeAttribute( 'sizes', image );\n\n\t\t/**\n\t\t * In case responsive images some attributes should be cleaned up.\n\t\t * Check: https://github.com/ckeditor/ckeditor5/issues/15093\n\t\t */\n\t\twriter.removeAttribute( 'sources', image );\n\t\twriter.removeAttribute( 'width', image );\n\t\twriter.removeAttribute( 'height', image );\n\t\twriter.removeAttribute( 'alt', image );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageLoadObserver } from './imageloadobserver.js';\nimport { InsertImageCommand } from './insertimagecommand.js';\nimport { ReplaceImageSourceCommand } from './replaceimagesourcecommand.js';\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image engine plugin. This module loads common code shared between\n * {@link module:image/image/imageinlineediting~ImageInlineEditing} and\n * {@link module:image/image/imageblockediting~ImageBlockEditing} plugins.\n *\n * This plugin registers the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command.\n */\nexport class ImageEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\n\t\t// See https://github.com/ckeditor/ckeditor5-image/issues/142.\n\t\teditor.editing.view.addObserver( ImageLoadObserver );\n\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'alt'\n\t\t\t\t},\n\t\t\t\tmodel: 'alt'\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'srcset'\n\t\t\t\t},\n\t\t\t\tmodel: 'srcset'\n\t\t\t} );\n\n\t\tconst insertImageCommand = new InsertImageCommand( editor );\n\t\tconst replaceImageSourceCommand = new ReplaceImageSourceCommand( editor );\n\n\t\teditor.commands.add( 'insertImage', insertImageCommand );\n\t\teditor.commands.add( 'replaceImageSource', replaceImageSourceCommand );\n\n\t\t// `imageInsert` is an alias for backward compatibility.\n\t\teditor.commands.add( 'imageInsert', insertImageCommand );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagesizeattributes\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport type { DowncastDispatcher, DowncastAttributeEvent, ViewElement, ModelElement } from '@ckeditor/ckeditor5-engine';\nimport { ImageUtils } from './imageutils.js';\nimport { widthAndHeightStylesAreBothSet, getSizeValueIfInPx } from './image/utils.js';\n\n/**\n * This plugin enables `width` and `height` attributes in inline and block image elements.\n */\nexport class ImageSizeAttributes extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageSizeAttributes' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._registerSchema();\n\t\tthis._registerConverters( 'imageBlock' );\n\t\tthis._registerConverters( 'imageInline' );\n\t}\n\n\t/**\n\t * Registers the `width` and `height` attributes for inline and block images.\n\t */\n\tprivate _registerSchema(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: [ 'width', 'height' ] } );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tschema.extend( 'imageInline', { allowAttributes: [ 'width', 'height' ] } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers converters for `width` and `height` attributes.\n\t */\n\tprivate _registerConverters( imageType: 'imageBlock' | 'imageInline' ): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst viewElementName = imageType === 'imageBlock' ? 'figure' : 'img';\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\twidth: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'width',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn getSizeValueIfInPx( viewElement.getStyle( 'width' ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tkey: 'width'\n\t\t\t\t},\n\t\t\t\tmodel: 'width'\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\theight: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'height',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn getSizeValueIfInPx( viewElement.getStyle( 'height' ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: viewElementName,\n\t\t\t\t\tkey: 'height'\n\t\t\t\t},\n\t\t\t\tmodel: 'height'\n\t\t\t} );\n\n\t\t// Dedicated converters to propagate attributes to the <img> element.\n\t\teditor.conversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t\tattachDowncastConverter( dispatcher, 'width', 'width', true, true );\n\t\t\tattachDowncastConverter( dispatcher, 'height', 'height', true, true );\n\t\t} );\n\n\t\teditor.conversion.for( 'dataDowncast' ).add( dispatcher => {\n\t\t\tattachDowncastConverter( dispatcher, 'width', 'width', false );\n\t\t\tattachDowncastConverter( dispatcher, 'height', 'height', false );\n\t\t} );\n\n\t\t// Consume `aspect-ratio` style if `width` and `height` attributes are set on the image.\n\t\teditor.conversion.for( 'upcast' ).add( dispatcher => {\n\t\t\tdispatcher.on( 'element:img', ( evt, data, conversionApi ) => {\n\t\t\t\tconst width = data.viewItem.getAttribute( 'width' );\n\t\t\t\tconst height = data.viewItem.getAttribute( 'height' );\n\n\t\t\t\tif ( width && height ) {\n\t\t\t\t\tconversionApi.consumable.consume( data.viewItem, { styles: [ 'aspect-ratio' ] } );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\tfunction attachDowncastConverter(\n\t\t\tdispatcher: DowncastDispatcher,\n\t\t\tmodelAttributeName: string,\n\t\t\tviewAttributeName: string,\n\t\t\tsetRatioForInlineImage: boolean,\n\t\t\tisEditingDowncast: boolean = false\n\t\t) {\n\t\t\tdispatcher.on<DowncastAttributeEvent>( `attribute:${ modelAttributeName }:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item as ModelElement )!;\n\t\t\t\tconst img = imageUtils.findViewImgElement( viewElement )!;\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setAttribute( viewAttributeName, data.attributeNewValue, img );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeAttribute( viewAttributeName, img );\n\t\t\t\t}\n\n\t\t\t\tconst width = data.item.getAttribute( 'width' );\n\t\t\t\tconst height = data.item.getAttribute( 'height' );\n\t\t\t\tconst hasSizes = width && height;\n\n\t\t\t\tif ( hasSizes && isEditingDowncast ) {\n\t\t\t\t\tviewWriter.setAttribute( 'loading', 'lazy', img );\n\t\t\t\t}\n\n\t\t\t\t// Do not set aspect-ratio for pictures. See https://github.com/ckeditor/ckeditor5/issues/14579.\n\t\t\t\tif ( data.item.hasAttribute( 'sources' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isResized = data.item.hasAttribute( 'resizedWidth' );\n\n\t\t\t\t// Do not set aspect ratio for inline images which are not resized (data pipeline).\n\t\t\t\tif ( imageType === 'imageInline' && !isResized && !setRatioForInlineImage ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( hasSizes ) {\n\t\t\t\t\tviewWriter.setStyle( 'aspect-ratio', `${ width }/${ height }`, img );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imagetypecommand\n */\n\nimport { type ModelElement } from '@ckeditor/ckeditor5-engine';\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\nimport { isImageTypePlaceable } from './utils.js';\n\n/**\n * The image type command. It changes the type of a selected image, depending on the configuration.\n */\nexport class ImageTypeCommand extends Command {\n\t/**\n\t * Model element name the command converts to.\n\t */\n\tprivate readonly _modelElementName: 'imageBlock' | 'imageInline';\n\n\t/**\n\t * @inheritDoc\n\t *\n\t * @param modelElementName Model element name the command converts to.\n\t */\n\tconstructor( editor: Editor, modelElementName: 'imageBlock' | 'imageInline' ) {\n\t\tsuper( editor );\n\n\t\tthis._modelElementName = modelElementName;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\t// The command converts the opposite image type into `_modelElementName`, so a matching source image\n\t\t// must be selected.\n\t\tconst hasSourceImage = this._modelElementName === 'imageBlock' ?\n\t\t\timageUtils.isInlineImage( element ) :\n\t\t\timageUtils.isBlockImage( element );\n\n\t\tif ( !hasSourceImage ) {\n\t\t\tthis.isEnabled = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// The target type must also be placeable at the image's position. Otherwise the conversion would call\n\t\t// `model.insertContent` with no valid landing spot (e.g. switching to `imageBlock` inside an `$inlineRoot`,\n\t\t// or to `imageInline` inside a container that only accepts block images).\n\t\tconst position = model.createPositionBefore( element! );\n\n\t\tthis.isEnabled = isImageTypePlaceable( schema, position, this._modelElementName );\n\t}\n\n\t/**\n\t * Executes the command and changes the type of a selected image.\n\t *\n\t * @fires execute\n\t * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t * The default is `true`.\n\t * @returns An object containing references to old and new model image elements\n\t * (for before and after the change) so external integrations can hook into the decorated\n\t * `execute` event and handle this change. `null` if the type change failed.\n\t */\n\tpublic override execute( options: { setImageSizes?: boolean } = {} ): { oldElement: ModelElement; newElement: ModelElement } | null {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst oldElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\t\tconst attributes = Object.fromEntries( oldElement.getAttributes() );\n\n\t\t// Don't change image type if \"src\" is missing (a broken image), unless there's \"uploadId\" set.\n\t\t// This state may happen during image upload (before it finishes) and it should be possible to change type\n\t\t// of the image in the meantime.\n\t\tif ( !attributes.src && !attributes.uploadId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn model.change( writer => {\n\t\t\tconst { setImageSizes = true } = options;\n\n\t\t\t// Get all markers that contain the old image element.\n\t\t\tconst markers = Array.from( model.markers )\n\t\t\t\t.filter( marker => marker.getRange().containsItem( oldElement ) );\n\n\t\t\tconst newElement = imageUtils.insertImage(\n\t\t\t\tattributes,\n\t\t\t\tmodel.createSelection( oldElement, 'on' ),\n\t\t\t\tthis._modelElementName,\n\t\t\t\t{ setImageSizes }\n\t\t\t);\n\n\t\t\tif ( !newElement ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst newElementRange = writer.createRangeOn( newElement );\n\n\t\t\t// Expand the previously intersecting markers' ranges to include the new image element.\n\t\t\tfor ( const marker of markers ) {\n\t\t\t\tconst markerRange = marker.getRange();\n\n\t\t\t\t// Join the survived part of the old marker range with the new element range\n\t\t\t\t// (loosely because there could be some new paragraph or the existing one might got split).\n\t\t\t\tconst range = markerRange.root.rootName != '$graveyard' ?\n\t\t\t\t\tmarkerRange.getJoined( newElementRange, true )! : newElementRange;\n\n\t\t\t\twriter.updateMarker( marker, { range } );\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\toldElement,\n\t\t\t\tnewElement\n\t\t\t};\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageplaceholder\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport type {\n\tDowncastAttributeEvent,\n\tModelElement,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\n\nimport { ImageUtils } from '../imageutils.js';\nimport { ImageLoadObserver, type ImageLoadedEvent } from './imageloadobserver.js';\n\n/**\n * Adds support for image placeholder that is automatically removed when the image is loaded.\n */\nexport class ImagePlaceholder extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImagePlaceholder' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._setupSchema();\n\t\tthis._setupConversion();\n\t\tthis._setupLoadListener();\n\t}\n\n\t/**\n\t * Extends model schema.\n\t */\n\tprivate _setupSchema(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\t// Wait for ImageBlockEditing or ImageInlineEditing to register their elements first,\n\t\t// that's why doing this in afterInit() instead of init().\n\t\tif ( schema.isRegistered( 'imageBlock' ) ) {\n\t\t\tschema.extend( 'imageBlock', {\n\t\t\t\tallowAttributes: [ 'placeholder' ]\n\t\t\t} );\n\t\t}\n\n\t\tif ( schema.isRegistered( 'imageInline' ) ) {\n\t\t\tschema.extend( 'imageInline', {\n\t\t\t\tallowAttributes: [ 'placeholder' ]\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Registers converters.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>( 'attribute:placeholder', ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( !data.item.is( 'element', 'imageBlock' ) && !data.item.is( 'element', 'imageInline' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconversionApi.consumable.consume( data.item, evt.name );\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\t\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\t\t\tif ( data.attributeNewValue ) {\n\t\t\t\t\tviewWriter.addClass( 'image_placeholder', img );\n\t\t\t\t\tviewWriter.setStyle( 'background-image', `url(${ data.attributeNewValue })`, img );\n\t\t\t\t\tviewWriter.setCustomProperty( 'editingPipeline:doNotReuseOnce', true, img );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeClass( 'image_placeholder', img );\n\t\t\t\t\tviewWriter.removeStyle( 'background-image', img );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * Prepares listener for image load.\n\t */\n\tprivate _setupLoadListener(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editing = editor.editing;\n\t\tconst editingView = editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\teditingView.addObserver( ImageLoadObserver );\n\n\t\tthis.listenTo<ImageLoadedEvent>( editingView.document, 'imageLoaded', ( evt, domEvent ) => {\n\t\t\tconst imgViewElement = editingView.domConverter.mapDomToView( domEvent.target as HTMLElement );\n\n\t\t\tif ( !imgViewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst viewElement = imageUtils.getImageWidgetFromImageView( imgViewElement as ViewElement );\n\n\t\t\tif ( !viewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst modelElement = editing.mapper.toModelElement( viewElement );\n\n\t\t\tif ( !modelElement || !modelElement.hasAttribute( 'placeholder' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\twriter.removeAttribute( 'placeholder', modelElement );\n\t\t\t} );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageblockediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tClipboardPipeline,\n\ttype ClipboardInputTransformationEvent,\n\ttype ClipboardContentInsertionEvent\n} from '@ckeditor/ckeditor5-clipboard';\nimport {\n\tViewUpcastWriter,\n\ttype ViewElement\n} from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tdowncastImageAttribute,\n\tdowncastSrcsetAttribute,\n\tupcastImg,\n\tupcastImageFigure\n} from './converters.js';\n\nimport { ImageEditing } from './imageediting.js';\nimport { ImageSizeAttributes } from '../imagesizeattributes.js';\nimport { ImageTypeCommand } from './imagetypecommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport {\n\tcreateBlockImageViewElement,\n\tdetermineImageTypeForInsertionAtSelection,\n\tisImageTypePlaceable\n} from './utils.js';\nimport { ImagePlaceholder } from './imageplaceholder.js';\n\n/**\n * The image block plugin.\n *\n * It registers:\n *\n * * `<imageBlock>` as a block element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n * * converters for editing and data pipelines.,\n * * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeBlock'`} command that converts inline images into\n * block images.\n */\nexport class ImageBlockEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[\n\t\tImageEditing,\n\t\tImageSizeAttributes,\n\t\tImageUtils,\n\t\tImagePlaceholder,\n\t\tClipboardPipeline\n\t]> {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageBlockEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Converters 'alt' and 'srcset' are added in 'ImageEditing' plugin.\n\t\tschema.register( 'imageBlock', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'alt', 'src', 'srcset' ]\n\t\t} );\n\n\t\tthis._setupConversion();\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.commands.add( 'imageTypeBlock', new ImageTypeCommand( this.editor, 'imageBlock' ) );\n\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * block images (block image widgets) and their attributes.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'dataDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageBlock',\n\t\t\t\tview: ( modelElement, { writer } ) => createBlockImageViewElement( writer )\n\t\t\t} );\n\n\t\tconversion.for( 'editingDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageBlock',\n\t\t\t\tview: ( modelElement, { writer } ) => imageUtils.toImageWidget(\n\t\t\t\t\tcreateBlockImageViewElement( writer ), writer, t( 'image widget' )\n\t\t\t\t)\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageBlock', 'src' ) )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageBlock', 'alt' ) )\n\t\t\t.add( downcastSrcsetAttribute( imageUtils, 'imageBlock' ) );\n\n\t\t// More image related upcasts are in 'ImageEditing' plugin.\n\t\tconversion.for( 'upcast' )\n\t\t\t.add( upcastImg( 'imageBlock', imageUtils ) )\n\t\t\t.add( upcastImageFigure( imageUtils ) );\n\t}\n\n\t/**\n\t * Integrates the plugin with the clipboard pipeline.\n\t *\n\t * Idea is that the feature should recognize the user's intent when an **inline** image is\n\t * pasted or dropped. If such an image is pasted/dropped:\n\t *\n\t * * into an empty block (e.g. an empty paragraph),\n\t * * on another object (e.g. some block widget).\n\t *\n\t * it gets converted into a block image on the fly. We assume this is the user's intent\n\t * if they decided to put their image there.\n\t *\n\t * See the `ImageInlineEditing` for the similar integration that works in the opposite direction.\n\t *\n\t * The feature also sets image `width` and `height` attributes on paste.\n\t */\n\tprivate _setupClipboardIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'inputTransformation',\n\t\t\t( evt, data ) => {\n\t\t\t\tconst docFragmentChildren = Array.from( data.content.getChildren() as IterableIterator<ViewElement> );\n\t\t\t\tlet modelRange;\n\n\t\t\t\t// Make sure only <img> elements are dropped or pasted. Otherwise, if there some other HTML\n\t\t\t\t// mixed up, this should be handled as a regular paste.\n\t\t\t\tif ( !docFragmentChildren.every( imageUtils.isInlineImageView ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// When drag and dropping, data.targetRanges specifies where to drop because\n\t\t\t\t// this is usually a different place than the current model selection (the user\n\t\t\t\t// uses a drop marker to specify the drop location).\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\tmodelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// Pasting, however, always occurs at the current model selection.\n\t\t\t\telse {\n\t\t\t\t\tmodelRange = model.document.selection.getFirstRange();\n\t\t\t\t}\n\n\t\t\t\tconst selection = model.createSelection( modelRange );\n\n\t\t\t\t// Convert inline images into block images only when the currently selected block is empty\n\t\t\t\t// (e.g. an empty paragraph) or some object is selected (to replace it). Additionally verify\n\t\t\t\t// that `imageBlock` can actually land somewhere reachable from the drop target - inside\n\t\t\t\t// `$inlineRoot` or another limit container that disallows block content the heuristic\n\t\t\t\t// returns `'imageBlock'` for a blockless selection, but wrapping the pasted `<img>` would\n\t\t\t\t// just be upcast-stripped.\n\t\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\t\tconst canPlaceBlock = !!selectionPosition && isImageTypePlaceable( model.schema, selectionPosition, 'imageBlock' );\n\n\t\t\t\tif (\n\t\t\t\t\tcanPlaceBlock &&\n\t\t\t\t\tdetermineImageTypeForInsertionAtSelection( model.schema, selection ) === 'imageBlock'\n\t\t\t\t) {\n\t\t\t\t\tconst writer = new ViewUpcastWriter( editingView.document );\n\n\t\t\t\t\t// Wrap <img ... /> -> <figure class=\"image\"><img .../></figure>\n\t\t\t\t\tconst blockViewImages = docFragmentChildren.map(\n\t\t\t\t\t\tinlineViewImage => writer.createElement( 'figure', { class: 'image' }, inlineViewImage )\n\t\t\t\t\t);\n\n\t\t\t\t\tdata.content = writer.createDocumentFragment( blockViewImages );\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.listenTo<ClipboardContentInsertionEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'contentInsertion',\n\t\t\t( evt, data ) => {\n\t\t\t\tif ( data.method !== 'paste' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tconst range = writer.createRangeIn( data.content );\n\n\t\t\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\t\t\tif ( item.is( 'element', 'imageBlock' ) ) {\n\t\t\t\t\t\t\timageUtils.setImageNaturalSizeAttributes( item );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/ui/imageinsertformview\n */\n\nimport {\n\tView,\n\tViewCollection,\n\tsubmitHandler,\n\tFocusCycler,\n\tCollapsibleView,\n\ttype FocusableView\n} from '@ckeditor/ckeditor5-ui';\nimport { FocusTracker, KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The view displayed in the insert image dropdown.\n *\n * See {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n *\n * @internal\n */\nexport class ImageInsertFormView extends View {\n\t/**\n\t * Tracks information about DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * A collection of the defined integrations for inserting the images.\n\t */\n\tprivate readonly children: ViewCollection<FocusableView>;\n\n\t/**\n\t * Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t *\n\t * @param locale The localization services instance.\n\t * @param integrations An integrations object that contains components (or tokens for components) to be shown in the panel view.\n\t */\n\tconstructor( locale: Locale, integrations: Array<FocusableView> = [] ) {\n\t\tsuper( locale );\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis._focusables = new ViewCollection();\n\t\tthis.children = this.createCollection();\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tfor ( const view of integrations ) {\n\t\t\tthis.children.add( view );\n\t\t\tthis._focusables.add( view );\n\n\t\t\tif ( view instanceof CollapsibleView ) {\n\t\t\t\tthis._focusables.addMany( view.children );\n\t\t\t}\n\t\t}\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-image-insert-form'\n\t\t\t\t],\n\t\t\t\ttabindex: -1\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tfor ( const view of this._focusables ) {\n\t\t\tthis.focusTracker.add( view.element! );\n\t\t}\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\tconst stopPropagation = ( data: KeyboardEvent ) => data.stopPropagation();\n\n\t\t// Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n\t\t// keystroke handler would take over the key management in the URL input. We need to prevent\n\t\t// this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n\t\tthis.keystrokes.set( 'arrowright', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowleft', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowup', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowdown', stopPropagation );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the first {@link #_focusables focusable} in the form.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/imageinsertui\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tlogWarning,\n\ttype Locale,\n\ttype Observable\n} from '@ckeditor/ckeditor5-utils';\nimport {\n\tcreateDropdown,\n\ttype ButtonView,\n\ttype DropdownButtonView,\n\ttype DropdownView,\n\ttype FocusableView,\n\ttype MenuBarMenuListItemButtonView,\n\tMenuBarMenuListItemView,\n\tMenuBarMenuListView,\n\tMenuBarMenuView,\n\tSplitButtonView,\n\ttype View\n} from '@ckeditor/ckeditor5-ui';\nimport { IconImage } from '@ckeditor/ckeditor5-icons';\n\nimport { ImageInsertFormView } from './ui/imageinsertformview.js';\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image insert dropdown plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n * and {@glink features/images/images-inserting Insert images via source URL} documentation.\n *\n * Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n * and also the `imageInsert` dropdown as an alias for backward compatibility.\n *\n * Adds the `'menuBar:insertImage'` sub-menu to the {@link module:ui/componentfactory~ComponentFactory UI component factory}, which is\n * by default added to the `'Insert'` menu.\n */\nexport class ImageInsertUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsertUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * The dropdown view responsible for displaying the image insert UI.\n\t */\n\tpublic dropdownView?: DropdownView;\n\n\t/**\n\t * Observable property used to alter labels while some image is selected and when it is not.\n\t *\n\t * @observable\n\t */\n\tdeclare public isImageSelected: boolean;\n\n\t/**\n\t * Registered integrations map.\n\t */\n\tprivate _integrations = new Map<string, IntegrationData>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image.insert.integrations', [\n\t\t\t'upload',\n\t\t\t'assetManager',\n\t\t\t'url'\n\t\t] );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tthis.set( 'isImageSelected', false );\n\n\t\tthis.listenTo( editor.model.document, 'change', () => {\n\t\t\tthis.isImageSelected = imageUtils.isImage( selection.getSelectedElement() );\n\t\t} );\n\n\t\tconst componentCreator = ( locale: Locale ) => this._createToolbarComponent( locale );\n\t\tconst menuBarComponentCreator = ( locale: Locale ) => this._createMenuBarComponent( locale );\n\n\t\t// Register `insertImage` dropdown and add `imageInsert` dropdown as an alias for backward compatibility.\n\t\teditor.ui.componentFactory.add( 'insertImage', componentCreator );\n\t\teditor.ui.componentFactory.add( 'imageInsert', componentCreator );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:insertImage', menuBarComponentCreator );\n\t}\n\n\t/**\n\t * Registers the insert image dropdown integration.\n\t */\n\tpublic registerIntegration( {\n\t\tname,\n\t\tobservable,\n\t\tbuttonViewCreator,\n\t\tformViewCreator,\n\t\tmenuBarButtonViewCreator,\n\t\trequiresForm = false,\n\t\toverride = false\n\t}: {\n\t\tname: string;\n\t\tobservable: Observable & { isEnabled: boolean } | ( () => Observable & { isEnabled: boolean } );\n\t\tbuttonViewCreator: ( isOnlyOne: boolean ) => ButtonView;\n\t\tformViewCreator: ( isOnlyOne: boolean ) => FocusableView | Array<FocusableView>;\n\t\tmenuBarButtonViewCreator: ( isOnlyOne: boolean ) => MenuBarMenuListItemButtonView | Array<MenuBarMenuListItemButtonView>;\n\t\trequiresForm?: boolean;\n\t\toverride?: boolean;\n\t} ): void {\n\t\tif ( this._integrations.has( name ) && !override ) {\n\t\t\t/**\n\t\t\t * There are two insert-image integrations registered with the same name.\n\t\t\t *\n\t\t\t * Make sure that you do not load multiple asset manager plugins.\n\t\t\t *\n\t\t\t * @error image-insert-integration-exists\n\t\t\t */\n\t\t\tlogWarning( 'image-insert-integration-exists', { name } );\n\t\t}\n\n\t\tthis._integrations.set( name, {\n\t\t\tobservable,\n\t\t\tbuttonViewCreator,\n\t\t\tmenuBarButtonViewCreator,\n\t\t\tformViewCreator,\n\t\t\trequiresForm\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the toolbar component.\n\t */\n\tprivate _createToolbarComponent( locale: Locale ): DropdownView | FocusableView {\n\t\tconst editor = this.editor;\n\t\tconst t = locale.t;\n\n\t\tconst integrations = this._prepareIntegrations();\n\n\t\tif ( !integrations.length ) {\n\t\t\treturn null as any;\n\t\t}\n\n\t\tlet dropdownButton: SplitButtonView | DropdownButtonView | undefined;\n\t\tconst firstIntegration = integrations[ 0 ];\n\n\t\tif ( integrations.length == 1 ) {\n\t\t\t// Do not use dropdown for a single integration button (integration that does not require form view).\n\t\t\tif ( !firstIntegration.requiresForm ) {\n\t\t\t\treturn firstIntegration.buttonViewCreator( true );\n\t\t\t}\n\n\t\t\tdropdownButton = firstIntegration.buttonViewCreator( true ) as DropdownButtonView;\n\t\t} else {\n\t\t\tconst actionButton = firstIntegration.buttonViewCreator( false ) as ButtonView & FocusableView;\n\n\t\t\tdropdownButton = new SplitButtonView( locale, actionButton );\n\t\t\tdropdownButton.tooltip = true;\n\n\t\t\tdropdownButton.bind( 'label' ).to( this, 'isImageSelected', isImageSelected => isImageSelected ?\n\t\t\t\tt( 'Replace image' ) :\n\t\t\t\tt( 'Insert image' )\n\t\t\t);\n\t\t}\n\n\t\tconst dropdownView = this.dropdownView = createDropdown( locale, dropdownButton );\n\t\tconst observables = integrations.map( ( { observable } ) => typeof observable == 'function' ? observable() : observable );\n\n\t\tdropdownView.bind( 'isEnabled' ).toMany( observables, 'isEnabled', ( ...isEnabled ) => (\n\t\t\tisEnabled.some( isEnabled => isEnabled )\n\t\t) );\n\n\t\tdropdownView.once( 'change:isOpen', () => {\n\t\t\tconst integrationViews = integrations.flatMap( ( { formViewCreator } ) => formViewCreator( integrations.length == 1 ) );\n\t\t\tconst imageInsertFormView = new ImageInsertFormView( editor.locale, integrationViews );\n\n\t\t\tdropdownView.panelView.children.add( imageInsertFormView );\n\t\t} );\n\n\t\treturn dropdownView;\n\t}\n\n\t/**\n\t * Creates the menu bar component.\n\t */\n\tprivate _createMenuBarComponent( locale: Locale ): View {\n\t\tconst t = locale.t;\n\n\t\tconst integrations = this._prepareIntegrations();\n\n\t\tif ( !integrations.length ) {\n\t\t\treturn null as any;\n\t\t}\n\n\t\tconst integrationViews = integrations.flatMap( ( {\n\t\t\tmenuBarButtonViewCreator\n\t\t} ) => menuBarButtonViewCreator( integrations.length == 1 ) );\n\n\t\tconst resultView = new MenuBarMenuView( locale );\n\t\tconst listView = new MenuBarMenuListView( locale );\n\t\tresultView.panelView.children.add( listView );\n\n\t\tresultView.buttonView.set( {\n\t\t\ticon: IconImage,\n\t\t\tlabel: t( 'Image' )\n\t\t} );\n\n\t\tfor ( const integrationView of integrationViews ) {\n\t\t\tconst listItemView = new MenuBarMenuListItemView( locale, resultView );\n\n\t\t\tlistItemView.children.add( integrationView );\n\t\t\tlistView.items.add( listItemView );\n\n\t\t\tintegrationView.delegate( 'execute' ).to( resultView );\n\t\t}\n\n\t\treturn resultView;\n\t}\n\n\t/**\n\t * Validates the integrations list.\n\t */\n\tprivate _prepareIntegrations(): Array<IntegrationData> {\n\t\tconst editor = this.editor;\n\t\tconst items = editor.config.get( 'image.insert.integrations' )!;\n\t\tconst result: Array<IntegrationData> = [];\n\n\t\tif ( !items.length ) {\n\t\t\t/**\n\t\t\t * The insert image feature requires a list of integrations to be provided in the editor configuration.\n\t\t\t *\n\t\t\t * The default list of integrations is `upload`, `assetManager`, `url`. Those integrations are included\n\t\t\t * in the insert image dropdown if the given feature plugin is loaded. You should omit the `integrations`\n\t\t\t * configuration key to use the default set or provide a selected list of integrations that should be used.\n\t\t\t *\n\t\t\t * @error image-insert-integrations-not-specified\n\t\t\t */\n\t\t\tlogWarning( 'image-insert-integrations-not-specified' );\n\n\t\t\treturn result;\n\t\t}\n\n\t\tfor ( const item of items ) {\n\t\t\tif ( !this._integrations.has( item ) ) {\n\t\t\t\tif ( ![ 'upload', 'assetManager', 'url' ].includes( item ) ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The specified insert image integration name is unknown or the providing plugin is not loaded in the editor.\n\t\t\t\t\t *\n\t\t\t\t\t * @error image-insert-unknown-integration\n\t\t\t\t\t */\n\t\t\t\t\tlogWarning( 'image-insert-unknown-integration', { item } );\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult.push( this._integrations.get( item )! );\n\t\t}\n\n\t\tif ( !result.length ) {\n\t\t\t/**\n\t\t\t * The image insert feature requires integrations to be registered by separate features.\n\t\t\t *\n\t\t\t * The `insertImage` toolbar button requires integrations to be registered by other features.\n\t\t\t * For example {@link module:image/imageupload~ImageUpload ImageUpload},\n\t\t\t * {@link module:image/imageinsert~ImageInsert ImageInsert},\n\t\t\t * {@link module:image/imageinsertviaurl~ImageInsertViaUrl ImageInsertViaUrl},\n\t\t\t * {@link module:ckbox/ckbox~CKBox CKBox}\n\t\t\t *\n\t\t\t * @error image-insert-integrations-not-registered\n\t\t\t */\n\t\t\tlogWarning( 'image-insert-integrations-not-registered' );\n\t\t}\n\n\t\treturn result;\n\t}\n}\n\ntype IntegrationData = {\n\tobservable: Observable & { isEnabled: boolean } | ( () => Observable & { isEnabled: boolean } );\n\tbuttonViewCreator: ( isOnlyOne: boolean ) => ButtonView;\n\tmenuBarButtonViewCreator: ( isOnlyOne: boolean ) => MenuBarMenuListItemButtonView | Array<MenuBarMenuListItemButtonView>;\n\tformViewCreator: ( isOnlyOne: boolean ) => FocusableView | Array<FocusableView>;\n\trequiresForm: boolean;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageblock\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { Widget } from '@ckeditor/ckeditor5-widget';\n\nimport { ImageTextAlternative } from './imagetextalternative.js';\nimport { ImageBlockEditing } from './image/imageblockediting.js';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\n\n/**\n * The image block plugin.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/image/imageblockediting~ImageBlockEditing},\n * * {@link module:image/imagetextalternative~ImageTextAlternative}.\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport class ImageBlock extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageBlockEditing, Widget, ImageTextAlternative, ImageInsertUI ]> {\n\t\treturn [ ImageBlockEditing, Widget, ImageTextAlternative, ImageInsertUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageBlock' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image/imageinlineediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tClipboardPipeline,\n\ttype ClipboardInputTransformationEvent,\n\ttype ClipboardContentInsertionEvent\n} from '@ckeditor/ckeditor5-clipboard';\nimport { ViewUpcastWriter, type ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tdowncastImageAttribute,\n\tdowncastSrcsetAttribute,\n\tupcastImg\n} from './converters.js';\n\nimport { ImageEditing } from './imageediting.js';\nimport { ImageSizeAttributes } from '../imagesizeattributes.js';\nimport { ImageTypeCommand } from './imagetypecommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport {\n\tcreateInlineImageViewElement,\n\tdetermineImageTypeForInsertionAtSelection,\n\tisImageTypePlaceable\n} from './utils.js';\nimport { ImagePlaceholder } from './imageplaceholder.js';\n\n/**\n * The image inline plugin.\n *\n * It registers:\n *\n * * `<imageInline>` as an inline element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n * * converters for editing and data pipelines.\n * * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeInline'`} command that converts block images into\n * inline images.\n */\nexport class ImageInlineEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[\n\t\tImageEditing,\n\t\tImageSizeAttributes,\n\t\tImageUtils,\n\t\tImagePlaceholder,\n\t\tClipboardPipeline\n\t]> {\n\t\treturn [\n\t\t\tImageEditing,\n\t\t\tImageSizeAttributes,\n\t\t\tImageUtils,\n\t\t\tImagePlaceholder,\n\t\t\tClipboardPipeline\n\t\t];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInlineEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Converters 'alt' and 'srcset' are added in 'ImageEditing' plugin.\n\t\tschema.register( 'imageInline', {\n\t\t\tinheritAllFrom: '$inlineObject',\n\t\t\tallowAttributes: [ 'alt', 'src', 'srcset' ],\n\t\t\t// Disallow inline images in captions (at least for now).\n\t\t\t// This is the best spot to do that because independent packages can introduce captions (ImageCaption, TableCaption, etc.).\n\t\t\tdisallowIn: [ 'caption' ]\n\t\t} );\n\n\t\tthis._setupConversion();\n\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.commands.add( 'imageTypeInline', new ImageTypeCommand( this.editor, 'imageInline' ) );\n\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * inline images (inline image widgets) and their attributes.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'dataDowncast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'imageInline',\n\t\t\t\tview: ( modelElement, { writer } ) => writer.createEmptyElement( 'img' )\n\t\t\t} );\n\n\t\tconversion.for( 'editingDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageInline',\n\t\t\t\tview: ( modelElement, { writer } ) => imageUtils.toImageWidget(\n\t\t\t\t\tcreateInlineImageViewElement( writer ), writer, t( 'image widget' )\n\t\t\t\t)\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageInline', 'src' ) )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageInline', 'alt' ) )\n\t\t\t.add( downcastSrcsetAttribute( imageUtils, 'imageInline' ) );\n\n\t\t// More image related upcasts are in 'ImageEditing' plugin.\n\t\tconversion.for( 'upcast' )\n\t\t\t.add( upcastImg( 'imageInline', imageUtils ) );\n\t}\n\n\t/**\n\t * Integrates the plugin with the clipboard pipeline.\n\t *\n\t * Idea is that the feature should recognize the user's intent when an **block** image is\n\t * pasted or dropped. If such an image is pasted/dropped into a non-empty block\n\t * (e.g. a paragraph with some text) it gets converted into an inline image on the fly.\n\t *\n\t * We assume this is the user's intent if they decided to put their image there.\n\t *\n\t * **Note**: If a block image has a caption, it will not be converted to an inline image\n\t * to avoid the confusion. Captions are added on purpose and they should never be lost\n\t * in the clipboard pipeline.\n\t *\n\t * See the `ImageBlockEditing` for the similar integration that works in the opposite direction.\n\t *\n\t * The feature also sets image `width` and `height` attributes when pasting.\n\t */\n\tprivate _setupClipboardIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'inputTransformation',\n\t\t\t( evt, data ) => {\n\t\t\t\tconst docFragmentChildren = Array.from( data.content.getChildren() as IterableIterator<ViewElement> );\n\t\t\t\tlet modelRange;\n\n\t\t\t\t// Make sure only <figure class=\"image\"></figure> elements are dropped or pasted. Otherwise, if there some other HTML\n\t\t\t\t// mixed up, this should be handled as a regular paste.\n\t\t\t\tif ( !docFragmentChildren.every( imageUtils.isBlockImageView ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// When drag and dropping, data.targetRanges specifies where to drop because\n\t\t\t\t// this is usually a different place than the current model selection (the user\n\t\t\t\t// uses a drop marker to specify the drop location).\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\tmodelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// Pasting, however, always occurs at the current model selection.\n\t\t\t\telse {\n\t\t\t\t\tmodelRange = model.document.selection.getFirstRange();\n\t\t\t\t}\n\n\t\t\t\tconst selection = model.createSelection( modelRange );\n\n\t\t\t\t// Convert block images into inline images only when pasting or dropping into non-empty blocks\n\t\t\t\t// and when the block is not an object (e.g. pasting to replace another widget). Also force\n\t\t\t\t// the unwrap when `imageBlock` cannot land at the target (e.g. inside `$inlineRoot`) - in\n\t\t\t\t// that case the heuristic still returns `'imageBlock'` for a blockless selection, but the\n\t\t\t\t// resulting `<figure>` would be upcast-stripped.\n\t\t\t\tconst selectionPosition = selection.getFirstPosition();\n\t\t\t\tconst canPlaceBlock = !!selectionPosition && isImageTypePlaceable( model.schema, selectionPosition, 'imageBlock' );\n\n\t\t\t\tif (\n\t\t\t\t\t!canPlaceBlock ||\n\t\t\t\t\tdetermineImageTypeForInsertionAtSelection( model.schema, selection ) === 'imageInline'\n\t\t\t\t) {\n\t\t\t\t\tconst writer = new ViewUpcastWriter( editingView.document );\n\n\t\t\t\t\t// Unwrap <figure class=\"image\"><img .../></figure> -> <img ... />\n\t\t\t\t\t// but <figure class=\"image\"><img .../><figcaption>...</figcaption></figure> -> stays the same\n\t\t\t\t\tconst inlineViewImages = docFragmentChildren.map( blockViewImage => {\n\t\t\t\t\t// If there's just one child, it can be either <img /> or <a><img></a>.\n\t\t\t\t\t// If there are other children than <img>, this means that the block image\n\t\t\t\t\t// has a caption or some other features and this kind of image should be\n\t\t\t\t\t// pasted/dropped without modifications.\n\t\t\t\t\t\tif ( blockViewImage.childCount === 1 ) {\n\t\t\t\t\t\t// Pass the attributes which are present only in the <figure> to the <img>\n\t\t\t\t\t\t// (e.g. the style=\"width:10%\" attribute applied by the ImageResize plugin).\n\t\t\t\t\t\t\tArray.from( blockViewImage.getAttributes() )\n\t\t\t\t\t\t\t\t.forEach( attribute => writer.setAttribute(\n\t\t\t\t\t\t\t\t\t...attribute,\n\t\t\t\t\t\t\t\t\timageUtils.findViewImgElement( blockViewImage )!\n\t\t\t\t\t\t\t\t) );\n\n\t\t\t\t\t\t\treturn blockViewImage.getChild( 0 )!;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn blockViewImage;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\tdata.content = writer.createDocumentFragment( inlineViewImages );\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.listenTo<ClipboardContentInsertionEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'contentInsertion',\n\t\t\t( evt, data ) => {\n\t\t\t\tif ( data.method !== 'paste' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tconst range = writer.createRangeIn( data.content );\n\n\t\t\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\t\t\tif ( item.is( 'element', 'imageInline' ) ) {\n\t\t\t\t\t\t\timageUtils.setImageNaturalSizeAttributes( item );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinline\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { Widget } from '@ckeditor/ckeditor5-widget';\n\nimport { ImageTextAlternative } from './imagetextalternative.js';\nimport { ImageInlineEditing } from './image/imageinlineediting.js';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\n\n/**\n * The image inline plugin.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/image/imageinlineediting~ImageInlineEditing},\n * * {@link module:image/imagetextalternative~ImageTextAlternative}.\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport class ImageInline extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageInlineEditing, Widget, ImageTextAlternative, ImageInsertUI ]> {\n\t\treturn [ ImageInlineEditing, Widget, ImageTextAlternative, ImageInsertUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInline' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/image\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageBlock } from './imageblock.js';\nimport { ImageInline } from './imageinline.js';\n\n/**\n * The image plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-overview image feature} documentation.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/imageblock~ImageBlock},\n * * {@link module:image/imageinline~ImageInline},\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport class Image extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageBlock, ImageInline ]> {\n\t\treturn [ ImageBlock, ImageInline ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Image' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/imagecaptionutils\n */\n\nimport type { ModelDocumentSelection, ModelElement, ModelSelection, ViewElement, Match } from '@ckeditor/ckeditor5-engine';\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport { ImageUtils } from '../imageutils.js';\n\n/**\n * The image caption utilities plugin.\n */\nexport class ImageCaptionUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionUtils' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * Returns the caption model element from a given image element. Returns `null` if no caption is found.\n\t */\n\tpublic getCaptionFromImageModelElement( imageModelElement: ModelElement ): ModelElement | null {\n\t\tfor ( const node of imageModelElement.getChildren() ) {\n\t\t\tif ( !!node && node.is( 'element', 'caption' ) ) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.\n\t */\n\tpublic getCaptionFromModelSelection( selection: ModelSelection | ModelDocumentSelection ): ModelElement | null {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\t\tconst captionElement = selection.getFirstPosition()!.findAncestor( 'caption' );\n\n\t\tif ( !captionElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( imageUtils.isBlockImage( captionElement.parent as ModelElement ) ) {\n\t\t\treturn captionElement;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a `<figcaption>` element that is placed\n\t * inside the image `<figure>` element.\n\t * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element\n\t * cannot be matched.\n\t */\n\tpublic matchImageCaptionViewElement( element: ViewElement ): Match | null {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// Convert only captions for images.\n\t\tif ( element.name == 'figcaption' && imageUtils.isBlockImageView( element.parent as ViewElement ) ) {\n\t\t\treturn { name: true };\n\t\t}\n\n\t\treturn null;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/toggleimagecaptioncommand\n */\n\nimport type { ModelElement, ModelWriter } from '@ckeditor/ckeditor5-engine';\nimport { Command } from '@ckeditor/ckeditor5-core';\n\nimport { ImageBlockEditing } from '../image/imageblockediting.js';\nimport { isImageTypePlaceable } from '../image/utils.js';\nimport { type ImageCaptionUtils } from './imagecaptionutils.js';\nimport { type ImageUtils } from '../imageutils.js';\nimport { type ImageCaptionEditing } from './imagecaptionediting.js';\n\n/**\n * The toggle image caption command.\n *\n * This command is registered by {@link module:image/imagecaption/imagecaptionediting~ImageCaptionEditing} as the\n * `'toggleImageCaption'` editor command.\n *\n * Executing this command:\n *\n * * either adds or removes the image caption of a selected image (depending on whether the caption is present or not),\n * * removes the image caption if the selection is anchored in one.\n *\n * ```ts\n * // Toggle the presence of the caption.\n * editor.execute( 'toggleImageCaption' );\n * ```\n *\n * **Note**: Upon executing this command, the selection will be set on the image if previously anchored in the caption element.\n *\n * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using\n * the `focusCaptionOnShow` option:\n *\n * ```ts\n * editor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n * ```\n */\nexport class ToggleImageCaptionCommand extends Command {\n\tdeclare public value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Only block images can get captions.\n\t\tif ( !editor.plugins.has( ImageBlockEditing ) ) {\n\t\t\tthis.isEnabled = false;\n\t\t\tthis.value = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst selection = editor.model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\tif ( !selectedElement ) {\n\t\t\tconst ancestorCaptionElement = imageCaptionUtils.getCaptionFromModelSelection( selection );\n\n\t\t\tthis.isEnabled = !!ancestorCaptionElement;\n\t\t\tthis.value = !!ancestorCaptionElement;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Block images support captions by default but the command should also be enabled for inline\n\t\t// images because toggling the caption when one is selected should convert it into a block image.\n\t\tthis.isEnabled = imageUtils.isImage( selectedElement );\n\n\t\t// For an inline image the toggle requires an inline → block conversion. Make sure that\n\t\t// `imageBlock` can actually land somewhere reachable from the current position (e.g. inside\n\t\t// `$inlineRoot` or another limit ancestor that disallows `imageBlock`, the conversion would\n\t\t// otherwise be a no-op and the writer would still try to append the caption to the inline\n\t\t// image - which the schema rejects).\n\t\tif ( this.isEnabled && imageUtils.isInlineImage( selectedElement ) ) {\n\t\t\tconst position = editor.model.createPositionBefore( selectedElement );\n\n\t\t\tthis.isEnabled = isImageTypePlaceable( editor.model.schema, position, 'imageBlock' );\n\t\t}\n\n\t\tif ( !this.isEnabled ) {\n\t\t\tthis.value = false;\n\t\t} else {\n\t\t\tthis.value = !!imageCaptionUtils.getCaptionFromImageModelElement( selectedElement );\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * ```ts\n\t * editor.execute( 'toggleImageCaption' );\n\t * ```\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { focusCaptionOnShow?: boolean } = {} ): void {\n\t\tconst { focusCaptionOnShow } = options;\n\n\t\tthis.editor.model.change( writer => {\n\t\t\tif ( this.value ) {\n\t\t\t\tthis._hideImageCaption( writer );\n\t\t\t} else {\n\t\t\t\tthis._showImageCaption( writer, focusCaptionOnShow );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the caption of the `<imageBlock>` or `<imageInline>`. Also:\n\t *\n\t * * it converts `<imageInline>` to `<imageBlock>` to show the caption,\n\t * * it attempts to restore the caption content from the `ImageCaptionEditing` caption registry,\n\t * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.\n\t */\n\tprivate _showImageCaption( writer: ModelWriter, focusCaptionOnShow?: boolean ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst imageCaptionEditing: ImageCaptionEditing = this.editor.plugins.get( 'ImageCaptionEditing' );\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tlet selectedImage = selection.getSelectedElement()!;\n\n\t\tconst savedCaption = imageCaptionEditing._getSavedCaption( selectedImage );\n\n\t\t// Convert imageInline -> image first.\n\t\tif ( imageUtils.isInlineImage( selectedImage ) ) {\n\t\t\tthis.editor.execute( 'imageTypeBlock' );\n\n\t\t\t// Executing the command created a new model element. Let's pick it again.\n\t\t\tselectedImage = selection.getSelectedElement()!;\n\t\t}\n\n\t\t// Try restoring the caption from the ImageCaptionEditing plugin storage.\n\t\tconst newCaptionElement = savedCaption || writer.createElement( 'caption' );\n\n\t\twriter.append( newCaptionElement, selectedImage );\n\n\t\tif ( focusCaptionOnShow ) {\n\t\t\twriter.setSelection( newCaptionElement, 'in' );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the caption of a selected image (or an image caption the selection is anchored to).\n\t *\n\t * The content of the caption is stored in the `ImageCaptionEditing` caption registry to make this\n\t * a reversible action.\n\t */\n\tprivate _hideImageCaption( writer: ModelWriter ): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageCaptionEditing: ImageCaptionEditing = editor.plugins.get( 'ImageCaptionEditing' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tlet selectedImage = selection.getSelectedElement()!;\n\t\tlet captionElement: ModelElement;\n\n\t\tif ( selectedImage ) {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromImageModelElement( selectedImage )!;\n\t\t} else {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromModelSelection( selection )!;\n\t\t\tselectedImage = captionElement!.parent as ModelElement;\n\t\t}\n\n\t\t// Store the caption content so it can be restored quickly if the user changes their mind even if they toggle image<->imageInline.\n\t\timageCaptionEditing._saveCaption( selectedImage, captionElement );\n\n\t\twriter.setSelection( selectedImage, 'on' );\n\t\twriter.remove( captionElement );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/imagecaptionediting\n */\n\nimport { type Editor, Plugin, type CommandExecuteEvent, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ModelElement, enableViewPlaceholder, type ModelDocumentChangeEvent, type DifferItemAttribute } from '@ckeditor/ckeditor5-engine';\nimport { toWidgetEditable } from '@ckeditor/ckeditor5-widget';\nimport type { GetCallback } from '@ckeditor/ckeditor5-utils';\n\nimport { ToggleImageCaptionCommand } from './toggleimagecaptioncommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport { ImageCaptionUtils } from './imagecaptionutils.js';\n\n/**\n * The image caption engine plugin. It is responsible for:\n *\n * * registering converters for the caption element,\n * * registering converters for the caption model attribute,\n * * registering the {@link module:image/imagecaption/toggleimagecaptioncommand~ToggleImageCaptionCommand `toggleImageCaption`} command.\n */\nexport class ImageCaptionEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils, ImageCaptionUtils ]> {\n\t\treturn [ ImageUtils, ImageCaptionUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * A map that keeps saved JSONified image captions and image model elements they are\n\t * associated with.\n\t *\n\t * To learn more about this system, see {@link #_saveCaption}.\n\t */\n\tprivate _savedCaptionsMap: WeakMap<ModelElement, unknown>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._savedCaptionsMap = new WeakMap();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Schema configuration.\n\t\tif ( !schema.isRegistered( 'caption' ) ) {\n\t\t\tschema.register( 'caption', {\n\t\t\t\tallowIn: 'imageBlock',\n\t\t\t\tallowContentOf: '$block',\n\t\t\t\tisLimit: true\n\t\t\t} );\n\t\t} else {\n\t\t\tschema.extend( 'caption', {\n\t\t\t\tallowIn: 'imageBlock'\n\t\t\t} );\n\t\t}\n\n\t\teditor.commands.add( 'toggleImageCaption', new ToggleImageCaptionCommand( this.editor ) );\n\n\t\tthis._setupConversion();\n\t\tthis._setupImageTypeCommandsIntegration();\n\t\tthis._registerCaptionReconversion();\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * image captions.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst t = editor.t;\n\n\t\t// View -> model converter for the data pipeline.\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tview: element => imageCaptionUtils.matchImageCaptionViewElement( element ),\n\t\t\tmodel: 'caption'\n\t\t} );\n\n\t\t// Model -> view converter for the data pipeline.\n\t\teditor.conversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !imageUtils.isBlockImage( modelElement.parent as ModelElement ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn writer.createContainerElement( 'figcaption' );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> view converter for the editing pipeline.\n\t\teditor.conversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !imageUtils.isBlockImage( modelElement.parent as ModelElement ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst figcaptionElement = writer.createEditableElement( 'figcaption' );\n\t\t\t\twriter.setCustomProperty( 'imageCaption', true, figcaptionElement );\n\n\t\t\t\tfigcaptionElement.placeholder = t( 'Enter image caption' );\n\t\t\t\tenableViewPlaceholder( {\n\t\t\t\t\tview,\n\t\t\t\t\telement: figcaptionElement,\n\t\t\t\t\tkeepOnFocus: true\n\t\t\t\t} );\n\n\t\t\t\tconst imageAlt = ( modelElement.parent as ModelElement ).getAttribute( 'alt' ) as string;\n\t\t\t\tconst label = imageAlt ? t( 'Caption for image: %0', [ imageAlt ] ) : t( 'Caption for the image' );\n\n\t\t\t\treturn toWidgetEditable( figcaptionElement, writer, { label } );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Integrates with {@link module:image/image/imagetypecommand~ImageTypeCommand image type commands}\n\t * to make sure the caption is preserved when the type of an image changes so it can be restored\n\t * in the future if the user decides they want their caption back.\n\t */\n\tprivate _setupImageTypeCommandsIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst imageTypeInlineCommand = editor.commands.get( 'imageTypeInline' );\n\t\tconst imageTypeBlockCommand = editor.commands.get( 'imageTypeBlock' );\n\n\t\tconst handleImageTypeChange: GetCallback<CommandExecuteEvent> = evt => {\n\t\t\t// The image type command execution can be unsuccessful.\n\t\t\tif ( !evt.return ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { oldElement, newElement } = evt.return as { oldElement: ModelElement; newElement: ModelElement };\n\n\t\t\t/* istanbul ignore if: paranoid check -- @preserve */\n\t\t\tif ( !oldElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( imageUtils.isBlockImage( oldElement ) ) {\n\t\t\t\tconst oldCaptionElement = imageCaptionUtils.getCaptionFromImageModelElement( oldElement );\n\n\t\t\t\t// If the old element was a captioned block image (the caption was visible),\n\t\t\t\t// simply save it so it can be restored.\n\t\t\t\tif ( oldCaptionElement ) {\n\t\t\t\t\tthis._saveCaption( newElement, oldCaptionElement );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst savedOldElementCaption = this._getSavedCaption( oldElement );\n\n\t\t\t// If either:\n\t\t\t//\n\t\t\t// * the block image didn't have a visible caption,\n\t\t\t// * the block image caption was hidden (and already saved),\n\t\t\t// * the inline image was passed\n\t\t\t//\n\t\t\t// just try to \"pass\" the saved caption from the old image to the new image\n\t\t\t// so it can be retrieved in the future if the user wants it back.\n\t\t\tif ( savedOldElementCaption ) {\n\t\t\t\t// Note: Since we're writing to a WeakMap, we don't bother with removing the\n\t\t\t\t// [ oldElement, savedOldElementCaption ] pair from it.\n\t\t\t\tthis._saveCaption( newElement, savedOldElementCaption );\n\t\t\t}\n\t\t};\n\n\t\t// Presence of the commands depends on the Image(Inline|Block)Editing plugins loaded in the editor.\n\t\tif ( imageTypeInlineCommand ) {\n\t\t\tthis.listenTo<CommandExecuteEvent>( imageTypeInlineCommand, 'execute', handleImageTypeChange, { priority: 'low' } );\n\t\t}\n\n\t\tif ( imageTypeBlockCommand ) {\n\t\t\tthis.listenTo<CommandExecuteEvent>( imageTypeBlockCommand, 'execute', handleImageTypeChange, { priority: 'low' } );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the saved {@link module:engine/model/element~ModelElement#toJSON JSONified} caption\n\t * of an image model element.\n\t *\n\t * See {@link #_saveCaption}.\n\t *\n\t * @internal\n\t * @param imageModelElement The model element the caption should be returned for.\n\t * @returns The model caption element or `null` if there is none.\n\t */\n\tpublic _getSavedCaption( imageModelElement: ModelElement ): ModelElement | null {\n\t\tconst jsonObject = this._savedCaptionsMap.get( imageModelElement );\n\n\t\treturn jsonObject ? ModelElement.fromJSON( jsonObject ) : null;\n\t}\n\n\t/**\n\t * Saves a {@link module:engine/model/element~ModelElement#toJSON JSONified} caption for\n\t * an image element to allow restoring it in the future.\n\t *\n\t * A caption is saved every time it gets hidden and/or the type of an image changes. The\n\t * user should be able to restore it on demand.\n\t *\n\t * **Note**: The caption cannot be stored in the image model element attribute because,\n\t * for instance, when the model state propagates to collaborators, the attribute would get\n\t * lost (mainly because it does not convert to anything when the caption is hidden) and\n\t * the states of collaborators' models would de-synchronize causing numerous issues.\n\t *\n\t * See {@link #_getSavedCaption}.\n\t *\n\t * @internal\n\t * @param imageModelElement The model element the caption is saved for.\n\t * @param caption The caption model element to be saved.\n\t */\n\tpublic _saveCaption( imageModelElement: ModelElement, caption: ModelElement ): void {\n\t\tthis._savedCaptionsMap.set( imageModelElement, caption.toJSON() );\n\t}\n\n\t/**\n\t * Reconverts image caption when image alt attribute changes.\n\t * The change of alt attribute is reflected in caption's aria-label attribute.\n\t */\n\tprivate _registerCaptionReconversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\n\t\tmodel.document.on<ModelDocumentChangeEvent>( 'change:data', () => {\n\t\t\tconst changes = model.document.differ.getChanges();\n\n\t\t\tfor ( const change of changes as Array<DifferItemAttribute> ) {\n\t\t\t\tif ( change.attributeKey !== 'alt' ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst image = change.range.start.nodeAfter as ModelElement;\n\n\t\t\t\tif ( imageUtils.isBlockImage( image ) ) {\n\t\t\t\t\tconst caption = imageCaptionUtils.getCaptionFromImageModelElement( image );\n\n\t\t\t\t\tif ( !caption ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\teditor.editing.reconvertItem( caption );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption/imagecaptionui\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ButtonView } from '@ckeditor/ckeditor5-ui';\nimport { IconCaption } from '@ckeditor/ckeditor5-icons';\nimport { ImageCaptionUtils } from './imagecaptionutils.js';\nimport { type ToggleImageCaptionCommand } from './toggleimagecaptioncommand.js';\n\n/**\n * The image caption UI plugin. It introduces the `'toggleImageCaption'` UI button.\n */\nexport class ImageCaptionUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageCaptionUtils ]> {\n\t\treturn [ ImageCaptionUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'toggleImageCaption', locale => {\n\t\t\tconst command: ToggleImageCaptionCommand = editor.commands.get( 'toggleImageCaption' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\ticon: IconCaption,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\t\t\tview.bind( 'label' ).to( command, 'value', value => value ? t( 'Toggle caption off' ) : t( 'Toggle caption on' ) );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n\n\t\t\t\t// Scroll to the selection and highlight the caption if the caption showed up.\n\t\t\t\tconst modelCaptionElement = imageCaptionUtils.getCaptionFromModelSelection( editor.model.document.selection );\n\n\t\t\t\tif ( modelCaptionElement ) {\n\t\t\t\t\tconst figcaptionElement = editor.editing.mapper.toViewElement( modelCaptionElement );\n\n\t\t\t\t\teditingView.scrollToTheSelection();\n\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( 'image__caption_highlighted', figcaptionElement! );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagecaption\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageCaptionEditing } from './imagecaption/imagecaptionediting.js';\nimport { ImageCaptionUI } from './imagecaption/imagecaptionui.js';\n\n/**\n * The image caption plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-captions image caption} documentation.\n */\nexport class ImageCaption extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageCaptionEditing, ImageCaptionUI ]> {\n\t\treturn [ ImageCaptionEditing, ImageCaptionUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaption' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/utils\n */\n\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\nimport { global } from '@ckeditor/ckeditor5-utils';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * Creates a regular expression used to test for image files.\n *\n * ```ts\n * const imageType = createImageTypeRegExp( [ 'png', 'jpeg', 'svg+xml', 'vnd.microsoft.icon' ] );\n *\n * console.log( 'is supported image', imageType.test( file.type ) );\n * ```\n */\nexport function createImageTypeRegExp( types: Array<string> ): RegExp {\n\t// Sanitize the MIME type name which may include: \"+\", \"-\" or \".\".\n\tconst regExpSafeNames = types.map( type => type.replace( '+', '\\\\+' ) );\n\n\treturn new RegExp( `^image\\\\/(${ regExpSafeNames.join( '|' ) })$` );\n}\n\n/**\n * Creates a promise that fetches the image local source (Base64 or blob) and resolves with a `File` object.\n *\n * @internal\n * @param image Image whose source to fetch.\n * @returns A promise which resolves when an image source is fetched and converted to a `File` instance.\n * It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n */\nexport function fetchLocalImage( image: ViewElement ): Promise<File> {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst imageSrc = image.getAttribute( 'src' )!;\n\n\t\t// Fetch works asynchronously and so does not block browser UI when processing data.\n\t\tfetch( imageSrc )\n\t\t\t.then( resource => resource.blob() )\n\t\t\t.then( blob => {\n\t\t\t\tconst mimeType = getImageMimeType( blob, imageSrc );\n\t\t\t\tconst ext = mimeType.replace( 'image/', '' );\n\t\t\t\tconst filename = `image.${ ext }`;\n\t\t\t\tconst file = new File( [ blob ], filename, { type: mimeType } );\n\n\t\t\t\tresolve( file );\n\t\t\t} )\n\t\t\t.catch( err => {\n\t\t\t\t// Fetch fails only, if it can't make a request due to a network failure or if anything prevented the request\n\t\t\t\t// from completing, i.e. the Content Security Policy rules. It is not possible to detect the exact cause of failure,\n\t\t\t\t// so we are just trying the fallback solution, if general TypeError is thrown.\n\t\t\t\treturn err && err.name === 'TypeError' ?\n\t\t\t\t\tconvertLocalImageOnCanvas( imageSrc ).then( resolve ).catch( reject ) :\n\t\t\t\t\treject( err );\n\t\t\t} );\n\t} );\n}\n\n/**\n * Checks whether a given node is an image element with a local source (Base64 or blob).\n *\n * @param node The node to check.\n * @internal\n */\nexport function isLocalImage( imageUtils: ImageUtils, node: ViewElement ): boolean {\n\tif ( !imageUtils.isInlineImageView( node ) || !node.getAttribute( 'src' ) ) {\n\t\treturn false;\n\t}\n\n\treturn !!node.getAttribute( 'src' )!.match( /^data:image\\/\\w+;base64,/g ) ||\n\t\t!!node.getAttribute( 'src' )!.match( /^blob:/g );\n}\n\n/**\n * Extracts an image type based on its blob representation or its source.\n * @param blob Image blob representation.\n * @param src Image `src` attribute value.\n */\nfunction getImageMimeType( blob: Blob, src: string ): string {\n\tif ( blob.type ) {\n\t\treturn blob.type;\n\t} else if ( src.match( /data:(image\\/\\w+);base64/ ) ) {\n\t\treturn src.match( /data:(image\\/\\w+);base64/ )![ 1 ].toLowerCase();\n\t} else {\n\t\t// Fallback to 'jpeg' as common extension.\n\t\treturn 'image/jpeg';\n\t}\n}\n\n/**\n * Creates a promise that converts the image local source (Base64 or blob) to a blob using canvas and resolves\n * with a `File` object.\n * @param imageSrc Image `src` attribute value.\n * @returns A promise which resolves when an image source is converted to a `File` instance.\n * It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n */\nfunction convertLocalImageOnCanvas( imageSrc: string ): Promise<File> {\n\treturn getBlobFromCanvas( imageSrc ).then( blob => {\n\t\tconst mimeType = getImageMimeType( blob, imageSrc );\n\t\tconst ext = mimeType.replace( 'image/', '' );\n\t\tconst filename = `image.${ ext }`;\n\n\t\treturn new File( [ blob ], filename, { type: mimeType } );\n\t} );\n}\n\n/**\n * Creates a promise that resolves with a `Blob` object converted from the image source (Base64 or blob).\n * @param imageSrc Image `src` attribute value.\n */\nfunction getBlobFromCanvas( imageSrc: string ): Promise<Blob> {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst image = global.document.createElement( 'img' );\n\n\t\timage.addEventListener( 'load', () => {\n\t\t\tconst canvas = global.document.createElement( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst ctx = canvas.getContext( '2d' )!;\n\n\t\t\tctx.drawImage( image, 0, 0 );\n\n\t\t\tcanvas.toBlob( blob => blob ? resolve( blob ) : reject() );\n\t\t} );\n\n\t\timage.addEventListener( 'error', () => reject() );\n\n\t\timage.src = imageSrc;\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/imageuploadui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport {\n\tFileDialogButtonView,\n\tMenuBarMenuListItemFileDialogButtonView,\n\ttype ButtonView,\n\ttype MenuBarMenuListItemButtonView\n} from '@ckeditor/ckeditor5-ui';\nimport { IconImageUpload } from '@ckeditor/ckeditor5-icons';\nimport { createImageTypeRegExp } from './utils.js';\nimport { type ImageInsertUI } from '../imageinsert/imageinsertui.js';\n\n/**\n * The image upload button plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature} documentation.\n *\n * Adds the `'uploadImage'` button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n * and also the `imageUpload` button as an alias for backward compatibility.\n *\n * Adds the `'menuBar:uploadImage'` menu button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}.\n *\n * It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are the default components\n * through which image upload is available.\n */\nexport class ImageUploadUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Setup `uploadImage` button and add `imageUpload` button as an alias for backward compatibility.\n\t\teditor.ui.componentFactory.add( 'uploadImage', () => this._createToolbarButton() );\n\t\teditor.ui.componentFactory.add( 'imageUpload', () => this._createToolbarButton() );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:uploadImage', () => this._createMenuBarButton( 'standalone' ) );\n\n\t\tif ( editor.plugins.has( 'ImageInsertUI' ) ) {\n\t\t\teditor.plugins.get( 'ImageInsertUI' ).registerIntegration( {\n\t\t\t\tname: 'upload',\n\t\t\t\tobservable: () => editor.commands.get( 'uploadImage' )!,\n\t\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\t\tmenuBarButtonViewCreator: isOnly => this._createMenuBarButton( isOnly ? 'insertOnly' : 'insertNested' )\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Creates the base for various kinds of the button component provided by this feature.\n\t */\n\tprivate _createButton<T extends typeof FileDialogButtonView | typeof MenuBarMenuListItemFileDialogButtonView>(\n\t\tButtonClass: T\n\t): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst command = editor.commands.get( 'uploadImage' )!;\n\t\tconst imageTypes = editor.config.get( 'image.upload.types' )!;\n\t\tconst imageTypesRegExp = createImageTypeRegExp( imageTypes );\n\n\t\tconst view = new ButtonClass( editor.locale ) as InstanceType<T>;\n\t\tconst t = locale.t;\n\n\t\tview.set( {\n\t\t\tacceptedType: imageTypes.map( type => `image/${ type }` ).join( ',' ),\n\t\t\tallowMultipleFiles: true,\n\t\t\tlabel: t( 'Upload from computer' ),\n\t\t\ticon: IconImageUpload\n\t\t} );\n\n\t\tview.bind( 'isEnabled' ).to( command );\n\n\t\tview.on( 'done', ( evt, files: FileList ) => {\n\t\t\tconst imagesToUpload = Array.from( files ).filter( file => imageTypesRegExp.test( file.type ) );\n\n\t\t\tif ( imagesToUpload.length ) {\n\t\t\t\teditor.execute( 'uploadImage', { file: imagesToUpload } );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t}\n\t\t} );\n\n\t\treturn view;\n\t}\n\n\t/**\n\t * Creates a simple toolbar button, with an icon and a tooltip.\n\t */\n\tprivate _createToolbarButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI: ImageInsertUI = this.editor.plugins.get( 'ImageInsertUI' );\n\t\tconst uploadImageCommand = this.editor.commands.get( 'uploadImage' )!;\n\n\t\tconst button = this._createButton( FileDialogButtonView );\n\n\t\tbutton.tooltip = true;\n\t\tbutton.bind( 'label' ).to(\n\t\t\timageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tuploadImageCommand,\n\t\t\t'isAccessAllowed',\n\t\t\t( isImageSelected, isAccessAllowed ) => {\n\t\t\t\tif ( !isAccessAllowed ) {\n\t\t\t\t\treturn t( 'You have no image upload permissions.' );\n\t\t\t\t}\n\n\t\t\t\treturn isImageSelected ? t( 'Replace image from computer' ) : t( 'Upload image from computer' );\n\t\t\t}\n\t\t);\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t */\n\tprivate _createDropdownButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst imageInsertUI: ImageInsertUI = this.editor.plugins.get( 'ImageInsertUI' );\n\n\t\tconst button = this._createButton( FileDialogButtonView );\n\n\t\tbutton.withText = true;\n\n\t\tbutton.bind( 'label' ).to(\n\t\t\timageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tisImageSelected => isImageSelected ? t( 'Replace from computer' ) : t( 'Upload from computer' )\n\t\t);\n\n\t\tbutton.on( 'execute', () => {\n\t\t\timageInsertUI.dropdownView!.isOpen = false;\n\t\t} );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the menu bar.\n\t */\n\tprivate _createMenuBarButton( type: 'standalone' | 'insertOnly' | 'insertNested' ): MenuBarMenuListItemButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createButton( MenuBarMenuListItemFileDialogButtonView );\n\n\t\tbutton.withText = true;\n\n\t\tswitch ( type ) {\n\t\t\tcase 'standalone':\n\t\t\t\tbutton.label = t( 'Image from computer' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertOnly':\n\t\t\t\tbutton.label = t( 'Image' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertNested':\n\t\t\t\tbutton.label = t( 'From computer' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn button;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/imageuploadprogress\n */\n\nimport { type Editor, Plugin } from '@ckeditor/ckeditor5-core';\nimport { FileRepository, type FileLoader } from '@ckeditor/ckeditor5-upload';\n\nimport type { GetCallback } from '@ckeditor/ckeditor5-utils';\nimport type {\n\tViewDowncastWriter,\n\tEditingView,\n\tViewElement,\n\tViewContainerElement,\n\tViewUIElement,\n\tDowncastAttributeEvent,\n\tModelElement\n} from '@ckeditor/ckeditor5-engine';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image upload progress plugin.\n * It shows a placeholder when the image is read from the disk and a progress bar while the image is uploading.\n */\nexport class ImageUploadProgress extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadProgress' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The image placeholder that is displayed before real image data can be accessed.\n\t *\n\t * For the record, this image is a 1x1 px GIF with an aspect ratio set by CSS.\n\t */\n\tprivate placeholder: string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.placeholder = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Upload status change - update image's view according to that status.\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.editing.downcastDispatcher.on<DowncastAttributeEvent>(\n\t\t\t\t'attribute:uploadStatus:imageBlock',\n\t\t\t\tthis.uploadStatusChange\n\t\t\t);\n\t\t}\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.editing.downcastDispatcher.on<DowncastAttributeEvent>(\n\t\t\t\t'attribute:uploadStatus:imageInline',\n\t\t\t\tthis.uploadStatusChange\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * This method is called each time the image `uploadStatus` attribute is changed.\n\t *\n\t * @param evt An object containing information about the fired event.\n\t * @param data Additional information about the change.\n\t */\n\tprivate uploadStatusChange: GetCallback<DowncastAttributeEvent> = ( evt, data, conversionApi ) => {\n\t\tconst editor = this.editor;\n\t\tconst modelImage = data.item as ModelElement;\n\t\tconst uploadId = modelImage.getAttribute( 'uploadId' ) as string | number;\n\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst status = uploadId ? data.attributeNewValue : null;\n\t\tconst placeholder = this.placeholder;\n\t\tconst viewFigure = editor.editing.mapper.toViewElement( modelImage )! as ViewContainerElement;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\tif ( status == 'reading' ) {\n\t\t\t// Start \"appearing\" effect and show placeholder with infinite progress bar on the top\n\t\t\t// while image is read from disk.\n\t\t\t_startAppearEffect( viewFigure, viewWriter );\n\t\t\t_showPlaceholder( imageUtils, placeholder, viewFigure, viewWriter );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Show progress bar on the top of the image when image is uploading.\n\t\tif ( status == 'uploading' ) {\n\t\t\tconst loader = fileRepository.loaders.get( uploadId );\n\n\t\t\t// Start appear effect if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n\t\t\t_startAppearEffect( viewFigure, viewWriter );\n\n\t\t\tif ( !loader ) {\n\t\t\t\t// There is no loader associated with uploadId - this means that image came from external changes.\n\t\t\t\t// In such cases we still want to show the placeholder until image is fully uploaded.\n\t\t\t\t// Show placeholder if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n\t\t\t\t_showPlaceholder( imageUtils, placeholder, viewFigure, viewWriter );\n\t\t\t} else {\n\t\t\t\t// Hide placeholder and initialize progress bar showing upload progress.\n\t\t\t\t_hidePlaceholder( viewFigure, viewWriter );\n\t\t\t\t_showProgressBar( viewFigure, viewWriter, loader, editor.editing.view );\n\t\t\t\t_displayLocalImage( imageUtils, viewFigure!, viewWriter, loader );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( status == 'complete' && fileRepository.loaders.get( uploadId ) ) {\n\t\t\t_showCompleteIcon( viewFigure, viewWriter, editor.editing.view );\n\t\t}\n\n\t\t// Clean up.\n\t\t_hideProgressBar( viewFigure, viewWriter );\n\t\t_hidePlaceholder( viewFigure, viewWriter );\n\t\t_stopAppearEffect( viewFigure, viewWriter );\n\t};\n}\n\n/**\n * Adds ck-appear class to the image figure if one is not already applied.\n */\nfunction _startAppearEffect( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\tif ( !viewFigure.hasClass( 'ck-appear' ) ) {\n\t\twriter.addClass( 'ck-appear', viewFigure );\n\t}\n}\n\n/**\n * Removes ck-appear class to the image figure if one is not already removed.\n */\nfunction _stopAppearEffect( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\twriter.removeClass( 'ck-appear', viewFigure );\n}\n\n/**\n * Shows placeholder together with infinite progress bar on given image figure.\n */\nfunction _showPlaceholder( imageUtils: ImageUtils, placeholder: string, viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\tif ( !viewFigure.hasClass( 'ck-image-upload-placeholder' ) ) {\n\t\twriter.addClass( 'ck-image-upload-placeholder', viewFigure );\n\t}\n\n\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\tif ( viewImg.getAttribute( 'src' ) !== placeholder ) {\n\t\twriter.setAttribute( 'src', placeholder, viewImg );\n\t}\n\n\tif ( !_getUIElement( viewFigure, 'placeholder' ) ) {\n\t\twriter.insert( writer.createPositionAfter( viewImg ), _createPlaceholder( writer ) );\n\t}\n}\n\n/**\n * Removes placeholder together with infinite progress bar on given image figure.\n */\nfunction _hidePlaceholder( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\tif ( viewFigure.hasClass( 'ck-image-upload-placeholder' ) ) {\n\t\twriter.removeClass( 'ck-image-upload-placeholder', viewFigure );\n\t}\n\n\t_removeUIElement( viewFigure, writer, 'placeholder' );\n}\n\n/**\n * Shows progress bar displaying upload progress.\n * Attaches it to the file loader to update when upload percentace is changed.\n */\nfunction _showProgressBar( viewFigure: ViewContainerElement, writer: ViewDowncastWriter, loader: FileLoader, view: EditingView ) {\n\tconst progressBar = _createProgressBar( writer );\n\twriter.insert( writer.createPositionAt( viewFigure, 'end' ), progressBar );\n\n\t// Update progress bar width when uploadedPercent is changed.\n\tloader.on( 'change:uploadedPercent', ( evt, name, value ) => {\n\t\tview.change( writer => {\n\t\t\twriter.setStyle( 'width', value + '%', progressBar );\n\t\t} );\n\t} );\n}\n\n/**\n * Hides upload progress bar.\n */\nfunction _hideProgressBar( viewFigure: ViewContainerElement, writer: ViewDowncastWriter ) {\n\t_removeUIElement( viewFigure, writer, 'progressBar' );\n}\n\n/**\n * Shows complete icon and hides after a certain amount of time.\n */\nfunction _showCompleteIcon( viewFigure: ViewContainerElement, writer: ViewDowncastWriter, view: EditingView ) {\n\tconst completeIcon = writer.createUIElement( 'div', { class: 'ck-image-upload-complete-icon' } );\n\n\twriter.insert( writer.createPositionAt( viewFigure, 'end' ), completeIcon );\n\n\tsetTimeout( () => {\n\t\tview.change( writer => writer.remove( writer.createRangeOn( completeIcon ) ) );\n\t}, 3000 );\n}\n\n/**\n * Create progress bar element using {@link module:engine/view/uielement~ViewUIElement}.\n */\nfunction _createProgressBar( writer: ViewDowncastWriter ): ViewUIElement {\n\tconst progressBar = writer.createUIElement( 'div', { class: 'ck-progress-bar' } );\n\n\twriter.setCustomProperty( 'progressBar', true, progressBar );\n\n\treturn progressBar;\n}\n\n/**\n * Create placeholder element using {@link module:engine/view/uielement~ViewUIElement}.\n */\nfunction _createPlaceholder( writer: ViewDowncastWriter ): ViewUIElement {\n\tconst placeholder = writer.createUIElement( 'div', { class: 'ck-upload-placeholder-loader' } );\n\n\twriter.setCustomProperty( 'placeholder', true, placeholder );\n\n\treturn placeholder;\n}\n\n/**\n * Returns {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n * Returns `undefined` if element is not found.\n */\nfunction _getUIElement( imageFigure: ViewElement, uniqueProperty: string ): ViewUIElement | undefined {\n\tfor ( const child of imageFigure.getChildren() ) {\n\t\tif ( ( child as ViewElement ).getCustomProperty( uniqueProperty ) ) {\n\t\t\treturn child as ViewUIElement;\n\t\t}\n\t}\n}\n\n/**\n * Removes {@link module:engine/view/uielement~ViewUIElement} of given unique property from image figure element.\n */\nfunction _removeUIElement( viewFigure: ViewContainerElement, writer: ViewDowncastWriter, uniqueProperty: string ) {\n\tconst element = _getUIElement( viewFigure, uniqueProperty );\n\n\tif ( element ) {\n\t\twriter.remove( writer.createRangeOn( element ) );\n\t}\n}\n\n/**\n * Displays local data from file loader.\n */\nfunction _displayLocalImage( imageUtils: ImageUtils, viewFigure: ViewElement, writer: ViewDowncastWriter, loader: FileLoader ) {\n\tif ( loader.data ) {\n\t\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\t\twriter.setAttribute( 'src', loader.data, viewImg );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/uploadimagecommand\n */\n\nimport { FileRepository } from '@ckeditor/ckeditor5-upload';\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { toArray, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\nimport type { ModelPosition } from '@ckeditor/ckeditor5-engine';\n\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The upload image command.\n *\n * The command is registered by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin as `uploadImage`\n * and it is also available via aliased `imageUpload` name.\n *\n * In order to upload an image at the current selection position\n * (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n * execute the command and pass the native image file instance:\n *\n * ```ts\n * this.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n * \t// Assuming that only images were pasted:\n * \tconst images = Array.from( data.dataTransfer.files );\n *\n * \t// Upload the first image:\n * \teditor.execute( 'uploadImage', { file: images[ 0 ] } );\n * } );\n * ```\n *\n * It is also possible to insert multiple images at once:\n *\n * ```ts\n * editor.execute( 'uploadImage', {\n * \tfile: [\n * \t\tfile1,\n * \t\tfile2\n * \t]\n * } );\n * ```\n */\nexport class UploadImageCommand extends Command {\n\t/**\n\t * The command property: `false` if there is no permission on image upload, otherwise `true`.\n\t *\n\t * @observable\n\t * @internal\n\t */\n\tdeclare public isAccessAllowed: boolean;\n\n\t/**\n\t * Creates an instance of the `imageUlpoad` command. When executed, the command upload one of\n\t * the currently selected image from computer.\n\t *\n\t * @param editor The editor instance.\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.set( 'isAccessAllowed', true );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst selectedElement = editor.model.document.selection.getSelectedElement()!;\n\n\t\t// TODO: This needs refactoring.\n\t\tthis.isEnabled = imageUtils.isImageAllowed() || imageUtils.isImage( selectedElement );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.file The image file or an array of image files to upload.\n\t */\n\tpublic override execute( options: { file: ArrayOrItem<File> } ): void {\n\t\tconst files = toArray( options.file );\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// In case of multiple files, each file (starting from the 2nd) will be inserted at a position that\n\t\t// follows the previous one. That will move the selection and, to stay on the safe side and make sure\n\t\t// all images inherit the same selection attributes, they are collected beforehand.\n\t\t//\n\t\t// Applying these attributes ensures, for instance, that inserting an (inline) image into a link does\n\t\t// not split that link but preserves its continuity.\n\t\t//\n\t\t// Note: Selection attributes that do not make sense for images will be filtered out by insertImage() anyway.\n\t\tconst selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n\t\tfiles.forEach( ( file, index ) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\t// Inserting of an inline image replace the selected element and make a selection on the inserted image.\n\t\t\t// Therefore inserting multiple inline images requires creating position after each element.\n\t\t\tif ( index && selectedElement && imageUtils.isImage( selectedElement ) ) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter( selectedElement );\n\n\t\t\t\tthis._uploadImage( file, selectionAttributes, position );\n\t\t\t} else {\n\t\t\t\tthis._uploadImage( file, selectionAttributes );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Handles uploading single file.\n\t */\n\tprivate _uploadImage( file: File, attributes: object, position?: ModelPosition ): void {\n\t\tconst editor = this.editor;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst loader = fileRepository.createLoader( file );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Do not throw when upload adapter is not set. FileRepository will log an error anyway.\n\t\tif ( !loader ) {\n\t\t\treturn;\n\t\t}\n\n\t\timageUtils.insertImage( { ...attributes, uploadId: loader.id }, position );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload/imageuploadediting\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tViewUpcastWriter,\n\ttype ModelElement,\n\ttype ModelItem,\n\ttype ModelWriter,\n\ttype ViewDataTransfer,\n\ttype ViewElement,\n\ttype ModelNodeAttributes,\n\ttype DowncastAttributeEvent,\n\ttype UpcastElementEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Notification } from '@ckeditor/ckeditor5-ui';\nimport {\n\tClipboardPipeline,\n\ttype ViewDocumentClipboardInputEvent,\n\ttype ClipboardInputTransformationEvent\n} from '@ckeditor/ckeditor5-clipboard';\nimport { FileRepository, type UploadResponse, type FileLoader } from '@ckeditor/ckeditor5-upload';\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nimport { ImageUtils } from '../imageutils.js';\nimport { UploadImageCommand } from './uploadimagecommand.js';\nimport { createImageTypeRegExp, fetchLocalImage, isLocalImage } from './utils.js';\n\n/**\n * The editing part of the image upload feature. It registers the `'uploadImage'` command\n * and the `imageUpload` command as an aliased name.\n *\n * When an image is uploaded, it fires the {@link ~ImageUploadEditing#event:uploadComplete `uploadComplete`} event\n * that allows adding custom attributes to the {@link module:engine/model/element~ModelElement image element}.\n */\nexport class ImageUploadEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ FileRepository, Notification, ClipboardPipeline, ImageUtils ]> {\n\t\treturn [ FileRepository, Notification, ClipboardPipeline, ImageUtils ];\n\t}\n\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t * model elements during the upload.\n\t *\n\t * Model element of the uploaded image can change, for instance, when {@link module:image/image/imagetypecommand~ImageTypeCommand}\n\t * is executed as a result of adding caption or changing image style. As a result, the upload logic must keep track of the model\n\t * element (reference) and resolve the upload for the correct model element (instead of the one that landed in the `$graveyard`\n\t * after image type changed).\n\t */\n\tprivate readonly _uploadImageElements: Map<string, Set<ModelElement>>;\n\n\t/**\n\t * An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t * upload responses for handling images dragged during their upload process. When such images are later\n\t * dropped, their original upload IDs no longer exist in the registry (as the original upload completed).\n\t * This map preserves the upload responses to properly handle such cases.\n\t */\n\tprivate readonly _uploadedImages = new Map<string, UploadResponse>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image', {\n\t\t\tupload: {\n\t\t\t\ttypes: [ 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff' ]\n\t\t\t}\n\t\t} );\n\n\t\tthis._uploadImageElements = new Map();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst doc = editor.model.document;\n\t\tconst conversion = editor.conversion;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\t\tconst imageTypes = createImageTypeRegExp( editor.config.get( 'image.upload.types' )! );\n\t\tconst uploadImageCommand = new UploadImageCommand( editor );\n\n\t\t// Register `uploadImage` command and add `imageUpload` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'uploadImage', uploadImageCommand );\n\t\teditor.commands.add( 'imageUpload', uploadImageCommand );\n\n\t\t// Register upcast converter for uploadId.\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'uploadId'\n\t\t\t\t},\n\t\t\t\tmodel: 'uploadId'\n\t\t\t} )\n\n\t\t\t// Handle the case when the image is not fully uploaded yet but it's being moved.\n\t\t\t// See more: https://github.com/ckeditor/ckeditor5/pull/17327\n\t\t\t.add( dispatcher => dispatcher.on<UpcastElementEvent>( 'element:img', ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.test( data.viewItem, { attributes: [ 'data-ck-upload-id' ] } ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst uploadId = data.viewItem.getAttribute( 'data-ck-upload-id' );\n\n\t\t\t\tif ( !uploadId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// The `<img>` was not converted to a model image element (e.g. an inline root only allows\n\t\t\t\t// inline content and the image was not allowed), so there is nothing to set the upload data on.\n\t\t\t\tif ( !data.modelRange ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst [ modelElement ] = Array.from( data.modelRange.getItems( { shallow: true } ) );\n\t\t\t\tconst loader = fileRepository.loaders.get( uploadId as string );\n\n\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\tif ( modelElement ) {\n\t\t\t\t\t// Handle case when `uploadId` is set on the image element but the loader is not present in the registry.\n\t\t\t\t\t// It may happen when the image was successfully uploaded and the loader was removed from the registry.\n\t\t\t\t\t// It's still present in the `_uploadedImages` map though. It's why we do not place this line in the condition below.\n\t\t\t\t\tconversionApi.writer.setAttribute( 'uploadId', uploadId, modelElement );\n\t\t\t\t\tconversionApi.consumable.consume( data.viewItem, { attributes: [ 'data-ck-upload-id' ] } );\n\n\t\t\t\t\tif ( loader && loader.data ) {\n\t\t\t\t\t\tconversionApi.writer.setAttribute( 'uploadStatus', loader.status, modelElement );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, { priority: 'low' } ) );\n\n\t\t// Handle pasted images.\n\t\t// For every image file, a new file loader is created and a placeholder image is\n\t\t// inserted into the content. Then, those images are uploaded once they appear in the model\n\t\t// (see Document#change listener below).\n\t\tthis.listenTo<ViewDocumentClipboardInputEvent>( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n\t\t\t// Skip if non empty HTML data is included.\n\t\t\t// https://github.com/ckeditor/ckeditor5-upload/issues/68\n\t\t\tif ( isHtmlInDataTransfer( data.dataTransfer ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst images = Array.from( data.dataTransfer.files ).filter( file => {\n\t\t\t\t// See https://github.com/ckeditor/ckeditor5-image/pull/254.\n\t\t\t\tif ( !file ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn imageTypes.test( file.type );\n\t\t\t} );\n\n\t\t\tif ( !images.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\t// Set selection to paste target.\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\twriter.setSelection( data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) ) );\n\t\t\t\t}\n\n\t\t\t\teditor.execute( 'uploadImage', { file: images } );\n\t\t\t} );\n\n\t\t\tconst uploadImageCommand = editor.commands.get( 'uploadImage' )!;\n\n\t\t\tif ( !uploadImageCommand.isAccessAllowed ) {\n\t\t\t\tconst notification: Notification = editor.plugins.get( 'Notification' );\n\t\t\t\tconst t = editor.locale.t;\n\n\t\t\t\tnotification.showWarning( t( 'You have no image upload permissions.' ), {\n\t\t\t\t\tnamespace: 'image'\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t// Handle HTML pasted with images with base64 or blob sources.\n\t\t// For every image file, a new file loader is created and a placeholder image is\n\t\t// inserted into the content. Then, those images are uploaded once they appear in the model\n\t\t// (see Document#change listener below).\n\t\tthis.listenTo<ClipboardInputTransformationEvent>( clipboardPipeline, 'inputTransformation', ( evt, data ) => {\n\t\t\tconst fetchableImages = Array.from( editor.editing.view.createRangeIn( data.content ) )\n\t\t\t\t.map( value => value.item as ViewElement )\n\t\t\t\t.filter( viewElement =>\n\t\t\t\t\tisLocalImage( imageUtils, viewElement ) &&\n\t\t\t\t\t!viewElement.getAttribute( 'uploadProcessed' ) )\n\t\t\t\t.map( viewElement => { return { promise: fetchLocalImage( viewElement ), imageElement: viewElement }; } );\n\n\t\t\tif ( !fetchableImages.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst writer = new ViewUpcastWriter( editor.editing.view.document );\n\n\t\t\tfor ( const fetchableImage of fetchableImages ) {\n\t\t\t\t// Set attribute marking that the image was processed already.\n\t\t\t\twriter.setAttribute( 'uploadProcessed', true, fetchableImage.imageElement );\n\n\t\t\t\tconst loader = fileRepository.createLoader( fetchableImage.promise );\n\n\t\t\t\tif ( loader ) {\n\t\t\t\t\twriter.setAttribute( 'src', '', fetchableImage.imageElement );\n\t\t\t\t\twriter.setAttribute( 'uploadId', loader.id, fetchableImage.imageElement );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Prevents from the browser redirecting to the dropped image.\n\t\teditor.editing.view.document.on( 'dragover', ( evt, data ) => {\n\t\t\tdata.preventDefault();\n\t\t} );\n\n\t\t// Upload placeholder images that appeared in the model.\n\t\tdoc.on( 'change', () => {\n\t\t\t// Note: Reversing changes to start with insertions and only then handle removals. If it was the other way around,\n\t\t\t// loaders for **all** images that land in the $graveyard would abort while in fact only those that were **not** replaced\n\t\t\t// by other images should be aborted.\n\t\t\tconst changes = doc.differ.getChanges( { includeChangesInGraveyard: true } ).reverse();\n\t\t\tconst insertedImagesIds = new Set();\n\n\t\t\tfor ( const entry of changes ) {\n\t\t\t\tif ( entry.type == 'insert' && entry.name != '$text' ) {\n\t\t\t\t\tconst item = entry.position.nodeAfter!;\n\t\t\t\t\tconst isInsertedInGraveyard = entry.position.root.rootName == '$graveyard';\n\n\t\t\t\t\tfor ( const imageElement of getImagesFromChangeItem( editor, item ) ) {\n\t\t\t\t\t\t// Check if the image element still has upload id.\n\t\t\t\t\t\tconst uploadId = imageElement.getAttribute( 'uploadId' ) as string;\n\t\t\t\t\t\tconst uploadStatus = imageElement.getAttribute( 'uploadStatus' );\n\n\t\t\t\t\t\t// Check if status is complete to ensure that there were no additional reconversions\n\t\t\t\t\t\t// in the same batch that set the status to 'complete'. It may happen when list item\n\t\t\t\t\t\t// performed refresh of its children (including images) because `uploadStatus` attribute\n\t\t\t\t\t\t// has been changed.\n\t\t\t\t\t\tif ( !uploadId || uploadStatus == 'complete' ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if the image is loaded on this client.\n\t\t\t\t\t\tconst loader = fileRepository.loaders.get( uploadId );\n\n\t\t\t\t\t\tif ( !loader ) {\n\t\t\t\t\t\t\t// If the loader does not exist, it means that the image was already uploaded\n\t\t\t\t\t\t\t// and the loader promise was removed from the registry. In that scenario we need\n\t\t\t\t\t\t\t// to restore response object from the internal map.\n\t\t\t\t\t\t\tif ( !isInsertedInGraveyard && this._uploadedImages.has( uploadId ) ) {\n\t\t\t\t\t\t\t\t// Fire `uploadComplete` to set proper attributes on the image element.\n\t\t\t\t\t\t\t\teditor.model.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'complete', imageElement );\n\n\t\t\t\t\t\t\t\t\tthis.fire<ImageUploadCompleteEvent>( 'uploadComplete', {\n\t\t\t\t\t\t\t\t\t\tdata: this._uploadedImages.get( uploadId )!,\n\t\t\t\t\t\t\t\t\t\timageElement: imageElement as ModelElement\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t// While it makes sense to remove the image from the `_uploadedImages` map here,\n\t\t\t\t\t\t\t\t// it's counterintuitive for the user that pastes image in uploading several times.\n\t\t\t\t\t\t\t\t// It'll work the first time, but the next time the image will be empty because the\n\t\t\t\t\t\t\t\t// `_uploadedImages` no longer contain the response.\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isInsertedInGraveyard ) {\n\t\t\t\t\t\t\t// If the image was inserted to the graveyard for good (**not** replaced by another image),\n\t\t\t\t\t\t\t// only then abort the loading process.\n\t\t\t\t\t\t\tif ( !insertedImagesIds.has( uploadId ) ) {\n\t\t\t\t\t\t\t\t// ... but abort it only if all remain images that share the same loader are in the graveyard too.\n\t\t\t\t\t\t\t\t// This is to prevent situation when we have two images in uploading state and one of them is being\n\t\t\t\t\t\t\t\t// placed in the graveyard (e.g. using undo). The other one should not be aborted.\n\t\t\t\t\t\t\t\tconst allImagesThatShareUploaderInGraveyard = Array\n\t\t\t\t\t\t\t\t\t.from( this._uploadImageElements.get( uploadId )! )\n\t\t\t\t\t\t\t\t\t.every( element => element.root.rootName == '$graveyard' );\n\n\t\t\t\t\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\t\t\t\t\tif ( allImagesThatShareUploaderInGraveyard ) {\n\t\t\t\t\t\t\t\t\tloader.abort();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Remember the upload id of the inserted image. If it acted as a replacement for another\n\t\t\t\t\t\t\t// image (which landed in the $graveyard), the related loader will not be aborted because\n\t\t\t\t\t\t\t// this is still the same image upload.\n\t\t\t\t\t\t\tinsertedImagesIds.add( uploadId );\n\n\t\t\t\t\t\t\t// Keep the mapping between the upload ID and the image model element so the upload\n\t\t\t\t\t\t\t// can later resolve in the context of the correct model element. The model element could\n\t\t\t\t\t\t\t// change for the same upload if one image was replaced by another (e.g. image type was changed),\n\t\t\t\t\t\t\t// so this may also replace an existing mapping.\n\t\t\t\t\t\t\tif ( !this._uploadImageElements.has( uploadId ) ) {\n\t\t\t\t\t\t\t\tthis._uploadImageElements.set( uploadId, new Set( [ imageElement as ModelElement ] ) );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._uploadImageElements.get( uploadId )!.add( imageElement as ModelElement );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( loader.status == 'idle' ) {\n\t\t\t\t\t\t\t\t// If the image was inserted into content and has not been loaded yet, start loading it.\n\t\t\t\t\t\t\t\tthis._readAndUpload( loader );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Set the default handler for feeding the image element with `src` and `srcset` attributes.\n\t\t// Also set the natural `width` and `height` attributes (if not already set).\n\t\tthis.on<ImageUploadCompleteEvent>( 'uploadComplete', ( evt, { imageElement, data } ) => {\n\t\t\tconst urls = data.urls ? data.urls as Record<string, unknown> : data;\n\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\twriter.setAttribute( 'src', urls.default, imageElement );\n\t\t\t\tthis._parseAndSetSrcsetAttributeOnImage( urls, imageElement, writer );\n\t\t\t\timageUtils.setImageNaturalSizeAttributes( imageElement );\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\t// Setup schema to allow uploadId and uploadStatus for images.\n\t\t// Wait for ImageBlockEditing or ImageInlineEditing to register their elements first,\n\t\t// that's why doing this in afterInit() instead of init().\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', {\n\t\t\t\tallowAttributes: [ 'uploadId', 'uploadStatus' ]\n\t\t\t} );\n\n\t\t\tthis._registerConverters( 'imageBlock' );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tschema.extend( 'imageInline', {\n\t\t\t\tallowAttributes: [ 'uploadId', 'uploadStatus' ]\n\t\t\t} );\n\n\t\t\tthis._registerConverters( 'imageInline' );\n\t\t}\n\t}\n\n\t/**\n\t * Reads and uploads an image.\n\t *\n\t * The image is read from the disk and as a Base64-encoded string it is set temporarily to\n\t * `image[src]`. When the image is successfully uploaded, the temporary data is replaced with the target\n\t * image's URL (the URL to the uploaded image on the server).\n\t */\n\tprotected _readAndUpload( loader: FileLoader ): Promise<void> {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst t = editor.locale.t;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst notification = editor.plugins.get( Notification );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageUploadElements = this._uploadImageElements;\n\n\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\tconst elements = imageUploadElements.get( loader.id )!;\n\n\t\t\tfor ( const element of elements ) {\n\t\t\t\twriter.setAttribute( 'uploadStatus', 'reading', element );\n\t\t\t}\n\t\t} );\n\n\t\treturn loader.read()\n\t\t\t.then( () => {\n\t\t\t\tconst promise = loader.upload();\n\n\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\tif ( editor.ui ) {\n\t\t\t\t\teditor.ui.ariaLiveAnnouncer.announce( t( 'Uploading image' ) );\n\t\t\t\t}\n\n\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\t// Force re–paint in Safari. Without it, the image will display with a wrong size.\n\t\t\t\t\t// https://github.com/ckeditor/ckeditor5/issues/1975\n\t\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\t\tif ( env.isSafari ) {\n\t\t\t\t\t\tconst viewFigure = editor.editing.mapper.toViewElement( imageElement )!;\n\t\t\t\t\t\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\t\t\t\t\t\teditor.editing.view.once( 'render', () => {\n\t\t\t\t\t\t\t// Early returns just to be safe. There might be some code ran\n\t\t\t\t\t\t\t// in between the outer scope and this callback.\n\t\t\t\t\t\t\tif ( !viewImg.parent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst domFigure = editor.editing.view.domConverter.mapViewToDom( viewImg.parent ) as HTMLElement | undefined;\n\n\t\t\t\t\t\t\tif ( !domFigure ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst originalDisplay = domFigure.style.display;\n\n\t\t\t\t\t\t\tdomFigure.style.display = 'none';\n\n\t\t\t\t\t\t\t// Make sure this line will never be removed during minification for having \"no effect\".\n\t\t\t\t\t\t\t( domFigure as any )._ckHack = domFigure.offsetHeight;\n\n\t\t\t\t\t\t\tdomFigure.style.display = originalDisplay;\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'uploading', imageElement );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn promise;\n\t\t\t} )\n\t\t\t.then( data => {\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'complete', imageElement );\n\t\t\t\t\t\tthis.fire<ImageUploadCompleteEvent>( 'uploadComplete', { data, imageElement } );\n\t\t\t\t\t}\n\n\t\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\t\tif ( editor.ui ) {\n\t\t\t\t\t\teditor.ui.ariaLiveAnnouncer.announce( t( 'Image upload complete' ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._uploadedImages.set( loader.id, data );\n\t\t\t\t} );\n\n\t\t\t\tclean();\n\t\t\t} )\n\t\t\t.catch( error => {\n\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\tif ( editor.ui ) {\n\t\t\t\t\teditor.ui.ariaLiveAnnouncer.announce( t( 'Error during image upload' ) );\n\t\t\t\t}\n\n\t\t\t\t// If status is not 'error' nor 'aborted' - throw error because it means that something else went wrong,\n\t\t\t\t// it might be generic error and it would be real pain to find what is going on.\n\t\t\t\tif ( loader.status !== 'error' && loader.status !== 'aborted' ) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Might be 'aborted'.\n\t\t\t\tif ( loader.status == 'error' && error ) {\n\t\t\t\t\tnotification.showWarning( error, {\n\t\t\t\t\t\ttitle: t( 'Upload failed' ),\n\t\t\t\t\t\tnamespace: 'upload'\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Permanently remove image from insertion batch.\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\t\t// Handle situation when the image has been removed and then `abort` exception was thrown.\n\t\t\t\t\t\t// See: https://github.com/ckeditor/ckeditor5-commercial/issues/6817\n\t\t\t\t\t\tif ( imageElement.root.rootName !== '$graveyard' ) {\n\t\t\t\t\t\t\twriter.remove( imageElement );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tclean();\n\t\t\t} );\n\n\t\tfunction clean() {\n\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\tfor ( const imageElement of imageUploadElements.get( loader.id )! ) {\n\t\t\t\t\twriter.removeAttribute( 'uploadId', imageElement );\n\t\t\t\t\twriter.removeAttribute( 'uploadStatus', imageElement );\n\t\t\t\t}\n\n\t\t\t\timageUploadElements.delete( loader.id );\n\t\t\t} );\n\n\t\t\tfileRepository.destroyLoader( loader );\n\t\t}\n\t}\n\n\t/**\n\t * Creates the `srcset` attribute based on a given file upload response and sets it as an attribute to a specific image element.\n\t *\n\t * @param data Data object from which `srcset` will be created.\n\t * @param image The image element on which the `srcset` attribute will be set.\n\t */\n\tprotected _parseAndSetSrcsetAttributeOnImage( data: Record<string, unknown>, image: ModelElement, writer: ModelWriter ): void {\n\t\t// Srcset attribute for responsive images support.\n\t\tlet maxWidth = 0;\n\n\t\tconst srcsetAttribute = Object.keys( data )\n\t\t\t// Filter out keys that are not integers.\n\t\t\t.filter( key => {\n\t\t\t\tconst width = parseInt( key, 10 );\n\n\t\t\t\tif ( !isNaN( width ) ) {\n\t\t\t\t\tmaxWidth = Math.max( maxWidth, width );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} )\n\n\t\t\t// Convert each key to srcset entry.\n\t\t\t.map( key => `${ data[ key ] } ${ key }w` )\n\n\t\t\t// Join all entries.\n\t\t\t.join( ', ' );\n\n\t\tif ( srcsetAttribute != '' ) {\n\t\t\tconst attributes: ModelNodeAttributes = {\n\t\t\t\tsrcset: srcsetAttribute\n\t\t\t};\n\n\t\t\tif ( !image.hasAttribute( 'width' ) && !image.hasAttribute( 'height' ) ) {\n\t\t\t\tattributes.width = maxWidth;\n\t\t\t}\n\n\t\t\twriter.setAttributes( attributes, image );\n\t\t}\n\t}\n\n\t/**\n\t * Registers image upload converters.\n\t *\n\t * @param imageType The type of the image.\n\t */\n\tprivate _registerConverters( imageType: 'imageBlock' | 'imageInline' ) {\n\t\tconst { conversion, plugins } = this.editor;\n\n\t\tconst fileRepository = plugins.get( FileRepository );\n\t\tconst imageUtils = plugins.get( ImageUtils );\n\n\t\t// It sets `data-ck-upload-id` attribute on the view image elements that are not fully uploaded.\n\t\t// It avoids the situation when image disappears when it's being moved and upload is not finished yet.\n\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/16967\n\t\tconversion.for( 'dataDowncast' ).add( dispatcher => {\n\t\t\tdispatcher.on<DowncastAttributeEvent>( `attribute:uploadId:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst loader = fileRepository.loaders.get( data.attributeNewValue as string );\n\n\t\t\t\tif ( !loader || !loader.data ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item as ModelElement )!;\n\t\t\t\tconst img = imageUtils.findViewImgElement( viewElement );\n\n\t\t\t\t/* v8 ignore else -- @preserve */\n\t\t\t\tif ( img ) {\n\t\t\t\t\tconversionApi.consumable.consume( data.item, evt.name );\n\t\t\t\t\tconversionApi.writer.setAttribute( 'data-ck-upload-id', loader.id, img );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n/**\n * TODO move this to the clipboard package.\n *\n * Returns `true` if non-empty `text/html` is included in the data transfer.\n */\nexport function isHtmlInDataTransfer( dataTransfer: ViewDataTransfer ): boolean {\n\treturn Array.from( dataTransfer.types ).includes( 'text/html' ) && dataTransfer.getData( 'text/html' ) !== '';\n}\n\nfunction getImagesFromChangeItem( editor: Editor, item: ModelItem ): Array<ModelItem> {\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn Array.from( editor.model.createRangeOn( item ) )\n\t\t.filter( value => imageUtils.isImage( value.item as ModelElement ) )\n\t\t.map( value => value.item );\n}\n\n/**\n * An event fired when an image is uploaded. You can hook into this event to provide\n * custom attributes to the {@link module:engine/model/element~ModelElement image element} based on the data from\n * the server.\n *\n * ```ts\n * const imageUploadEditing = editor.plugins.get( 'ImageUploadEditing' );\n *\n * imageUploadEditing.on( 'uploadComplete', ( evt, { data, imageElement } ) => {\n * \teditor.model.change( writer => {\n * \t\twriter.setAttribute( 'someAttribute', 'foo', imageElement );\n * \t} );\n * } );\n * ```\n *\n * You can also stop the default handler that sets the `src` and `srcset` attributes\n * if you want to provide custom values for these attributes.\n *\n * ```ts\n * imageUploadEditing.on( 'uploadComplete', ( evt, { data, imageElement } ) => {\n * \tevt.stop();\n * } );\n * ```\n *\n * **Note**: This event is fired by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin.\n *\n * @eventName ~ImageUploadEditing#uploadComplete\n * @param data The `uploadComplete` event data.\n */\nexport type ImageUploadCompleteEvent = {\n\tname: 'uploadComplete';\n\targs: [ data: ImageUploadCompleteData];\n};\n\nexport type ImageUploadCompleteData = {\n\n\t/**\n\t * The data coming from the upload adapter.\n\t */\n\tdata: UploadResponse;\n\n\t/**\n\t * The model {@link module:engine/model/element~ModelElement image element} that can be customized.\n\t */\n\timageElement: ModelElement;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageupload\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageUploadUI } from './imageupload/imageuploadui.js';\nimport { ImageUploadProgress } from './imageupload/imageuploadprogress.js';\nimport { ImageUploadEditing } from './imageupload/imageuploadediting.js';\n\n/**\n * The image upload plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload image upload feature} documentation.\n *\n * This plugin does not do anything directly, but it loads a set of specific plugins to enable image uploading:\n *\n * * {@link module:image/imageupload/imageuploadediting~ImageUploadEditing},\n * * {@link module:image/imageupload/imageuploadui~ImageUploadUI},\n * * {@link module:image/imageupload/imageuploadprogress~ImageUploadProgress}.\n */\nexport class ImageUpload extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUpload' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUploadEditing, ImageUploadUI, ImageUploadProgress ]> {\n\t\treturn [ ImageUploadEditing, ImageUploadUI, ImageUploadProgress ];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/ui/imageinserturlview\n */\n\nimport {\n\tView,\n\tLabeledFieldView,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\ttype InputTextView\n} from '@ckeditor/ckeditor5-ui';\nimport { KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The insert an image via URL view.\n *\n * See {@link module:image/imageinsert/imageinsertviaurlui~ImageInsertViaUrlUI}.\n *\n * @internal\n */\nexport class ImageInsertUrlView extends View {\n\t/**\n\t * The URL input field view.\n\t */\n\tpublic urlInputView: LabeledFieldView<InputTextView>;\n\n\t/**\n\t * The value of the URL input.\n\t *\n\t * @observable\n\t */\n\tdeclare public imageURLInputValue: string;\n\n\t/**\n\t * Observable property used to alter labels while some image is selected and when it is not.\n\t *\n\t * @observable\n\t */\n\tdeclare public isImageSelected: boolean;\n\n\t/**\n\t * Observable property indicating whether the form interactive elements should be enabled.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Creates a view for the dropdown panel of {@link module:image/imageinsert/imageinsertui~ImageInsertUI}.\n\t *\n\t * @param locale The localization services instance.\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.set( 'imageURLInputValue', '' );\n\t\tthis.set( 'isImageSelected', false );\n\t\tthis.set( 'isEnabled', true );\n\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\tthis.urlInputView = this._createUrlInputView();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-image-insert-url'\n\t\t\t\t],\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tthis.urlInputView,\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-image-insert-url__action-row'\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates the {@link #urlInputView}.\n\t */\n\tprivate _createUrlInputView() {\n\t\tconst locale = this.locale!;\n\t\tconst t = locale.t;\n\t\tconst urlInputView = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\turlInputView.bind( 'label' ).to( this, 'isImageSelected',\n\t\t\tvalue => value ? t( 'Update image URL' ) : t( 'Insert image via URL' )\n\t\t);\n\n\t\turlInputView.bind( 'isEnabled' ).to( this );\n\n\t\turlInputView.fieldView.inputMode = 'url';\n\t\turlInputView.fieldView.placeholder = 'https://example.com/image.png';\n\n\t\turlInputView.fieldView.bind( 'value' ).to( this, 'imageURLInputValue', ( value: string ) => value || '' );\n\t\turlInputView.fieldView.on( 'input', () => {\n\t\t\tthis.imageURLInputValue = urlInputView.fieldView.element!.value.trim();\n\t\t} );\n\n\t\treturn urlInputView;\n\t}\n\n\t/**\n\t * Focuses the view.\n\t */\n\tpublic focus(): void {\n\t\tthis.urlInputView.focus();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert/imageinsertviaurlui\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ButtonView, Dialog, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';\nimport { IconImageUrl } from '@ckeditor/ckeditor5-icons';\n\nimport { ImageInsertUI } from './imageinsertui.js';\nimport { ImageInsertUrlView } from './ui/imageinserturlview.js';\n\n/**\n * The image insert via URL plugin (UI part).\n *\n * The plugin introduces two UI components to the {@link module:ui/componentfactory~ComponentFactory UI component factory}:\n *\n * * the `'insertImageViaUrl'` toolbar button,\n * * the `'menuBar:insertImageViaUrl'` menu bar component.\n *\n * It also integrates with the `insertImage` toolbar component and `menuBar:insertImage` menu component, which are default components\n * through which inserting image via URL is available.\n */\nexport class ImageInsertViaUrlUI extends Plugin {\n\tprivate _imageInsertUI!: ImageInsertUI;\n\tprivate _formView?: ImageInsertUrlView;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsertViaUrlUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageInsertUI, Dialog ]> {\n\t\treturn [ ImageInsertUI, Dialog ];\n\t}\n\n\tpublic init(): void {\n\t\tthis.editor.ui.componentFactory.add( 'insertImageViaUrl', () => this._createToolbarButton() );\n\t\tthis.editor.ui.componentFactory.add( 'menuBar:insertImageViaUrl', () => this._createMenuBarButton( 'standalone' ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._imageInsertUI = this.editor.plugins.get( 'ImageInsertUI' );\n\n\t\tthis._imageInsertUI.registerIntegration( {\n\t\t\tname: 'url',\n\t\t\tobservable: () => this.editor.commands.get( 'insertImage' )!,\n\t\t\tbuttonViewCreator: () => this._createToolbarButton(),\n\t\t\tformViewCreator: () => this._createDropdownButton(),\n\t\t\tmenuBarButtonViewCreator: isOnly => this._createMenuBarButton( isOnly ? 'insertOnly' : 'insertNested' )\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the base for various kinds of the button component provided by this feature.\n\t */\n\tprivate _createInsertUrlButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>(\n\t\tButtonClass: T\n\t): InstanceType<T> {\n\t\tconst button = new ButtonClass( this.editor.locale ) as InstanceType<T>;\n\n\t\tbutton.icon = IconImageUrl;\n\t\tbutton.on( 'execute', () => {\n\t\t\tthis._showModal();\n\t\t} );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a simple toolbar button, with an icon and a tooltip.\n\t */\n\tprivate _createToolbarButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton( ButtonView );\n\n\t\tbutton.tooltip = true;\n\t\tbutton.bind( 'label' ).to(\n\t\t\tthis._imageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tisImageSelected => isImageSelected ? t( 'Update image URL' ) : t( 'Insert image via URL' )\n\t\t);\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the dropdown view, with an icon, text and no tooltip.\n\t */\n\tprivate _createDropdownButton(): ButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton( ButtonView );\n\n\t\tbutton.withText = true;\n\t\tbutton.bind( 'label' ).to(\n\t\t\tthis._imageInsertUI,\n\t\t\t'isImageSelected',\n\t\t\tisImageSelected => isImageSelected ? t( 'Update image URL' ) : t( 'Insert via URL' )\n\t\t);\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a button for the menu bar.\n\t */\n\tprivate _createMenuBarButton( type: 'standalone' | 'insertOnly' | 'insertNested' ): MenuBarMenuListItemButtonView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst button = this._createInsertUrlButton( MenuBarMenuListItemButtonView );\n\n\t\tbutton.withText = true;\n\n\t\tswitch ( type ) {\n\t\t\tcase 'standalone':\n\t\t\t\tbutton.label = t( 'Image via URL' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertOnly':\n\t\t\t\tbutton.label = t( 'Image' );\n\t\t\t\tbreak;\n\t\t\tcase 'insertNested':\n\t\t\t\tbutton.label = t( 'Via URL' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates the form view used to submit the image URL.\n\t */\n\tprivate _createInsertUrlView(): ImageInsertUrlView {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\n\t\tconst replaceImageSourceCommand = editor.commands.get( 'replaceImageSource' )!;\n\t\tconst insertImageCommand = editor.commands.get( 'insertImage' )!;\n\n\t\tconst imageInsertUrlView = new ImageInsertUrlView( locale );\n\n\t\timageInsertUrlView.bind( 'isImageSelected' ).to( this._imageInsertUI );\n\t\timageInsertUrlView.bind( 'isEnabled' ).toMany( [ insertImageCommand, replaceImageSourceCommand ], 'isEnabled', ( ...isEnabled ) => (\n\t\t\tisEnabled.some( isCommandEnabled => isCommandEnabled )\n\t\t) );\n\n\t\treturn imageInsertUrlView;\n\t}\n\n\t/**\n\t * Shows the insert image via URL form view in a modal.\n\t */\n\tprivate _showModal() {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst t = locale.t;\n\t\tconst dialog = editor.plugins.get( 'Dialog' );\n\n\t\tif ( !this._formView ) {\n\t\t\tthis._formView = this._createInsertUrlView();\n\t\t\tthis._formView.on( 'submit', () => this._handleSave() );\n\t\t}\n\n\t\tconst replaceImageSourceCommand = editor.commands.get( 'replaceImageSource' )!;\n\t\tthis._formView.imageURLInputValue = replaceImageSourceCommand.value || '';\n\n\t\tdialog.show( {\n\t\t\tid: 'insertImageViaUrl',\n\t\t\ttitle: t( 'Image via URL' ),\n\t\t\tisModal: true,\n\t\t\tcontent: this._formView,\n\t\t\tactionButtons: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Cancel' ),\n\t\t\t\t\twithText: true,\n\t\t\t\t\tonExecute: () => dialog.hide()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this._imageInsertUI.isImageSelected ? t( 'Save' ) : t( 'Insert' ),\n\t\t\t\t\tclass: 'ck-button-action',\n\t\t\t\t\twithText: true,\n\t\t\t\t\tonExecute: () => this._handleSave()\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Executes appropriate command depending on selection and form value.\n\t */\n\tprivate _handleSave() {\n\t\tconst replaceImageSourceCommand = this.editor.commands.get( 'replaceImageSource' )!;\n\n\t\t// If an image element is currently selected, we want to replace its source attribute (instead of inserting a new image).\n\t\t// We detect if an image is selected by checking `replaceImageSource` command state.\n\t\tif ( replaceImageSourceCommand.isEnabled ) {\n\t\t\tthis.editor.execute( 'replaceImageSource', { source: this._formView!.imageURLInputValue } );\n\t\t} else {\n\t\t\tthis.editor.execute( 'insertImage', { source: this._formView!.imageURLInputValue } );\n\t\t}\n\n\t\tthis.editor.plugins.get( 'Dialog' ).hide();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsertviaurl\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\nimport { ImageInsertViaUrlUI } from './imageinsert/imageinsertviaurlui.js';\n\n/**\n * The image insert via URL plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-inserting\n * Insert images via source URL} documentation.\n *\n * This plugin does not do anything directly, but it loads a set of specific plugins\n * to enable image inserting via implemented integrations:\n *\n * * {@link module:image/imageinsert/imageinsertui~ImageInsertUI},\n */\nexport class ImageInsertViaUrl extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsertViaUrl' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageInsertViaUrlUI, ImageInsertUI ]> {\n\t\treturn [ ImageInsertViaUrlUI, ImageInsertUI ];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageinsert\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageUpload } from './imageupload.js';\nimport { ImageInsertViaUrl } from './imageinsertviaurl.js';\nimport { ImageInsertUI } from './imageinsert/imageinsertui.js';\n\n/**\n * The image insert plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}\n * and {@glink features/images/images-inserting Insert images via source URL} documentation.\n *\n * This plugin does not do anything directly, but it loads a set of specific plugins\n * to enable image uploading or inserting via implemented integrations:\n *\n * * {@link module:image/imageupload~ImageUpload}\n * * {@link module:image/imageinsert/imageinsertui~ImageInsertUI}\n */\nexport class ImageInsert extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInsert' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUpload, ImageInsertViaUrl, ImageInsertUI ]> {\n\t\treturn [ ImageUpload, ImageInsertViaUrl, ImageInsertUI ];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/resizeimagecommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The resize image command. Currently, it only supports the width attribute.\n */\nexport class ResizeImageCommand extends Command {\n\t/**\n\t * Desired image width and height.\n\t */\n\tdeclare public value: undefined | null | {\n\t\twidth: string | null;\n\t\theight: string | null;\n\t};\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( editor.model.document.selection );\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( !element || !element.hasAttribute( 'resizedWidth' ) ) {\n\t\t\tthis.value = null;\n\t\t} else {\n\t\t\tthis.value = {\n\t\t\t\twidth: element.getAttribute( 'resizedWidth' ) as string,\n\t\t\t\theight: null\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * ```ts\n\t * // Sets the width to 50%:\n\t * editor.execute( 'resizeImage', { width: '50%' } );\n\t *\n\t * // Removes the width attribute:\n\t * editor.execute( 'resizeImage', { width: null } );\n\t * ```\n\t *\n\t * @param options\n\t * @param options.width The new width of the image.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { width: string | null } ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\tthis.value = {\n\t\t\twidth: options.width,\n\t\t\theight: null\n\t\t};\n\n\t\tif ( imageElement ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setAttribute( 'resizedWidth', options.width, imageElement );\n\t\t\t\twriter.removeAttribute( 'resizedHeight', imageElement );\n\t\t\t\timageUtils.setImageNaturalSizeAttributes( imageElement );\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imageresizeediting\n */\n\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\nimport { type Editor, Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageUtils } from '../imageutils.js';\nimport { ResizeImageCommand } from './resizeimagecommand.js';\nimport { widthAndHeightStylesAreBothSet } from '../image/utils.js';\n\n/**\n * The image resize editing feature.\n *\n * It adds the ability to resize each image using handles or manually by\n * {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n */\nexport class ImageResizeEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'IR';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isPremiumPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image', {\n\t\t\tresizeUnit: '%',\n\t\t\tresizeOptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:original',\n\t\t\t\t\tvalue: null,\n\t\t\t\t\ticon: 'original'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:custom',\n\t\t\t\t\tvalue: 'custom',\n\t\t\t\t\ticon: 'custom'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:25',\n\t\t\t\t\tvalue: '25',\n\t\t\t\t\ticon: 'small'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:50',\n\t\t\t\t\tvalue: '50',\n\t\t\t\t\ticon: 'medium'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'resizeImage:75',\n\t\t\t\t\tvalue: '75',\n\t\t\t\t\ticon: 'large'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst resizeImageCommand = new ResizeImageCommand( editor );\n\n\t\tthis._registerConverters( 'imageBlock' );\n\t\tthis._registerConverters( 'imageInline' );\n\n\t\t// Register `resizeImage` command and add `imageResize` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'resizeImage', resizeImageCommand );\n\t\teditor.commands.add( 'imageResize', resizeImageCommand );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._registerSchema();\n\t}\n\n\tprivate _registerSchema(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: [ 'resizedWidth', 'resizedHeight' ] } );\n\t\t\tschema.setAttributeProperties( 'resizedWidth', { isFormatting: true } );\n\t\t\tschema.setAttributeProperties( 'resizedHeight', { isFormatting: true } );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tschema.extend( 'imageInline', { allowAttributes: [ 'resizedWidth', 'resizedHeight' ] } );\n\t\t\tschema.setAttributeProperties( 'resizedWidth', { isFormatting: true } );\n\t\t\tschema.setAttributeProperties( 'resizedHeight', { isFormatting: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers image resize converters.\n\t *\n\t * @param imageType The type of the image.\n\t */\n\tprivate _registerConverters( imageType: 'imageBlock' | 'imageInline' ) {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Dedicated converter to propagate image's attribute to the img tag.\n\t\teditor.conversion.for( 'downcast' ).add( dispatcher =>\n\t\t\tdispatcher.on( `attribute:resizedWidth:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewImg = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setStyle( 'width', data.attributeNewValue, viewImg );\n\t\t\t\t\tviewWriter.addClass( 'image_resized', viewImg );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeStyle( 'width', viewImg );\n\t\t\t\t\tviewWriter.removeClass( 'image_resized', viewImg );\n\t\t\t\t}\n\t\t\t} )\n\t\t);\n\n\t\teditor.conversion.for( 'dataDowncast' ).attributeToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tname: imageType,\n\t\t\t\tkey: 'resizedHeight'\n\t\t\t},\n\t\t\tview: modelAttributeValue => ( {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t'height': modelAttributeValue\n\t\t\t\t}\n\t\t\t} )\n\t\t} );\n\n\t\teditor.conversion.for( 'editingDowncast' ).add( dispatcher =>\n\t\t\tdispatcher.on( `attribute:resizedHeight:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewImg = conversionApi.mapper.toViewElement( data.item );\n\t\t\t\tconst target = imageType === 'imageInline' ? imageUtils.findViewImgElement( viewImg ) : viewImg;\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setStyle( 'height', data.attributeNewValue, target );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeStyle( 'height', target );\n\t\t\t\t}\n\t\t\t} )\n\t\t);\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: imageType === 'imageBlock' ? 'figure' : 'img',\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\twidth: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'resizedWidth',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn viewElement.getStyle( 'width' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: imageType === 'imageBlock' ? 'figure' : 'img',\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\theight: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'resizedHeight',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\t\tif ( widthAndHeightStylesAreBothSet( viewElement ) ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn viewElement.getStyle( 'height' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).add( dispatcher => {\n\t\t\tdispatcher.on( `element:${ imageType === 'imageBlock' ? 'figure' : 'img' }`, ( evt, data, conversionApi ) => {\n\t\t\t\tconversionApi.consumable.consume( data.viewItem, { classes: [ 'image_resized' ] } );\n\t\t\t} );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imageresizebuttons\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tButtonView,\n\tDropdownButtonView,\n\tUIModel,\n\tcreateDropdown,\n\taddListToDropdown,\n\ttype ListDropdownItemDefinition\n} from '@ckeditor/ckeditor5-ui';\nimport { CKEditorError, Collection, type Locale } from '@ckeditor/ckeditor5-utils';\nimport {\n\tIconObjectSizeCustom,\n\tIconObjectSizeFull,\n\tIconObjectSizeLarge,\n\tIconObjectSizeMedium,\n\tIconObjectSizeSmall\n} from '@ckeditor/ckeditor5-icons';\n\nimport { ImageResizeEditing } from './imageresizeediting.js';\n\nimport { type ResizeImageCommand } from './resizeimagecommand.js';\nimport type { ImageResizeOption } from '../imageconfig.js';\n\nconst RESIZE_ICONS = /* #__PURE__ */ ( () => ( {\n\tsmall: IconObjectSizeSmall,\n\tmedium: IconObjectSizeMedium,\n\tlarge: IconObjectSizeLarge,\n\tcustom: IconObjectSizeCustom,\n\toriginal: IconObjectSizeFull\n} ) )();\n\n/**\n * The image resize buttons plugin.\n *\n * It adds a possibility to resize images using the toolbar dropdown or individual buttons, depending on the plugin configuration.\n */\nexport class ImageResizeButtons extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageResizeEditing ]> {\n\t\treturn [ ImageResizeEditing ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeButtons' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The resize unit.\n\t * @default '%'\n\t */\n\tprivate readonly _resizeUnit: 'px' | '%';\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._resizeUnit = editor.config.get( 'image.resizeUnit' )!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst options = editor.config.get( 'image.resizeOptions' )!;\n\t\tconst command: ResizeImageCommand = editor.commands.get( 'resizeImage' )!;\n\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\tfor ( const option of options ) {\n\t\t\tthis._registerImageResizeButton( option );\n\t\t}\n\n\t\tthis._registerImageResizeDropdown( options );\n\t}\n\n\t/**\n\t * A helper function that creates a standalone button component for the plugin.\n\t *\n\t * @param option A model of the resize option.\n\t */\n\tprivate _registerImageResizeButton( option: ImageResizeOption ): void {\n\t\tconst editor = this.editor;\n\t\tconst { name, value, icon } = option;\n\n\t\teditor.ui.componentFactory.add( name, locale => {\n\t\t\tconst button = new ButtonView( locale );\n\t\t\tconst command: ResizeImageCommand = editor.commands.get( 'resizeImage' )!;\n\t\t\tconst labelText = this._getOptionLabelValue( option, true );\n\n\t\t\tif ( !RESIZE_ICONS[ icon as keyof typeof RESIZE_ICONS ] ) {\n\t\t\t\t/**\n\t\t\t\t * When configuring {@link module:image/imageconfig~ImageConfig#resizeOptions `config.image.resizeOptions`} for standalone\n\t\t\t\t * buttons, a valid `icon` token must be set for each option.\n\t\t\t\t *\n\t\t\t\t * See all valid options described in the\n\t\t\t\t * {@link module:image/imageconfig~ImageResizeOption plugin configuration}.\n\t\t\t\t *\n\t\t\t\t * @error imageresizebuttons-missing-icon\n\t\t\t\t * @param {module:image/imageconfig~ImageResizeOption} option Invalid image resize option.\n\t\t\t\t*/\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'imageresizebuttons-missing-icon',\n\t\t\t\t\teditor,\n\t\t\t\t\toption\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbutton.set( {\n\t\t\t\t// Use the `label` property for a verbose description (because of ARIA).\n\t\t\t\tlabel: labelText,\n\t\t\t\ticon: RESIZE_ICONS[ icon as keyof typeof RESIZE_ICONS ],\n\t\t\t\ttooltip: labelText,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Bind button to the command.\n\t\t\tbutton.bind( 'isEnabled' ).to( this );\n\n\t\t\tif ( editor.plugins.has( 'ImageCustomResizeUI' ) && isCustomImageResizeOption( option ) ) {\n\t\t\t\tconst customResizeUI = editor.plugins.get( 'ImageCustomResizeUI' );\n\n\t\t\t\tthis.listenTo( button, 'execute', () => {\n\t\t\t\t\tcustomResizeUI._showForm( this._resizeUnit );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst optionValueWithUnit = value ? value + this._resizeUnit : null;\n\n\t\t\t\tbutton.bind( 'isOn' ).to(\n\t\t\t\t\tcommand, 'value',\n\t\t\t\t\tcommand, 'isEnabled',\n\t\t\t\t\tgetIsOnButtonCallback( optionValueWithUnit )\n\t\t\t\t);\n\n\t\t\t\tthis.listenTo( button, 'execute', () => {\n\t\t\t\t\teditor.execute( 'resizeImage', { width: optionValueWithUnit } );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn button;\n\t\t} );\n\t}\n\n\t/**\n\t * A helper function that creates a dropdown component for the plugin containing all the resize options defined in\n\t * the editor configuration.\n\t *\n\t * @param options An array of configured options.\n\t */\n\tprivate _registerImageResizeDropdown( options: Array<ImageResizeOption> ): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst originalSizeOption = options.find( option => !option.value )!;\n\n\t\tconst componentCreator = ( locale: Locale ) => {\n\t\t\tconst command: ResizeImageCommand = editor.commands.get( 'resizeImage' )!;\n\t\t\tconst dropdownView = createDropdown( locale, DropdownButtonView );\n\t\t\tconst dropdownButton: typeof dropdownView.buttonView & { commandValue?: string | null } = dropdownView.buttonView;\n\t\t\tconst accessibleLabel = t( 'Resize image' );\n\n\t\t\tdropdownButton.set( {\n\t\t\t\ttooltip: accessibleLabel,\n\t\t\t\tcommandValue: originalSizeOption.value,\n\t\t\t\ticon: RESIZE_ICONS.medium,\n\t\t\t\tisToggleable: true,\n\t\t\t\tlabel: this._getOptionLabelValue( originalSizeOption ),\n\t\t\t\twithText: true,\n\t\t\t\tclass: 'ck-resize-image-button',\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\tariaLabelledBy: undefined\n\t\t\t} );\n\n\t\t\tdropdownButton.bind( 'label' ).to( command, 'value', commandValue => {\n\t\t\t\tif ( commandValue && commandValue.width ) {\n\t\t\t\t\treturn commandValue.width;\n\t\t\t\t} else {\n\t\t\t\t\treturn this._getOptionLabelValue( originalSizeOption );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdropdownView.bind( 'isEnabled' ).to( this );\n\n\t\t\taddListToDropdown( dropdownView, () => this._getResizeDropdownListItemDefinitions( options, command ), {\n\t\t\t\tariaLabel: t( 'Image resize list' ),\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\tif ( 'onClick' in evt.source ) {\n\t\t\t\t\t( evt.source as any ).onClick();\n\t\t\t\t} else {\n\t\t\t\t\teditor.execute( ( evt.source as any ).commandName, { width: ( evt.source as any ).commandValue } );\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t};\n\n\t\t// Register `resizeImage` dropdown and add `imageResize` dropdown as an alias for backward compatibility.\n\t\teditor.ui.componentFactory.add( 'resizeImage', componentCreator );\n\t\teditor.ui.componentFactory.add( 'imageResize', componentCreator );\n\t}\n\n\t/**\n\t * A helper function for creating an option label value string.\n\t *\n\t * @param option A resize option object.\n\t * @param forTooltip An optional flag for creating a tooltip label.\n\t * @returns A user-defined label combined from the numeric value and the resize unit or the default label\n\t * for reset options (`Original`).\n\t */\n\tprivate _getOptionLabelValue( option: ImageResizeOption, forTooltip: boolean = false ): string {\n\t\tconst t = this.editor.t;\n\n\t\tif ( option.label ) {\n\t\t\treturn option.label;\n\t\t} else if ( forTooltip ) {\n\t\t\tif ( isCustomImageResizeOption( option ) ) {\n\t\t\t\treturn t( 'Custom image size' );\n\t\t\t} else if ( option.value ) {\n\t\t\t\treturn t( 'Resize image to %0', option.value + this._resizeUnit );\n\t\t\t} else {\n\t\t\t\treturn t( 'Resize image to the original size' );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( isCustomImageResizeOption( option ) ) {\n\t\t\t\treturn t( 'Custom' );\n\t\t\t} else if ( option.value ) {\n\t\t\t\treturn option.value + this._resizeUnit;\n\t\t\t} else {\n\t\t\t\treturn t( 'Original' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * A helper function that parses the resize options and returns list item definitions ready for use in the dropdown.\n\t *\n\t * @param options The resize options.\n\t * @param command The resize image command.\n\t * @returns Dropdown item definitions.\n\t */\n\tprivate _getResizeDropdownListItemDefinitions(\n\t\toptions: Array<ImageResizeOption>,\n\t\tcommand: ResizeImageCommand\n\t): Collection<ListDropdownItemDefinition> {\n\t\tconst { editor } = this;\n\t\tconst itemDefinitions = new Collection<ListDropdownItemDefinition>();\n\n\t\tconst optionsWithSerializedValues = options.map( option => {\n\t\t\tif ( isCustomImageResizeOption( option ) ) {\n\t\t\t\treturn {\n\t\t\t\t\t...option,\n\t\t\t\t\tvalueWithUnits: 'custom'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( !option.value ) {\n\t\t\t\treturn {\n\t\t\t\t\t...option,\n\t\t\t\t\tvalueWithUnits: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...option,\n\t\t\t\tvalueWithUnits: `${ option.value }${ this._resizeUnit }`\n\t\t\t};\n\t\t} );\n\n\t\tfor ( const option of optionsWithSerializedValues ) {\n\t\t\tlet definition: ListDropdownItemDefinition | null;\n\n\t\t\tif ( editor.plugins.has( 'ImageCustomResizeUI' ) && isCustomImageResizeOption( option ) ) {\n\t\t\t\tconst customResizeUI = editor.plugins.get( 'ImageCustomResizeUI' );\n\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: new UIModel( {\n\t\t\t\t\t\tlabel: this._getOptionLabelValue( option ),\n\t\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tcustomResizeUI._showForm( this._resizeUnit );\n\t\t\t\t\t\t}\n\t\t\t\t\t} )\n\t\t\t\t};\n\n\t\t\t\tconst allDropdownValues = Object.values( optionsWithSerializedValues ).map( option => option.valueWithUnits );\n\n\t\t\t\tdefinition.model.bind( 'isOn' ).to(\n\t\t\t\t\tcommand, 'value',\n\t\t\t\t\tcommand, 'isEnabled',\n\t\t\t\t\tgetIsOnCustomButtonCallback( allDropdownValues )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdefinition = {\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: new UIModel( {\n\t\t\t\t\t\tcommandName: 'resizeImage',\n\t\t\t\t\t\tcommandValue: option.valueWithUnits,\n\t\t\t\t\t\tlabel: this._getOptionLabelValue( option ),\n\t\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\t\twithText: true,\n\t\t\t\t\t\ticon: null\n\t\t\t\t\t} )\n\t\t\t\t};\n\n\t\t\t\tdefinition.model.bind( 'isOn' ).to(\n\t\t\t\t\tcommand, 'value',\n\t\t\t\t\tcommand, 'isEnabled',\n\t\t\t\t\tgetIsOnButtonCallback( option.valueWithUnits )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdefinition.model.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\t\titemDefinitions.add( definition );\n\t\t}\n\n\t\treturn itemDefinitions;\n\t}\n}\n\n/**\n * A helper that checks if provided option triggers custom resize balloon.\n */\nfunction isCustomImageResizeOption( option: ImageResizeOption ) {\n\treturn option.value === 'custom';\n}\n\n/**\n * A helper function for setting the `isOn` state of buttons in value bindings.\n */\nfunction getIsOnButtonCallback( value: string | null ) {\n\treturn ( commandValue: ResizeImageCommand['value'], isEnabled: boolean ): boolean => {\n\t\tconst objectCommandValue = commandValue as null | undefined | { width: string | null };\n\n\t\tif ( objectCommandValue === undefined || !isEnabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( value === null && objectCommandValue === value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn objectCommandValue !== null && objectCommandValue.width === value;\n\t};\n}\n\n/**\n * A helper function for setting the `isOn` state of custom size button in value bindings.\n */\nfunction getIsOnCustomButtonCallback( allDropdownValues: Array<string | null> ) {\n\treturn ( commandValue: ResizeImageCommand['value'], isEnabled: boolean ): boolean => !allDropdownValues.some(\n\t\tdropdownValue => getIsOnButtonCallback( dropdownValue )( commandValue, isEnabled )\n\t);\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imageresizehandles\n */\n\nimport type { ModelElement, ViewElement } from '@ckeditor/ckeditor5-engine';\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { WidgetResize } from '@ckeditor/ckeditor5-widget';\nimport { ImageUtils } from '../imageutils.js';\n\nimport { ImageLoadObserver, type ImageLoadedEvent } from '../image/imageloadobserver.js';\nimport { type ResizeImageCommand } from './resizeimagecommand.js';\n\nconst RESIZABLE_IMAGES_CSS_SELECTOR =\n\t'figure.image.ck-widget > img,' +\n\t'figure.image.ck-widget > picture > img,' +\n\t'figure.image.ck-widget > a > img,' +\n\t'figure.image.ck-widget > a > picture > img,' +\n\t'span.image-inline.ck-widget > img,' +\n\t'span.image-inline.ck-widget > picture > img';\n\nconst RESIZED_IMAGE_CLASS = 'image_resized';\n\n/**\n * The image resize by handles feature.\n *\n * It adds the ability to resize each image using handles or manually by\n * {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n */\nexport class ImageResizeHandles extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ WidgetResize, ImageUtils ]> {\n\t\treturn [ WidgetResize, ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeHandles' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst command: ResizeImageCommand = this.editor.commands.get( 'resizeImage' )!;\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\tthis._setupResizerCreator();\n\t}\n\n\t/**\n\t * Attaches the listeners responsible for creating a resizer for each image, except for images inside the HTML embed preview.\n\t */\n\tprivate _setupResizerCreator(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\teditingView.addObserver( ImageLoadObserver );\n\n\t\tthis.listenTo<ImageLoadedEvent>( editingView.document, 'imageLoaded', ( evt, domEvent ) => {\n\t\t\t// The resizer must be attached only to images loaded by the `ImageInsert`, `ImageUpload` or `LinkImage` plugins.\n\t\t\tif ( !( domEvent.target as HTMLElement ).matches( RESIZABLE_IMAGES_CSS_SELECTOR ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst domConverter = editor.editing.view.domConverter;\n\t\t\tconst imageView = domConverter.domToView( domEvent.target as HTMLElement ) as ViewElement;\n\t\t\tconst widgetView = imageUtils.getImageWidgetFromImageView( imageView )!;\n\t\t\tlet resizer = this.editor.plugins.get( WidgetResize ).getResizerByViewElement( widgetView );\n\n\t\t\tif ( resizer ) {\n\t\t\t\t// There are rare cases when the image will be triggered multiple times for the same widget, e.g. when\n\t\t\t\t// the image's source was changed after upload (https://github.com/ckeditor/ckeditor5/pull/8108#issuecomment-708302992).\n\t\t\t\tresizer.redraw();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mapper = editor.editing.mapper;\n\t\t\tconst imageModel = mapper.toModelElement( widgetView )!;\n\n\t\t\tresizer = editor.plugins\n\t\t\t\t.get( WidgetResize )\n\t\t\t\t.attachTo( {\n\t\t\t\t\tunit: editor.config.get( 'image.resizeUnit' )!,\n\n\t\t\t\t\tmodelElement: imageModel,\n\t\t\t\t\tviewElement: widgetView,\n\t\t\t\t\teditor,\n\n\t\t\t\t\tgetHandleHost( domWidgetElement ) {\n\t\t\t\t\t\treturn domWidgetElement.querySelector( 'img' )!;\n\t\t\t\t\t},\n\t\t\t\t\tgetResizeHost() {\n\t\t\t\t\t\treturn domConverter.mapViewToDom( mapper.toViewElement( imageModel as ModelElement )! ) as HTMLElement;\n\t\t\t\t\t},\n\n\t\t\t\t\tisCentered() {\n\t\t\t\t\t\tconst imageStyle = imageModel.getAttribute( 'imageStyle' );\n\n\t\t\t\t\t\treturn imageStyle == 'alignCenter';\n\t\t\t\t\t},\n\n\t\t\t\t\tonCommit( newValue ) {\n\t\t\t\t\t\t// Get rid of the CSS class in case the command execution that follows is unsuccessful\n\t\t\t\t\t\t// (e.g. Track Changes can override it and the new dimensions will not apply). Otherwise,\n\t\t\t\t\t\t// the presence of the class and the absence of the width style will cause it to take 100%\n\t\t\t\t\t\t// of the horizontal space.\n\t\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\t\twriter.removeClass( RESIZED_IMAGE_CLASS, widgetView );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\teditor.execute( 'resizeImage', { width: newValue } );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tresizer.on( 'updateSize', () => {\n\t\t\t\tif ( !widgetView.hasClass( RESIZED_IMAGE_CLASS ) ) {\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( RESIZED_IMAGE_CLASS, widgetView );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tconst target = imageModel.name === 'imageInline' ? imageView : widgetView;\n\n\t\t\t\tif ( target.getStyle( 'height' ) ) {\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.removeStyle( 'height', target );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tresizer.bind( 'isEnabled' ).to( this );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/utils/getselectedimageeditornodes\n */\n\nimport type { ViewElement, ModelElement } from '@ckeditor/ckeditor5-engine';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\n\n/**\n * Finds model, view and DOM element for selected image element. Returns `null` if there is no image selected.\n *\n * @param editor Editor instance.\n * @internal\n */\nexport function getSelectedImageEditorNodes( editor: Editor ): ImageEditorNodes | null {\n\tconst { editing } = editor;\n\n\tconst imageUtils = editor.plugins.get( 'ImageUtils' );\n\tconst imageModelElement = imageUtils.getClosestSelectedImageElement( editor.model.document.selection );\n\n\tif ( !imageModelElement ) {\n\t\treturn null;\n\t}\n\n\tconst imageViewElement = editing.mapper.toViewElement( imageModelElement )!;\n\tconst imageDOMElement = editing.view.domConverter.mapViewToDom( imageViewElement )!;\n\n\treturn {\n\t\tmodel: imageModelElement,\n\t\tview: imageViewElement,\n\t\tdom: imageDOMElement\n\t};\n}\n\n/**\n * @internal;\n */\ntype ImageEditorNodes = {\n\tmodel: ModelElement;\n\tview: ViewElement;\n\tdom: HTMLElement;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/utils/getselectedimagewidthinunits\n */\n\nimport { Rect, _tryCastDimensionsToUnit, _tryParseDimensionWithUnit, type _DimensionWithUnit } from '@ckeditor/ckeditor5-utils';\n\nimport { calculateResizeHostAncestorWidth } from '@ckeditor/ckeditor5-widget';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport { getSelectedImageEditorNodes } from './getselectedimageeditornodes.js';\n\n/**\n * Returns image width in specified units. It is width of image after resize.\n *\n * \t* If image is not selected or command is disabled then `null` will be returned.\n * \t* If image is not fully loaded (and it is impossible to determine its natural size) then `null` will be returned.\n *\t* If `targetUnit` percentage is passed then it will return width percentage of image related to its accessors.\n *\n * @param editor Editor instance.\n * @param targetUnit Unit in which dimension will be returned.\n * @returns Parsed image width after resize (with unit).\n * @internal\n */\nexport function getSelectedImageWidthInUnits( editor: Editor, targetUnit: string ): _DimensionWithUnit | null {\n\tconst imageNodes = getSelectedImageEditorNodes( editor );\n\n\tif ( !imageNodes ) {\n\t\treturn null;\n\t}\n\n\tconst parsedResizedWidth = _tryParseDimensionWithUnit(\n\t\timageNodes.model.getAttribute( 'resizedWidth' ) as string || null\n\t);\n\n\tif ( !parsedResizedWidth ) {\n\t\treturn null;\n\t}\n\n\tif ( parsedResizedWidth.unit === targetUnit ) {\n\t\treturn parsedResizedWidth;\n\t}\n\n\tconst imageParentWidthPx = calculateResizeHostAncestorWidth( imageNodes.dom );\n\tconst imageHolderDimension = {\n\t\tunit: 'px',\n\t\tvalue: new Rect( imageNodes.dom ).width\n\t};\n\n\treturn _tryCastDimensionsToUnit( imageParentWidthPx, imageHolderDimension, targetUnit );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/ui/imagecustomresizeformview\n */\n\nimport {\n\tButtonView,\n\tFocusCycler,\n\tFormHeaderView,\n\tFormRowView,\n\tLabeledFieldView,\n\tView,\n\tViewCollection,\n\tcreateLabeledInputNumber,\n\tsubmitHandler,\n\ttype FocusableView,\n\ttype InputNumberView\n} from '@ckeditor/ckeditor5-ui';\n\nimport { FocusTracker, KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\nimport { IconPreviousArrow } from '@ckeditor/ckeditor5-icons';\n\n/**\n * The ImageCustomResizeFormView class.\n *\n * @internal\n */\nexport class ImageCustomResizeFormView extends View {\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Resize unit shortcut.\n\t */\n\tpublic readonly unit: string;\n\n\t/**\n\t * The Back button view displayed in the header.\n\t */\n\tpublic backButtonView: ButtonView;\n\n\t/**\n\t * A button used to submit the form.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * An input with a label.\n\t */\n\tpublic labeledInput: LabeledFieldView<InputNumberView>;\n\n\t/**\n\t * A collection of child views.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A collection of views which can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * An array of form validators used by {@link #isValid}.\n\t */\n\tprivate readonly _validators: Array<ImageCustomResizeFormValidatorCallback>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale, unit: string, validators: Array<ImageCustomResizeFormValidatorCallback> ) {\n\t\tsuper( locale );\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.unit = unit;\n\n\t\t// Create buttons.\n\t\tthis.backButtonView = this._createBackButton();\n\t\tthis.saveButtonView = this._createSaveButton();\n\n\t\t// Create input fields.\n\t\tthis.labeledInput = this._createLabeledInputView();\n\n\t\tthis.children = this.createCollection( [ this._createHeaderView() ] );\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\tthis.labeledInput,\n\t\t\t\tthis.saveButtonView\n\t\t\t],\n\t\t\tclass: [\n\t\t\t\t'ck-form__row_with-submit',\n\t\t\t\t'ck-form__row_large-top-padding'\n\t\t\t]\n\t\t} ) );\n\n\t\tthis._focusables = new ViewCollection();\n\t\tthis._validators = validators;\n\n\t\t// Close the panel on esc key press when the **form has focus**.\n\t\tthis.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis.fire<ImageCustomResizeFormViewCancelEvent>( 'cancel' );\n\t\t\tcancel();\n\t\t} );\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form',\n\t\t\t\t\t'ck-image-custom-resize-form',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/40\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tconst childViews = [\n\t\t\tthis.backButtonView,\n\t\t\tthis.labeledInput,\n\t\t\tthis.saveButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element! );\n\t\t} );\n\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates a back button view that cancels the form.\n\t */\n\tprivate _createBackButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst backButton = new ButtonView( this.locale );\n\n\t\tbackButton.set( {\n\t\t\tclass: 'ck-button-back',\n\t\t\tlabel: t( 'Back' ),\n\t\t\ticon: IconPreviousArrow,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbackButton.delegate( 'execute' ).to( this, 'cancel' );\n\n\t\treturn backButton;\n\t}\n\n\t/**\n\t * Creates a save button view that resize the image.\n\t */\n\tprivate _createSaveButton(): ButtonView {\n\t\tconst t = this.locale!.t;\n\t\tconst saveButton = new ButtonView( this.locale );\n\n\t\tsaveButton.set( {\n\t\t\tlabel: t( 'Save' ),\n\t\t\twithText: true,\n\t\t\ttype: 'submit',\n\t\t\tclass: 'ck-button-action ck-button-bold'\n\t\t} );\n\n\t\treturn saveButton;\n\t}\n\n\t/**\n\t * Creates a header view for the form.\n\t */\n\tprivate _createHeaderView(): FormHeaderView {\n\t\tconst t = this.locale!.t;\n\n\t\tconst header = new FormHeaderView( this.locale, {\n\t\t\tlabel: t( 'Image Resize' )\n\t\t} );\n\n\t\theader.children.add( this.backButtonView, 0 );\n\n\t\treturn header;\n\t}\n\n\t/**\n\t * Creates an input with a label.\n\t *\n\t * @returns Labeled field view instance.\n\t */\n\tprivate _createLabeledInputView(): LabeledFieldView<InputNumberView> {\n\t\tconst t = this.locale!.t;\n\t\tconst labeledInput = new LabeledFieldView<InputNumberView>( this.locale, createLabeledInputNumber );\n\n\t\tlabeledInput.label = t( 'Resize image (in %0)', this.unit );\n\t\tlabeledInput.class = 'ck-labeled-field-view_full-width';\n\t\tlabeledInput.fieldView.set( {\n\t\t\tstep: 0.1\n\t\t} );\n\n\t\treturn labeledInput;\n\t}\n\n\t/**\n\t * Validates the form and returns `false` when some fields are invalid.\n\t */\n\tpublic isValid(): boolean {\n\t\tthis.resetFormStatus();\n\n\t\tfor ( const validator of this._validators ) {\n\t\t\tconst errorText = validator( this );\n\n\t\t\t// One error per field is enough.\n\t\t\tif ( errorText ) {\n\t\t\t\t// Apply updated error.\n\t\t\t\tthis.labeledInput.errorText = errorText;\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Cleans up the supplementary error and information text of the {@link #labeledInput}\n\t * bringing them back to the state when the form has been displayed for the first time.\n\t *\n\t * See {@link #isValid}.\n\t */\n\tpublic resetFormStatus(): void {\n\t\tthis.labeledInput.errorText = null;\n\t}\n\n\t/**\n\t * The native DOM `value` of the input element of {@link #labeledInput}.\n\t */\n\tpublic get rawSize(): string | null {\n\t\tconst { element } = this.labeledInput.fieldView;\n\n\t\tif ( !element ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn element.value;\n\t}\n\n\t/**\n\t * Get numeric value of size. Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t */\n\tpublic get parsedSize(): number | null {\n\t\tconst { rawSize } = this;\n\n\t\tif ( rawSize === null ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst parsed = Number.parseFloat( rawSize );\n\n\t\tif ( Number.isNaN( parsed ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn parsed;\n\t}\n\n\t/**\n\t * Returns serialized image input size with unit.\n\t * Returns `null` if value of size input element in {@link #labeledInput}.is not a number.\n\t */\n\tpublic get sizeWithUnits(): string | null {\n\t\tconst { parsedSize, unit } = this;\n\n\t\tif ( parsedSize === null ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn `${ parsedSize }${ unit }`;\n\t}\n}\n\n/**\n * Callback used by {@link ~ImageCustomResizeFormView} to check if passed form value is valid.\n *\n * \t* If `undefined` is returned, it is assumed that the form value is correct and there is no error.\n * \t* If string is returned, it is assumed that the form value is incorrect and the returned string is displayed in the error label\n *\n * @internal\n */\nexport type ImageCustomResizeFormValidatorCallback = ( form: ImageCustomResizeFormView ) => string | undefined;\n\n/**\n * Fired when the form view is submitted.\n *\n * @eventName ~ImageCustomResizeFormView#submit\n */\nexport type ImageCustomResizeFormViewSubmitEvent = {\n\tname: 'submit';\n\targs: [];\n};\n\n/**\n * Fired when the form view is canceled.\n *\n * @eventName ~ImageCustomResizeFormView#cancel\n */\nexport type ImageCustomResizeFormViewCancelEvent = {\n\tname: 'cancel';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/utils/getselectedimagepossibleresizerange\n */\n\nimport type { Editor } from '@ckeditor/ckeditor5-core';\n\nimport { calculateResizeHostAncestorWidth } from '@ckeditor/ckeditor5-widget';\nimport { getSelectedImageEditorNodes } from './getselectedimageeditornodes.js';\nimport { _tryCastDimensionsToUnit, _tryParseDimensionWithUnit } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Returns min and max value of resize image in specified unit.\n *\n * @param editor Editor instance.\n * @param targetUnit Unit in which dimension will be returned.\n * @returns Possible resize range in numeric form.\n * @internal\n */\nexport function getSelectedImagePossibleResizeRange( editor: Editor, targetUnit: string ): PossibleResizeImageRange | null {\n\tconst imageNodes = getSelectedImageEditorNodes( editor );\n\n\tif ( !imageNodes ) {\n\t\treturn null;\n\t}\n\n\tconst imageParentWidthPx = calculateResizeHostAncestorWidth( imageNodes.dom );\n\tconst minimumImageWidth = _tryParseDimensionWithUnit( window.getComputedStyle( imageNodes.dom ).minWidth ) || {\n\t\tvalue: 1,\n\t\tunit: 'px'\n\t};\n\n\tconst lower = Math.max( 0.1, _tryCastDimensionsToUnit( imageParentWidthPx, minimumImageWidth, targetUnit ).value );\n\tconst upper = targetUnit === 'px' ? imageParentWidthPx : 100;\n\n\treturn {\n\t\tunit: targetUnit,\n\t\tlower,\n\t\tupper\n\t};\n}\n\n/**\n * @internal\n */\nexport type PossibleResizeImageRange = {\n\tunit: string;\n\tlower: number;\n\tupper: number;\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize/imagecustomresizeui\n */\n\nimport { Plugin, type Editor, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport {\n\tContextualBalloon,\n\tclickOutsideHandler,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from '@ckeditor/ckeditor5-ui';\n\nimport { getBalloonPositionData } from '../image/ui/utils.js';\nimport { getSelectedImageWidthInUnits } from './utils/getselectedimagewidthinunits.js';\n\nimport {\n\tImageCustomResizeFormView,\n\ttype ImageCustomResizeFormValidatorCallback,\n\ttype ImageCustomResizeFormViewCancelEvent,\n\ttype ImageCustomResizeFormViewSubmitEvent\n} from './ui/imagecustomresizeformview.js';\nimport { getSelectedImagePossibleResizeRange } from './utils/getselectedimagepossibleresizerange.js';\n\n/**\n * The custom resize image UI plugin.\n *\n * The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport class ImageCustomResizeUI extends Plugin {\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon?: ContextualBalloon;\n\n\t/**\n\t * A form containing a textarea and buttons, used to change the `alt` text value.\n\t */\n\tprivate _form?: ImageCustomResizeFormView & ViewWithCssTransitionDisabler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ContextualBalloon ]> {\n\t\treturn [ ContextualBalloon ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCustomResizeUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see https://github.com/ckeditor/ckeditor5/issues/1341).\n\t\tif ( this._form ) {\n\t\t\tthis._form.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the {@link module:image/imageresize/ui/imagecustomresizeformview~ImageCustomResizeFormView}\n\t * form.\n\t */\n\tprivate _createForm( unit: string ): void {\n\t\tconst editor = this.editor;\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis._form = new ( CssTransitionDisablerMixin( ImageCustomResizeFormView ) )( editor.locale, unit, getFormValidators( editor ) );\n\n\t\t// Render the form so its #element is available for clickOutsideHandler.\n\t\tthis._form.render();\n\n\t\tthis.listenTo<ImageCustomResizeFormViewSubmitEvent>( this._form, 'submit', () => {\n\t\t\tif ( this._form!.isValid() ) {\n\t\t\t\teditor.execute( 'resizeImage', {\n\t\t\t\t\twidth: this._form!.sizeWithUnits\n\t\t\t\t} );\n\n\t\t\t\tthis._hideForm( true );\n\t\t\t}\n\t\t} );\n\n\t\t// Update balloon position when form error label is added .\n\t\tthis.listenTo( this._form.labeledInput, 'change:errorText', () => {\n\t\t\teditor.ui.update();\n\t\t} );\n\n\t\tthis.listenTo<ImageCustomResizeFormViewCancelEvent>( this._form, 'cancel', () => {\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [ this._balloon!.view.element! ],\n\t\t\tcallback: () => this._hideForm()\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the {@link #_form} in the {@link #_balloon}.\n\t *\n\t * @internal\n\t */\n\tpublic _showForm( unit: string ): void {\n\t\tif ( this._isVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._form ) {\n\t\t\tthis._createForm( unit );\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst labeledInput = this._form!.labeledInput;\n\n\t\tthis._form!.disableCssTransitions();\n\t\tthis._form!.resetFormStatus();\n\n\t\tif ( !this._isInBalloon ) {\n\t\t\tthis._balloon!.add( {\n\t\t\t\tview: this._form!,\n\t\t\t\tposition: getBalloonPositionData( editor )\n\t\t\t} );\n\t\t}\n\n\t\t// Make sure that each time the panel shows up, the field remains in sync with the value of\n\t\t// the command. If the user typed in the input, then canceled the balloon (`labeledInput#value`\n\t\t// stays unaltered) and re-opened it without changing the value of the command, they would see the\n\t\t// old value instead of the actual value of the command.\n\t\tconst currentParsedWidth = getSelectedImageWidthInUnits( editor, unit );\n\t\tconst initialInputValue = currentParsedWidth ? currentParsedWidth.value.toFixed( 1 ) : '';\n\t\tconst possibleRange = getSelectedImagePossibleResizeRange( editor, unit );\n\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element!.value = initialInputValue;\n\n\t\tif ( possibleRange ) {\n\t\t\tObject.assign( labeledInput.fieldView, {\n\t\t\t\tmin: possibleRange.lower.toFixed( 1 ),\n\t\t\t\tmax: Math.ceil( possibleRange.upper ).toFixed( 1 )\n\t\t\t} );\n\t\t}\n\n\t\tthis._form!.labeledInput.fieldView.select();\n\t\tthis._form!.enableCssTransitions();\n\t}\n\n\t/**\n\t * Removes the {@link #_form} from the {@link #_balloon}.\n\t *\n\t * @param focusEditable Controls whether the editing view is focused afterwards.\n\t */\n\tprivate _hideForm( focusEditable: boolean = false ): void {\n\t\tif ( !this._isInBalloon ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur the input element before removing it from DOM to prevent issues in some browsers.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\tif ( this._form!.focusTracker.isFocused ) {\n\t\t\tthis._form!.saveButtonView.focus();\n\t\t}\n\n\t\tthis._balloon!.remove( this._form! );\n\n\t\tif ( focusEditable ) {\n\t\t\tthis.editor.editing.view.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t */\n\tprivate get _isVisible(): boolean {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t */\n\tprivate get _isInBalloon(): boolean {\n\t\treturn !!this._balloon && this._balloon.hasView( this._form! );\n\t}\n}\n\n/**\n * Returns image resize form validation callbacks.\n *\n * @param editor Editor instance.\n */\nfunction getFormValidators( editor: Editor ): Array<ImageCustomResizeFormValidatorCallback> {\n\tconst t = editor.t;\n\n\treturn [\n\t\tform => {\n\t\t\tif ( form.rawSize!.trim() === '' ) {\n\t\t\t\treturn t( 'The value must not be empty.' );\n\t\t\t}\n\n\t\t\tif ( form.parsedSize === null ) {\n\t\t\t\treturn t( 'The value should be a plain number.' );\n\t\t\t}\n\t\t}\n\t];\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imageresize\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageResizeButtons } from './imageresize/imageresizebuttons.js';\nimport { ImageResizeEditing } from './imageresize/imageresizeediting.js';\nimport { ImageResizeHandles } from './imageresize/imageresizehandles.js';\nimport { ImageCustomResizeUI } from './imageresize/imagecustomresizeui.js';\n\n/**\n * The image resize plugin.\n *\n * It adds a possibility to resize each image using handles.\n */\nexport class ImageResize extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[\n\t\tImageResizeEditing,\n\t\tImageResizeHandles,\n\t\tImageCustomResizeUI,\n\t\tImageResizeButtons\n\t]> {\n\t\treturn [\n\t\t\tImageResizeEditing,\n\t\t\tImageResizeHandles,\n\t\t\tImageCustomResizeUI,\n\t\t\tImageResizeButtons\n\t\t];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResize' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/imagestylecommand\n */\n\nimport type { ModelElement } from '@ckeditor/ckeditor5-engine';\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport type { ImageStyleOptionDefinition } from '../imageconfig.js';\nimport { type ImageUtils } from '../imageutils.js';\n\n/**\n * The image style command. It is used to apply {@link module:image/imageconfig~ImageStyleConfig#options image style option}\n * to a selected image.\n *\n * **Note**: Executing this command may change the image model element if the desired style requires an image of a different\n * type. See {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand#execute} to learn more.\n */\nexport class ImageStyleCommand extends Command {\n\t/**\n\t * An object containing names of default style options for the inline and block images.\n\t * If there is no default style option for the given image type in the configuration,\n\t * the name will be `false`.\n\t */\n\tprivate _defaultStyles: Record<string, string | false>;\n\n\t/**\n\t * The styles handled by this command.\n\t */\n\tprivate _styles: Map<string, ImageStyleOptionDefinition>;\n\n\t/**\n\t * Creates an instance of the image style command. When executed, the command applies one of\n\t * {@link module:image/imageconfig~ImageStyleConfig#options style options} to the currently selected image.\n\t *\n\t * @param editor The editor instance.\n\t * @param styles The style options that this command supports.\n\t */\n\tconstructor( editor: Editor, styles: Array<ImageStyleOptionDefinition> ) {\n\t\tsuper( editor );\n\n\t\tthis._defaultStyles = {\n\t\t\timageBlock: false,\n\t\t\timageInline: false\n\t\t};\n\n\t\tthis._styles = new Map( styles.map( style => {\n\t\t\tif ( style.isDefault ) {\n\t\t\t\tfor ( const modelElementName of style.modelElements ) {\n\t\t\t\t\tthis._defaultStyles[ modelElementName ] = style.name;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn [ style.name, style ];\n\t\t} ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection )!;\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( !this.isEnabled ) {\n\t\t\tthis.value = false;\n\t\t} else if ( element.hasAttribute( 'imageStyle' ) ) {\n\t\t\tthis.value = element.getAttribute( 'imageStyle' );\n\t\t} else {\n\t\t\tthis.value = this._defaultStyles[ element.name ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether the style with the given name can be applied to the currently selected image.\n\t *\n\t * Applying a style may internally trigger a type conversion (block ↔ inline) when the style\n\t * supports only the opposite type. If that conversion would be rejected by the schema (for\n\t * example, converting an inline image to a block image inside `$inlineRoot`), this style\n\t * cannot be applied even though the command itself is enabled. UI components representing\n\t * individual styles should reflect this per-style state in their `isEnabled`.\n\t */\n\tpublic isStyleEnabled( styleName: string ): boolean {\n\t\tif ( !this.isEnabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection );\n\n\t\tif ( !element || !this._styles.has( styleName ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.shouldConvertImageType( styleName, element ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Applying this style requires a type conversion. The corresponding type command must be enabled\n\t\t// for the conversion to succeed.\n\t\tconst typeCommandName = imageUtils.isBlockImage( element ) ? 'imageTypeInline' : 'imageTypeBlock';\n\t\tconst typeCommand = this.editor.commands.get( typeCommandName );\n\n\t\treturn !!typeCommand && typeCommand.isEnabled;\n\t}\n\n\t/**\n\t * Executes the command and applies the style to the currently selected image:\n\t *\n\t * ```ts\n\t * editor.execute( 'imageStyle', { value: 'side' } );\n\t * ```\n\t *\n\t * **Note**: Executing this command may change the image model element if the desired style requires an image\n\t * of a different type. Learn more about {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements model element}\n\t * configuration for the style option.\n\t *\n\t * @param options.value The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.\n\t * The default is `true`.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value?: string; setImageSizes?: boolean } = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// If the requested style requires a type conversion that the schema does not allow,\n\t\t// skip execution entirely to avoid leaving the image with a style its current type does not support.\n\t\tif ( options.value && !this.isStyleEnabled( options.value ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst requestedStyle = options.value;\n\t\t\tconst { setImageSizes = true } = options;\n\n\t\t\tlet imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\n\t\t\t// Change the image type if a style requires it.\n\t\t\tif ( requestedStyle && this.shouldConvertImageType( requestedStyle, imageElement ) ) {\n\t\t\t\tthis.editor.execute( imageUtils.isBlockImage( imageElement ) ? 'imageTypeInline' : 'imageTypeBlock', { setImageSizes } );\n\n\t\t\t\t// Update the imageElement to the newly created image.\n\t\t\t\timageElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\t\t\t}\n\n\t\t\t// Default style means that there is no `imageStyle` attribute in the model.\n\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/147\n\t\t\tif ( !requestedStyle || this._styles.get( requestedStyle )!.isDefault ) {\n\t\t\t\twriter.removeAttribute( 'imageStyle', imageElement );\n\t\t\t} else {\n\t\t\t\twriter.setAttribute( 'imageStyle', requestedStyle, imageElement );\n\t\t\t}\n\n\t\t\tif ( setImageSizes ) {\n\t\t\t\timageUtils.setImageNaturalSizeAttributes( imageElement );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns `true` if requested style change would trigger the image type change.\n\t *\n\t * @param requestedStyle The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t * @param imageElement The image model element.\n\t */\n\tpublic shouldConvertImageType( requestedStyle: string, imageElement: ModelElement ): boolean {\n\t\tconst supportedTypes = this._styles.get( requestedStyle )!.modelElements;\n\n\t\treturn !supportedTypes.includes( imageElement.name );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/utils\n */\n\nimport { logWarning } from '@ckeditor/ckeditor5-utils';\nimport {\n\tIconObjectCenter,\n\tIconObjectFullWidth,\n\tIconObjectInline,\n\tIconObjectInlineLeft,\n\tIconObjectInlineRight,\n\tIconObjectLeft,\n\tIconObjectRight\n} from '@ckeditor/ckeditor5-icons';\nimport type { Editor, PluginCollection } from '@ckeditor/ckeditor5-core';\nimport type { ImageStyleConfig, ImageStyleDropdownDefinition, ImageStyleOptionDefinition } from '../imageconfig.js';\n\n/**\n * Default image style options provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n * configuration.\n *\n * There are available 5 styles focused on formatting:\n *\n * * **`'alignLeft'`** aligns the inline or block image to the left and wraps it with the text using the `image-style-align-left` class,\n * * **`'alignRight'`** aligns the inline or block image to the right and wraps it with the text using the `image-style-align-right` class,\n * * **`'alignCenter'`** centers the block image using the `image-style-align-center` class,\n * * **`'alignBlockLeft'`** aligns the block image to the left using the `image-style-block-align-left` class,\n * * **`'alignBlockRight'`** aligns the block image to the right using the `image-style-block-align-right` class,\n *\n * and 3 semantic styles:\n *\n * * **`'inline'`** is an inline image without any CSS class,\n * * **`'block'`** is a block image without any CSS class,\n * * **`'side'`** is a block image styled with the `image-style-side` CSS class.\n *\n * @internal\n */\nexport const DEFAULT_OPTIONS: Record<string, ImageStyleOptionDefinition> = {\n\t// This style represents an image placed in the line of text.\n\tget inline() {\n\t\treturn {\n\t\t\tname: 'inline',\n\t\t\ttitle: 'In line',\n\t\t\ticon: IconObjectInline,\n\t\t\tmodelElements: [ 'imageInline' ],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the left and wrapped with text.\n\tget alignLeft() {\n\t\treturn {\n\t\t\tname: 'alignLeft',\n\t\t\ttitle: 'Left aligned image',\n\t\t\ticon: IconObjectInlineLeft,\n\t\t\tmodelElements: [ 'imageBlock', 'imageInline' ],\n\t\t\tclassName: 'image-style-align-left'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the left.\n\tget alignBlockLeft() {\n\t\treturn {\n\t\t\tname: 'alignBlockLeft',\n\t\t\ttitle: 'Left aligned image',\n\t\t\ticon: IconObjectLeft,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-block-align-left'\n\t\t};\n\t},\n\n\t// This style represents a centered image.\n\tget alignCenter() {\n\t\treturn {\n\t\t\tname: 'alignCenter',\n\t\t\ttitle: 'Centered image',\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-align-center'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the right and wrapped with text.\n\tget alignRight() {\n\t\treturn {\n\t\t\tname: 'alignRight',\n\t\t\ttitle: 'Right aligned image',\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [ 'imageBlock', 'imageInline' ],\n\t\t\tclassName: 'image-style-align-right'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the right.\n\tget alignBlockRight() {\n\t\treturn {\n\t\t\tname: 'alignBlockRight',\n\t\t\ttitle: 'Right aligned image',\n\t\t\ticon: IconObjectRight,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-block-align-right'\n\t\t};\n\t},\n\n\t// This option is equal to the situation when no style is applied.\n\tget block() {\n\t\treturn {\n\t\t\tname: 'block',\n\t\t\ttitle: 'Centered image',\n\t\t\ticon: IconObjectCenter,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\n\t// This represents a side image.\n\tget side() {\n\t\treturn {\n\t\t\tname: 'side',\n\t\t\ttitle: 'Side image',\n\t\t\ticon: IconObjectInlineRight,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-side'\n\t\t};\n\t}\n};\n\n/**\n * Default image style icons provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n * configuration.\n *\n * See {@link module:image/imageconfig~ImageStyleOptionDefinition#icon} to learn more.\n *\n * There are 7 default icons available: `'full'`, `'left'`, `'inlineLeft'`, `'center'`, `'right'`, `'inlineRight'`, and `'inline'`.\n *\n * @internal\n */\nexport const DEFAULT_ICONS: Record<string, string> = /* #__PURE__ */ ( () => ( {\n\tfull: IconObjectFullWidth,\n\tleft: IconObjectLeft,\n\tright: IconObjectRight,\n\tcenter: IconObjectCenter,\n\tinlineLeft: IconObjectInlineLeft,\n\tinlineRight: IconObjectInlineRight,\n\tinline: IconObjectInline\n} ) )();\n\n/**\n * Default drop-downs provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#toolbar}\n * configuration. The drop-downs are containers for the {@link module:image/imageconfig~ImageStyleConfig#options image style options}.\n *\n * If both of the `ImageEditing` plugins are loaded, there are 2 predefined drop-downs available:\n *\n * * **`'imageStyle:wrapText'`**, which contains the `alignLeft` and `alignRight` options, that is,\n * those that wraps the text around the image,\n * * **`'imageStyle:breakText'`**, which contains the `alignBlockLeft`, `alignCenter` and `alignBlockRight` options, that is,\n * those that breaks the text around the image.\n *\n * @internal\n */\nexport const DEFAULT_DROPDOWN_DEFINITIONS: Array<ImageStyleDropdownDefinition> = [ {\n\tname: 'imageStyle:wrapText',\n\ttitle: 'Wrap text',\n\tdefaultItem: 'imageStyle:alignLeft',\n\titems: [ 'imageStyle:alignLeft', 'imageStyle:alignRight' ]\n}, {\n\tname: 'imageStyle:breakText',\n\ttitle: 'Break text',\n\tdefaultItem: 'imageStyle:block',\n\titems: [ 'imageStyle:alignBlockLeft', 'imageStyle:block', 'imageStyle:alignBlockRight' ]\n} ];\n\n/**\n * Returns the style with a given `name` from an array of styles.\n *\n * @internal\n */\nexport function getStyleDefinitionByName(\n\tname: string,\n\tstyles: Array<ImageStyleOptionDefinition>\n): ImageStyleOptionDefinition | undefined {\n\tfor ( const style of styles ) {\n\t\tif ( style.name === name ) {\n\t\t\treturn style;\n\t\t}\n\t}\n}\n\n/**\n * Returns a list of the normalized and validated image style options.\n *\n * @param config\n * @param config.isInlinePluginLoaded\n * Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n * @param config.isBlockPluginLoaded\n * Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n * @param config.configuredStyles\n * The image styles configuration provided in the image styles {@link module:image/imageconfig~ImageConfig#styles configuration}\n * as a default or custom value.\n * @returns\n * * Each of options contains a complete icon markup.\n * * The image style options not supported by any of the loaded plugins are filtered out.\n */\nfunction normalizeStyles( config: {\n\tisInlinePluginLoaded: boolean;\n\tisBlockPluginLoaded: boolean;\n\tconfiguredStyles: ImageStyleConfig;\n}\n): Array<ImageStyleOptionDefinition> {\n\tconst configuredStyles = config.configuredStyles.options || [];\n\n\tconst styles = configuredStyles\n\t\t.map( arrangement => normalizeDefinition( arrangement ) )\n\t\t.filter( arrangement => isValidOption( arrangement, config ) );\n\n\treturn styles;\n}\n\n/**\n * Returns the default image styles configuration depending on the loaded image editing plugins.\n *\n * @param isInlinePluginLoaded\n * Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n *\n * @param isBlockPluginLoaded\n * Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n *\n * @returns\n * It returns an object with the lists of the image style options and groups defined as strings related to the\n * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS default options}\n */\nfunction getDefaultStylesConfiguration( isBlockPluginLoaded: boolean, isInlinePluginLoaded: boolean ): ImageStyleConfig {\n\tif ( isBlockPluginLoaded && isInlinePluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [\n\t\t\t\t'inline', 'alignLeft', 'alignRight',\n\t\t\t\t'alignCenter', 'alignBlockLeft', 'alignBlockRight',\n\t\t\t\t'block', 'side'\n\t\t\t]\n\t\t};\n\t} else if ( isBlockPluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [ 'block', 'side' ]\n\t\t};\n\t} else if ( isInlinePluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [ 'inline', 'alignLeft', 'alignRight' ]\n\t\t};\n\t}\n\n\treturn {};\n}\n\n/**\n * Returns a list of the available predefined drop-downs' definitions depending on the loaded image editing plugins.\n */\nfunction getDefaultDropdownDefinitions( pluginCollection: PluginCollection<Editor> ): Array<ImageStyleDropdownDefinition> {\n\tif ( pluginCollection.has( 'ImageBlockEditing' ) && pluginCollection.has( 'ImageInlineEditing' ) ) {\n\t\treturn [ ...DEFAULT_DROPDOWN_DEFINITIONS ];\n\t} else {\n\t\treturn [];\n\t}\n}\n\n/**\n * Normalizes an image style option or group provided in the {@link module:image/imageconfig~ImageConfig#styles}\n * and returns it in a {@link module:image/imageconfig~ImageStyleOptionDefinition}/\n */\nfunction normalizeDefinition( definition: string | Partial<ImageStyleOptionDefinition> & { name: string } ): ImageStyleOptionDefinition {\n\tif ( typeof definition === 'string' ) {\n\t\t// Just the name of the style has been passed, but none of the defaults.\n\t\tif ( !DEFAULT_OPTIONS[ definition ] ) {\n\t\t\t// Normalize the style anyway to prevent errors.\n\t\t\tdefinition = { name: definition };\n\t\t}\n\t\t// Just the name of the style has been passed and it's one of the defaults, just use it.\n\t\t// Clone the style to avoid overriding defaults.\n\t\telse {\n\t\t\tdefinition = { ...DEFAULT_OPTIONS[ definition ] };\n\t\t}\n\t} else {\n\t\t// If an object style has been passed and if the name matches one of the defaults,\n\t\t// extend it with defaults – the user wants to customize a default style.\n\t\t// Note: Don't override the user–defined style object, clone it instead.\n\t\tdefinition = extendStyle( DEFAULT_OPTIONS[ definition.name ], definition );\n\t}\n\n\t// If an icon is defined as a string and correspond with a name\n\t// in default icons, use the default icon provided by the plugin.\n\tif ( typeof definition.icon === 'string' ) {\n\t\tdefinition.icon = DEFAULT_ICONS[ definition.icon ] || definition.icon;\n\t}\n\n\treturn definition as ImageStyleOptionDefinition;\n}\n\n/**\n * Checks if the image style option is valid:\n * * if it has the modelElements fields defined and filled,\n * * if the defined modelElements are supported by any of the loaded image editing plugins.\n * It also displays a console warning these conditions are not met.\n *\n * @param option image style option\n */\nfunction isValidOption(\n\toption: ImageStyleOptionDefinition,\n\t{ isBlockPluginLoaded, isInlinePluginLoaded }: { isBlockPluginLoaded: boolean; isInlinePluginLoaded: boolean }\n): boolean {\n\tconst { modelElements, name } = option;\n\n\tif ( !modelElements || !modelElements.length || !name ) {\n\t\twarnInvalidStyle( { style: option } );\n\n\t\treturn false;\n\t} else {\n\t\tconst supportedElements = [ isBlockPluginLoaded ? 'imageBlock' : null, isInlinePluginLoaded ? 'imageInline' : null ];\n\n\t\t// Check if the option is supported by any of the loaded plugins.\n\t\tif ( !modelElements.some( elementName => supportedElements.includes( elementName ) ) ) {\n\t\t\t/**\n\t\t\t * In order to work correctly, each image style {@link module:image/imageconfig~ImageStyleOptionDefinition option}\n\t\t\t * requires specific model elements (also: types of images) to be supported by the editor.\n\t\t\t *\n\t\t\t * Model element names to which the image style option can be applied are defined in the\n\t\t\t * {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements} property of the style option\n\t\t\t * definition.\n\t\t\t *\n\t\t\t * Explore the warning in the console to find out precisely which option is not supported and which editor plugins\n\t\t\t * are missing. Make sure these plugins are loaded in your editor to get this image style option working.\n\t\t\t *\n\t\t\t * @error image-style-missing-dependency\n\t\t\t * @param {string} style The name of the unsupported option.\n\t\t\t * @param {Array.<string>} missingPlugins The names of the plugins one of which has to be loaded for the particular option.\n\t\t\t */\n\t\t\tlogWarning( 'image-style-missing-dependency', {\n\t\t\t\tstyle: option,\n\t\t\t\tmissingPlugins: modelElements.map( name => name === 'imageBlock' ? 'ImageBlockEditing' : 'ImageInlineEditing' )\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Extends the default style with a style provided by the developer.\n * Note: Don't override the custom–defined style object, clone it instead.\n */\nfunction extendStyle( source: ImageStyleOptionDefinition, style: Partial<ImageStyleOptionDefinition> ): ImageStyleOptionDefinition {\n\tconst extendedStyle: Record<string, any> = { ...style };\n\n\tfor ( const prop in source ) {\n\t\tif ( !Object.prototype.hasOwnProperty.call( style, prop ) ) {\n\t\t\textendedStyle[ prop ] = source[ prop as keyof typeof source ];\n\t\t}\n\t}\n\n\treturn extendedStyle as ImageStyleOptionDefinition;\n}\n\n/**\n * Displays a console warning with the 'image-style-configuration-definition-invalid' error.\n */\nfunction warnInvalidStyle( info: object ): void {\n\t/**\n\t * The image style definition provided in the configuration is invalid.\n\t *\n\t * Please make sure the definition implements properly one of the following:\n\t *\n\t * * {@link module:image/imageconfig~ImageStyleOptionDefinition image style option definition},\n\t * * {@link module:image/imageconfig~ImageStyleDropdownDefinition image style dropdown definition}\n\t *\n\t * @error image-style-configuration-definition-invalid\n\t * @param {object} info The information about the invalid definition.\n\t */\n\tlogWarning( 'image-style-configuration-definition-invalid', info );\n}\n\n/**\n * @internal\n */\nexport const utils: {\n\tnormalizeStyles: typeof normalizeStyles;\n\tgetDefaultStylesConfiguration: typeof getDefaultStylesConfiguration;\n\tgetDefaultDropdownDefinitions: typeof getDefaultDropdownDefinitions;\n\twarnInvalidStyle: typeof warnInvalidStyle;\n} = {\n\tnormalizeStyles,\n\tgetDefaultStylesConfiguration,\n\tgetDefaultDropdownDefinitions,\n\twarnInvalidStyle\n};\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/converters\n */\n\nimport { isEqual } from 'es-toolkit/compat';\nimport type {\n\tDowncastAttributeEvent,\n\tModelElement,\n\tModelItem,\n\tUpcastConversionApi,\n\tUpcastElementEvent,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\nimport { first, type GetCallback } from '@ckeditor/ckeditor5-utils';\nimport type { ImageStyleOptionDefinition } from '../imageconfig.js';\nimport { DEFAULT_OPTIONS, getStyleDefinitionByName } from './utils.js';\n\n/**\n * Returns a converter for the `imageStyle` attribute. It can be used for adding, changing and removing the attribute.\n *\n * @param styles An array containing available image style options.\n * @returns A model-to-view attribute converter.\n * @internal\n */\nexport function modelToViewStyleAttribute( styles: Array<ImageStyleOptionDefinition> ): GetCallback<DowncastAttributeEvent> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if there is class name associated with given value.\n\t\tconst newStyle = getStyleDefinitionByName( data.attributeNewValue as string, styles );\n\t\tconst oldStyle = getStyleDefinitionByName( data.attributeOldValue as string, styles );\n\n\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item as ModelElement )!;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\tif ( oldStyle ) {\n\t\t\tviewWriter.removeClass( oldStyle.className!, viewElement );\n\t\t}\n\n\t\tif ( newStyle ) {\n\t\t\tviewWriter.addClass( newStyle.className!, viewElement );\n\t\t}\n\t};\n}\n\n/**\n * Returns a view-to-model converter converting image CSS classes to a proper value in the model.\n *\n * @param styles Image style options for which the converter is created.\n * @returns A view-to-model converter.\n * @internal\n */\nexport function viewToModelStyleAttribute( styles: Array<ImageStyleOptionDefinition> ): GetCallback<UpcastElementEvent> {\n\t// Convert only non–default styles.\n\tconst nonDefaultStyles: Record<string, Array<ImageStyleOptionDefinition>> = {\n\t\timageInline: styles.filter( style => !style.isDefault && style.modelElements.includes( 'imageInline' ) ),\n\t\timageBlock: styles.filter( style => !style.isDefault && style.modelElements.includes( 'imageBlock' ) )\n\t};\n\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( !data.modelRange ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewElement = data.viewItem;\n\t\tconst modelImageElement = first( data.modelRange.getItems() );\n\n\t\t// Run this converter only if an image has been found in the model.\n\t\t// In some cases it may not be found (for example if we run this on a figure with different type than image).\n\t\tif ( !modelImageElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// ...and the `imageStyle` attribute is allowed for that element, otherwise stop conversion early.\n\t\tif ( !conversionApi.schema.checkAttribute( modelImageElement, 'imageStyle' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert styles one by one.\n\t\tfor ( const style of nonDefaultStyles[ ( modelImageElement as ModelElement ).name ] ) {\n\t\t\t// Try to consume class corresponding with the style.\n\t\t\tif ( conversionApi.consumable.consume( viewElement, { classes: style.className } ) ) {\n\t\t\t\t// And convert this style to model attribute.\n\t\t\t\tconversionApi.writer.setAttribute( 'imageStyle', style.name, modelImageElement );\n\t\t\t}\n\t\t}\n\n\t\t// Normalize float styles (alignLeft, alignRight).\n\t\tnormalizeFloatToDefinitionStyle( conversionApi, viewElement, modelImageElement, styles );\n\t};\n}\n\n/**\n * A helper function that attempts to convert the `float` CSS style into a corresponding `imageStyle` attribute.\n *\n * It maps `float: left` and `float: right` to standard alignment styles (e.g. `'alignLeft'`, `'alignRight'`),\n * but only if the target style definition matches one of the {@link module:image/image/utils~DEFAULT_OPTIONS default options}.\n */\nfunction normalizeFloatToDefinitionStyle(\n\tconversionApi: UpcastConversionApi,\n\tviewElement: ViewElement,\n\tmodelElement: ModelItem,\n\tstyles: Array<ImageStyleOptionDefinition>\n) {\n\tif ( !conversionApi.consumable.test( viewElement, { styles: [ 'float' ] } ) ) {\n\t\treturn;\n\t}\n\n\tlet floatStyleName: string | null = null;\n\n\tswitch ( viewElement.getStyle( 'float' ) ) {\n\t\tcase 'left':\n\t\t\tfloatStyleName = 'alignLeft';\n\t\t\tbreak;\n\n\t\tcase 'right':\n\t\t\tfloatStyleName = 'alignRight';\n\t\t\tbreak;\n\t}\n\n\tif ( !floatStyleName ) {\n\t\treturn;\n\t}\n\n\tconst definition = getStyleDefinitionByName( floatStyleName, styles );\n\n\tif ( !definition ) {\n\t\treturn;\n\t}\n\n\tconst builtinDefinition = DEFAULT_OPTIONS[ definition.name ];\n\n\tif ( !isEqual( definition, builtinDefinition ) ) {\n\t\treturn;\n\t}\n\n\tconversionApi.writer.setAttribute( 'imageStyle', floatStyleName, modelElement );\n\tconversionApi.consumable.consume( viewElement, { styles: [ 'float' ] } );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/imagestyleediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport type { ModelBlockAlignmentAttributesMapping, ModelElement, UpcastElementEvent } from '@ckeditor/ckeditor5-engine';\n\nimport { ImageStyleCommand } from './imagestylecommand.js';\nimport { ImageUtils } from '../imageutils.js';\nimport { getStyleDefinitionByName, utils } from './utils.js';\nimport { viewToModelStyleAttribute, modelToViewStyleAttribute } from './converters.js';\nimport type { ImageStyleOptionDefinition } from '../imageconfig.js';\n\n/**\n * The image style engine plugin. It sets the default configuration, creates converters and registers\n * {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.\n */\nexport class ImageStyleEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyleEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageUtils ]> {\n\t\treturn [ ImageUtils ];\n\t}\n\n\t/**\n\t * It contains a list of the normalized and validated style options.\n\t *\n\t * * Each option contains a complete icon markup.\n\t * * The style options not supported by any of the loaded image editing plugins (\n\t * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} or\n\t * {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`}) are filtered out.\n\t *\n\t * @internal\n\t * @readonly\n\t */\n\tpublic normalizedStyles?: Array<ImageStyleOptionDefinition>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst isBlockPluginLoaded = editor.plugins.has( 'ImageBlockEditing' );\n\t\tconst isInlinePluginLoaded = editor.plugins.has( 'ImageInlineEditing' );\n\n\t\teditor.config.define( 'image.styles', utils.getDefaultStylesConfiguration( isBlockPluginLoaded, isInlinePluginLoaded ) );\n\n\t\tthis.normalizedStyles = utils.normalizeStyles( {\n\t\t\tconfiguredStyles: editor.config.get( 'image.styles' )!,\n\t\t\tisBlockPluginLoaded,\n\t\t\tisInlinePluginLoaded\n\t\t} );\n\n\t\tthis._setupConversion( isBlockPluginLoaded, isInlinePluginLoaded );\n\t\tthis._setupPostFixer();\n\n\t\t// Register imageStyle command.\n\t\teditor.commands.add( 'imageStyle', new ImageStyleCommand( editor, this.normalizedStyles ) );\n\t}\n\n\t/**\n\t * Sets the editor conversion taking the presence of\n\t * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}\n\t * and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.\n\t */\n\tprivate _setupConversion( isBlockPluginLoaded: boolean, isInlinePluginLoaded: boolean ): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tconst modelToViewConverter = modelToViewStyleAttribute( this.normalizedStyles! );\n\t\tconst viewToModelConverter = viewToModelStyleAttribute( this.normalizedStyles! );\n\n\t\teditor.editing.downcastDispatcher.on( 'attribute:imageStyle', modelToViewConverter );\n\t\teditor.data.downcastDispatcher.on( 'attribute:imageStyle', modelToViewConverter );\n\n\t\t// Allow imageStyle attribute in image and imageInline.\n\t\t// We could call it 'style' but https://github.com/ckeditor/ckeditor5-engine/issues/559.\n\t\tif ( isBlockPluginLoaded ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: 'imageStyle' } );\n\t\t\tschema.setAttributeProperties( 'imageStyle', {\n\t\t\t\tisFormatting: true,\n\t\t\t\tblockAlignment: getBlockAlignmentAttributeProperty( this.normalizedStyles! )\n\t\t\t} );\n\n\t\t\t// Converter for figure element from view to model.\n\t\t\teditor.data.upcastDispatcher.on<UpcastElementEvent>( 'element:figure', viewToModelConverter, { priority: 'low' } );\n\t\t}\n\n\t\tif ( isInlinePluginLoaded ) {\n\t\t\tschema.extend( 'imageInline', { allowAttributes: 'imageStyle' } );\n\t\t\tschema.setAttributeProperties( 'imageStyle', { isFormatting: true } );\n\n\t\t\t// Converter for the img element from view to model.\n\t\t\teditor.data.upcastDispatcher.on( 'element:img', viewToModelConverter, { priority: 'low' } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).\n\t */\n\tprivate _setupPostFixer(): void {\n\t\tconst editor = this.editor;\n\t\tconst document = editor.model.document;\n\n\t\tconst imageUtils = editor.plugins.get( ImageUtils );\n\t\tconst stylesMap = new Map( this.normalizedStyles!.map( style => [ style.name, style ] ) );\n\n\t\t// Make sure that style attribute is valid for the image type.\n\t\tdocument.registerPostFixer( writer => {\n\t\t\tlet changed = false;\n\n\t\t\tfor ( const change of document.differ.getChanges() ) {\n\t\t\t\tif ( change.type == 'insert' || change.type == 'attribute' && change.attributeKey == 'imageStyle' ) {\n\t\t\t\t\tlet element = change.type == 'insert' ? change.position.nodeAfter! : change.range.start.nodeAfter!;\n\n\t\t\t\t\tif ( element && element.is( 'element', 'paragraph' ) && element.childCount > 0 ) {\n\t\t\t\t\t\telement = element.getChild( 0 )!;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !imageUtils.isImage( element as ModelElement ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst imageStyle = element.getAttribute( 'imageStyle' ) as string | undefined;\n\n\t\t\t\t\tif ( !imageStyle ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst imageStyleDefinition = stylesMap.get( imageStyle );\n\n\t\t\t\t\tif ( !imageStyleDefinition || !imageStyleDefinition.modelElements.includes( ( element as ModelElement ).name ) ) {\n\t\t\t\t\t\twriter.removeAttribute( 'imageStyle', element );\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t} );\n\t}\n}\n\n/**\n * Returns a mapping of generic alignment values ('left', 'right', 'center') to their corresponding\n * block image alignment style names.\n *\n * This function is particularly useful for scenarios like `td[align]` conversion, which needs to know\n * exactly how to map a generic `align` attribute to the correct alignment value. This mapping is necessary\n * because the actual alignment value can differ depending on the target element type (e.g., block images\n * vs. tables).\n *\n * @param styles An array of available image style option definitions.\n * @returns A record mapping basic alignments to their valid, block-specific style names.\n */\nfunction getBlockAlignmentAttributeProperty( styles: Array<ImageStyleOptionDefinition> ): ModelBlockAlignmentAttributesMapping {\n\tconst pickFirstSupported = ( ...names: Array<string> ) => {\n\t\tconst found = names\n\t\t\t.map( name => getStyleDefinitionByName( name, styles ) )\n\t\t\t.find( definition => definition?.modelElements.includes( 'imageBlock' ) );\n\n\t\tif ( !found ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn {\n\t\t\tisDefault: !!found.isDefault,\n\t\t\tvalue: found.name\n\t\t};\n\t};\n\n\tconst candidates: Record<string, Array<string>> = {\n\t\tleft: [ 'alignBlockLeft', 'alignLeft' ],\n\t\tright: [ 'alignBlockRight', 'alignRight' ],\n\t\tcenter: [ 'block', 'alignCenter' ]\n\t};\n\n\treturn Object.fromEntries(\n\t\tObject.entries( candidates )\n\t\t\t.map( ( [ align, names ] ) => [ align, pickFirstSupported( ...names ) ] )\n\t\t\t.filter( ( [ , resolved ] ) => resolved !== undefined )\n\t);\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle/imagestyleui\n */\n\nimport { Plugin, type PluginDependenciesOf, type Command } from '@ckeditor/ckeditor5-core';\nimport { ButtonView, createDropdown, addToolbarToDropdown, SplitButtonView } from '@ckeditor/ckeditor5-ui';\nimport { isObject, identity } from 'es-toolkit/compat';\nimport { ImageStyleEditing } from './imagestyleediting.js';\nimport { utils } from './utils.js';\nimport type { ImageStyleDropdownDefinition, ImageStyleOptionDefinition } from '../imageconfig.js';\nimport { type ImageStyleCommand } from './imagestylecommand.js';\n\n/**\n * The image style UI plugin.\n *\n * It registers buttons corresponding to the {@link module:image/imageconfig~ImageConfig#styles} configuration.\n * It also registers the {@link module:image/imagestyle/utils#DEFAULT_DROPDOWN_DEFINITIONS default drop-downs} and the\n * custom drop-downs defined by the developer in the {@link module:image/imageconfig~ImageConfig#toolbar} configuration.\n */\nexport class ImageStyleUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageStyleEditing ]> {\n\t\treturn [ ImageStyleEditing ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyleUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns the default localized style titles provided by the plugin.\n\t *\n\t * The following localized titles corresponding with\n\t * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS} are available:\n\t *\n\t * * `'Wrap text'`,\n\t * * `'Break text'`,\n\t * * `'In line'`,\n\t * * `'Full size image'`,\n\t * * `'Side image'`,\n\t * * `'Left aligned image'`,\n\t * * `'Centered image'`,\n\t * * `'Right aligned image'`\n\t */\n\tpublic get localizedDefaultStylesTitles(): Record<string, string> {\n\t\tconst t = this.editor.t;\n\n\t\treturn {\n\t\t\t'Wrap text': t( 'Wrap text' ),\n\t\t\t'Break text': t( 'Break text' ),\n\t\t\t'In line': t( 'In line' ),\n\t\t\t'Full size image': t( 'Full size image' ),\n\t\t\t'Side image': t( 'Side image' ),\n\t\t\t'Left aligned image': t( 'Left aligned image' ),\n\t\t\t'Centered image': t( 'Centered image' ),\n\t\t\t'Right aligned image': t( 'Right aligned image' )\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst plugins = this.editor.plugins;\n\t\tconst toolbarConfig = this.editor.config.get( 'image.toolbar' ) || [];\n\t\tconst imageStyleEditing: ImageStyleEditing = plugins.get( 'ImageStyleEditing' );\n\n\t\tconst definedStyles = translateStyles(\n\t\t\timageStyleEditing.normalizedStyles!,\n\t\t\tthis.localizedDefaultStylesTitles\n\t\t);\n\n\t\tfor ( const styleConfig of definedStyles ) {\n\t\t\tthis._createButton( styleConfig );\n\t\t}\n\n\t\tconst definedDropdowns = translateStyles(\n\t\t\t[\n\t\t\t\t...toolbarConfig.filter( isObject ) as Array<ImageStyleDropdownDefinition>,\n\t\t\t\t...utils.getDefaultDropdownDefinitions( plugins )\n\t\t\t],\n\t\t\tthis.localizedDefaultStylesTitles\n\t\t);\n\n\t\tfor ( const dropdownConfig of definedDropdowns ) {\n\t\t\tthis._createDropdown( dropdownConfig, definedStyles );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a dropdown and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t */\n\tprivate _createDropdown( dropdownConfig: ImageStyleDropdownDefinition, definedStyles: Array<ImageStyleOptionDefinition> ): void {\n\t\tconst factory = this.editor.ui.componentFactory;\n\n\t\tfactory.add( dropdownConfig.name, locale => {\n\t\t\tlet defaultButton: ButtonView | undefined;\n\n\t\t\tconst { defaultItem, items, title } = dropdownConfig;\n\t\t\tconst buttonViews = items\n\t\t\t\t.filter( itemName => definedStyles.find( ( { name } ) => getUIComponentName( name ) === itemName ) )\n\t\t\t\t.map( buttonName => {\n\t\t\t\t\tconst button = factory.create( buttonName ) as ButtonView;\n\n\t\t\t\t\tif ( buttonName === defaultItem ) {\n\t\t\t\t\t\tdefaultButton = button;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn button;\n\t\t\t\t} );\n\n\t\t\tif ( items.length !== buttonViews.length ) {\n\t\t\t\tutils.warnInvalidStyle( { dropdown: dropdownConfig } );\n\t\t\t}\n\n\t\t\tconst dropdownView = createDropdown( locale, SplitButtonView );\n\t\t\tconst splitButtonView = dropdownView.buttonView as SplitButtonView;\n\t\t\tconst splitButtonViewArrow = splitButtonView.arrowView;\n\n\t\t\taddToolbarToDropdown( dropdownView, buttonViews, { enableActiveItemFocusOnDropdownOpen: true } );\n\n\t\t\tsplitButtonView.set( {\n\t\t\t\tlabel: getDropdownButtonTitle( title, defaultButton!.label! ),\n\t\t\t\tclass: null,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tsplitButtonViewArrow.unbind( 'label' );\n\t\t\tsplitButtonViewArrow.set( {\n\t\t\t\tlabel: title\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'icon' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n\t\t\t\tconst index = areOn.findIndex( identity );\n\n\t\t\t\treturn ( index < 0 ) ? defaultButton!.icon : buttonViews[ index ].icon;\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'label' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n\t\t\t\tconst index = areOn.findIndex( identity );\n\n\t\t\t\treturn getDropdownButtonTitle( title, ( index < 0 ) ? defaultButton!.label! : buttonViews[ index ].label! );\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'isOn' ).toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) );\n\n\t\t\tsplitButtonView.bind( 'class' )\n\t\t\t\t.toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) ? 'ck-splitbutton_flatten' : undefined );\n\n\t\t\tsplitButtonView.on( 'execute', () => {\n\t\t\t\tif ( !buttonViews.some( ( { isOn } ) => isOn ) ) {\n\t\t\t\t\tdefaultButton!.fire( 'execute' );\n\t\t\t\t} else {\n\t\t\t\t\tdropdownView.isOpen = !dropdownView.isOpen;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' )\n\t\t\t\t.toMany( buttonViews, 'isEnabled', ( ...areEnabled ) => areEnabled.some( identity ) );\n\n\t\t\t// Focus the editable after executing the command.\n\t\t\t// Overrides a default behaviour where the focus is moved to the dropdown button.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/12125.\n\t\t\tthis.listenTo( dropdownView, 'execute', () => {\n\t\t\t\tthis.editor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a button and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t */\n\tprivate _createButton( buttonConfig: ImageStyleOptionDefinition ): void {\n\t\tconst buttonName = buttonConfig.name;\n\n\t\tthis.editor.ui.componentFactory.add( getUIComponentName( buttonName ), locale => {\n\t\t\tconst editor = this.editor;\n\t\t\tconst command: ImageStyleCommand = editor.commands.get( 'imageStyle' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: buttonConfig.title,\n\t\t\t\ticon: buttonConfig.icon,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Per-style applicability lives on the command (`isStyleEnabled`). The binding observes\n\t\t\t// every command whose state can affect that answer (`imageStyle` itself plus the type\n\t\t\t// commands that may be triggered internally) so the button re-evaluates on each refresh.\n\t\t\tconst reactiveSources: Array<Command> = [ command ];\n\t\t\tconst imageTypeBlock = editor.commands.get( 'imageTypeBlock' );\n\t\t\tconst imageTypeInline = editor.commands.get( 'imageTypeInline' );\n\n\t\t\tif ( imageTypeBlock ) {\n\t\t\t\treactiveSources.push( imageTypeBlock );\n\t\t\t}\n\t\t\tif ( imageTypeInline ) {\n\t\t\t\treactiveSources.push( imageTypeInline );\n\t\t\t}\n\n\t\t\tview.bind( 'isEnabled' ).toMany( reactiveSources, 'isEnabled', () => command.isStyleEnabled( buttonName ) );\n\t\t\tview.bind( 'isOn' ).to( command, 'value', value => value === buttonName );\n\t\t\tview.on( 'execute', this._executeCommand.bind( this, buttonName ) );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\tprivate _executeCommand( name: string ): void {\n\t\tthis.editor.execute( 'imageStyle', { value: name } );\n\t\tthis.editor.editing.view.focus();\n\t}\n}\n\n/**\n * Returns the translated `title` from the passed styles array.\n */\nfunction translateStyles<T extends ImageStyleOptionDefinition | ImageStyleDropdownDefinition>(\n\tstyles: Array<T>,\n\ttitles: Record<string, string>\n): Array<T> {\n\tfor ( const style of styles ) {\n\t\t// Localize the titles of the styles, if a title corresponds with\n\t\t// a localized default provided by the plugin.\n\t\tif ( titles[ style.title! ] ) {\n\t\t\tstyle.title = titles[ style.title! ];\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n/**\n * Returns the image style component name with the \"imageStyle:\" prefix.\n */\nfunction getUIComponentName( name: string ): string {\n\treturn `imageStyle:${ name }`;\n}\n\n/**\n * Returns title for the splitbutton containing the dropdown title and default action item title.\n */\nfunction getDropdownButtonTitle( dropdownTitle: string | undefined, buttonTitle: string ): string {\n\treturn ( dropdownTitle ? dropdownTitle + ': ' : '' ) + buttonTitle;\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagestyle\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { ImageStyleEditing } from './imagestyle/imagestyleediting.js';\nimport { ImageStyleUI } from './imagestyle/imagestyleui.js';\n\n/**\n * The image style plugin.\n *\n * For a detailed overview of the image styles feature, check the {@glink features/images/images-styles documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n * * {@link module:image/imagestyle/imagestyleediting~ImageStyleEditing},\n * * {@link module:image/imagestyle/imagestyleui~ImageStyleUI}\n *\n * It provides a default configuration, which can be extended or overwritten.\n * Read more about the {@link module:image/imageconfig~ImageConfig#styles image styles configuration}.\n */\nexport class ImageStyle extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageStyleEditing, ImageStyleUI ]> {\n\t\treturn [ ImageStyleEditing, ImageStyleUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyle' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/imagetoolbar\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\nimport { WidgetToolbarRepository } from '@ckeditor/ckeditor5-widget';\n\nimport { ImageUtils } from './imageutils.js';\nimport type { ImageStyleDropdownDefinition } from './imageconfig.js';\n\nimport { isObject } from 'es-toolkit/compat';\n\n/**\n * The image toolbar plugin. It creates and manages the image toolbar (the toolbar displayed when an image is selected).\n *\n * For an overview, check the {@glink features/images/images-overview#image-contextual-toolbar image contextual toolbar} documentation.\n *\n * Instances of toolbar components (e.g. buttons) are created using the editor's\n * {@link module:ui/componentfactory~ComponentFactory component factory}\n * based on the {@link module:image/imageconfig~ImageConfig#toolbar `image.toolbar` configuration option}.\n *\n * The toolbar uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport class ImageToolbar extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ WidgetToolbarRepository, ImageUtils ]> {\n\t\treturn [ WidgetToolbarRepository, ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageToolbar' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\twidgetToolbarRepository.register( 'image', {\n\t\t\tariaLabel: t( 'Image toolbar' ),\n\t\t\titems: normalizeDeclarativeConfig( editor.config.get( 'image.toolbar' ) || [] ),\n\t\t\tgetRelatedElement: selection => imageUtils.getClosestSelectedImageWidget( selection )!\n\t\t} );\n\t}\n}\n\n/**\n * Convert the dropdown definitions to their keys registered in the ComponentFactory.\n * The registration precess should be handled by the plugin which handles the UI of a particular feature.\n */\nfunction normalizeDeclarativeConfig( config: Array<string | ImageStyleDropdownDefinition> ): Array<string> {\n\treturn config.map( item => isObject( item ) ? item.name : item );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module image/pictureediting\n */\n\nimport { Plugin, type PluginDependenciesOf } from '@ckeditor/ckeditor5-core';\n\nimport { ImageEditing } from './image/imageediting.js';\nimport { ImageUtils } from './imageutils.js';\nimport { downcastSourcesAttribute, upcastPicture } from './image/converters.js';\nimport type { ImageUploadEditing, ImageUploadCompleteEvent } from './imageupload/imageuploadediting.js';\n\n/**\n * This plugin enables the [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture) element support in the editor.\n *\n * * It enables the `sources` model attribute on `imageBlock` and `imageInline` model elements\n * (brought by {@link module:image/imageblock~ImageBlock} and {@link module:image/imageinline~ImageInline}, respectively).\n * * It translates the `sources` model element to the view (also: data) structure that may look as follows:\n *\n * ```html\n * <p>Inline image using picture:\n * \t<picture>\n * \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n * \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n * \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n * \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n * \t</picture>\n * </p>\n *\n * <p>Block image using picture:</p>\n * <figure class=\"image\">\n * \t<picture>\n * \t\t<source media=\"(min-width: 800px)\" srcset=\"image-large.webp\" type=\"image/webp\">\n * \t\t<source media=\"(max-width: 800px)\" srcset=\"image-small.webp\" type=\"image/webp\">\n * \t\t<!-- Other sources as specified in the \"sources\" model attribute... -->\n * \t\t<img src=\"image.png\" alt=\"An image using picture\" />\n * \t</picture>\n * \t<figcaption>Caption of the image</figcaption>\n * </figure>\n * ```\n *\n * **Note:** The value of the `sources` {@glink framework/architecture/editing-engine#changing-the-model model attribute}\n * in both examples equals:\n *\n * ```css\n * [\n * \t{\n * \t\tmedia: '(min-width: 800px)',\n * \t\tsrcset: 'image-large.webp',\n * \t\ttype: 'image/webp'\n * \t},\n * \t{\n * \t\tmedia: '(max-width: 800px)',\n * \t\tsrcset: 'image-small.webp',\n * \t\ttype: 'image/webp'\n * \t}\n * ]\n * ```\n *\n * * It integrates with the {@link module:image/imageupload~ImageUpload} plugin so images uploaded in the editor\n * automatically render using `<picture>` if the {@glink features/images/image-upload/image-upload upload adapter}\n * supports image sources and provides neccessary data.\n *\n * @private\n */\nexport class PictureEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires(): PluginDependenciesOf<[ ImageEditing, ImageUtils ]> {\n\t\treturn [ ImageEditing, ImageUtils ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PictureEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.model.schema.extend( 'imageBlock', {\n\t\t\t\tallowAttributes: [ 'sources' ]\n\t\t\t} );\n\t\t}\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.model.schema.extend( 'imageInline', {\n\t\t\t\tallowAttributes: [ 'sources' ]\n\t\t\t} );\n\t\t}\n\n\t\tthis._setupConversion();\n\t\tthis._setupImageUploadEditingIntegration();\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting images using the `<picture>` view element\n\t * and the model `sources` attribute.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'upcast' ).add( upcastPicture( imageUtils ) );\n\t\tconversion.for( 'downcast' ).add( downcastSourcesAttribute( imageUtils ) );\n\t}\n\n\t/**\n\t * Makes it possible for uploaded images to get the `sources` model attribute and the `<picture>...</picture>`\n\t * view structure out-of-the-box if relevant data is provided along the\n\t * {@link module:image/imageupload/imageuploadediting~ImageUploadEditing#event:uploadComplete} event.\n\t */\n\tprivate _setupImageUploadEditingIntegration(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( !editor.plugins.has( 'ImageUploadEditing' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageUploadEditing: ImageUploadEditing = editor.plugins.get( 'ImageUploadEditing' );\n\n\t\tthis.listenTo<ImageUploadCompleteEvent>(\n\t\t\timageUploadEditing,\n\t\t\t'uploadComplete',\n\t\t\t( evt, { imageElement, data } ) => {\n\t\t\t\tconst sources = data.sources;\n\n\t\t\t\tif ( !sources ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.setAttributes( {\n\t\t\t\t\t\tsources\n\t\t\t\t\t}, imageElement );\n\t\t\t\t} );\n\t\t\t} );\n\t}\n}\n"]}