@ckeditor/ckeditor5-paste-from-office 47.2.0 → 47.3.0-alpha.1

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/filters/bookmark.ts","../src/filters/utils.ts","../src/filters/list.ts","../src/filters/image.ts","../src/filters/removemsattributes.ts","../src/filters/table.ts","../src/filters/removeinvalidtablewidth.ts","../src/filters/replacemsfootnotes.ts","../src/normalizers/mswordnormalizer.ts","../src/filters/removeboldwrapper.ts","../src/filters/br.ts","../src/filters/replacetabswithinprewithspaces.ts","../src/normalizers/googledocsnormalizer.ts","../src/filters/removexmlns.ts","../src/filters/removegooglesheetstag.ts","../src/filters/removestyleblock.ts","../src/normalizers/googlesheetsnormalizer.ts","../src/filters/space.ts","../src/filters/parse.ts","../src/pastefromoffice.ts"],"names":["transformBookmarks","documentFragment","writer","elementsToChange","value","createRangeIn","element","item","is","hasAttribute","push","index","parent","getChildIndex","children","getChildren","insertChild","convertCssLengthToPx","numericValue","parseFloat","endsWith","toPx","isPx","undefined","Math","round","transformListItemLikeElementsIntoLists","stylesString","hasMultiLevelListPlugin","childCount","ViewUpcastWriter","document","itemLikeElements","findAllItemLikeElements","length","encounteredLists","stack","itemLikeElement","indent","isListContinuation","originalListId","id","min","listStyle","detectListStyle","listElement","name","type","startIndex","createNewEmptyList","marginLeft","setStyle","parentListItems","listItemElements","appendChild","listItem","createElement","removeBulletElement","removeStyle","stackItem","find","listItems","unwrapParagraphInListItem","firstChild","getChild","unwrapElement","range","foundMargins","Set","getItems","match","getMarginLeftNormalized","Array","from","getClassNames","className","startsWith","hasStyle","getStyle","has","itemData","getListItemData","order","add","clear","currentItem","previousSibling","isList","listLikeItem","listStyleRegexp","RegExp","listStyleTypeRegex","listStartIndexRegex","legalStyleListRegex","multiLevelNumberFormatTypeRegex","legalStyleListMatch","exec","multiLevelNumberFormatMatch","islegalStyleList","listStyleMatch","listStyleType","listStyleTypeMatch","trim","bulletedStyle","findBulletedListStyle","listStartIndexMatch","parseInt","style","mapListStyleDefinition","isLegalStyleList","getAttribute","listMarkerElement","findListMarkerNode","listMarker","_data","childNode","textNodeOrElement","list","setAttribute","addClass","idMatch","orderMatch","indentMatch","bulletMatcher","Matcher","styles","remove","replaceImagesSourceWithBase64","rtfData","upcastWriter","shapesIds","findAllShapesIds","removeAllImgElementsRepresentingShapes","insertMissingImgs","removeAllShapeElements","images","findAllImageElementsWithLocalSource","replaceImagesFileSourceWithInlineRepresentation","extractImageDataFromRtf","_convertHexToBase64","hexString","btoa","map","char","String","fromCharCode","join","shapeElementsMatcher","el","prevSiblingName","exceptionIds","isElementAShape","hasElementGfxdataAttribute","isPreviousSiblingAShapeType","isElementIdInExceptionsArray","some","includes","imageElementsMatcher","imgs","shapes","split","every","shape","indexOf","img","shapeIds","containsMatchingImg","attrs","src","findSrc","alt","nodes","node","child","currentImageIndex","imageIndex","regexPictureHeader","regexPicture","source","result","image","imageType","hex","replace","imageElements","imagesHexSources","i","rtfHexSource","newSrc","removeMSAttributes","elementsToUnwrap","removeClass","styleName","getStyleNames","isEmpty","itemParent","childIndex","transformTables","sides","side","props","prop","removeInvalidTableWidth","removeAttribute","replaceMSFootnotes","msFootnotesRefs","Map","msFootnotesDefs","msFootnotesDefinitionsList","msFootnoteDef","findAncestor","msFootnoteDefId","set","msFootnoteRefId","size","footnotesDefinitionsList","createFootnotesListViewElement","footnoteId","msFootnoteRef","get","createFootnoteRefViewElement","defElements","createFootnoteDefViewElement","removeMSReferences","clonedChild","clone","content","elementsToRemove","textNodesToTrim","unshift","nextSibling","data","textNode","trimmedData","substring","newTextNode","createText","class","sup","link","href","backLink","msWordMatch1","msWordMatch2","PasteFromOfficeMSWordNormalizer","isActive","htmlString","test","execute","body","_parsedData","dataTransfer","getData","removeBoldWrapper","transformBlockBrsToParagraphs","viewDocument","ViewDocument","stylesProcessor","domConverter","ViewDomConverter","renderingMode","blockElements","inlineObjectElements","elementsToReplace","findSibling","nextSiblingIsBlock","isBlockViewElement","previousSiblingIsBlock","hasClass","viewElement","direction","position","createPositionAt","getLastMatchingPosition","nodeAfter","nodeBefore","replaceTabsWithinPreWithSpaces","tabWidth","textNodesToReplace","hasPreWrapParent","replaceTabsInTextNode","whiteSpace","replacedData","replaceAll","repeat","googleDocsMatch","GoogleDocsNormalizer","removeXmlns","removeGoogleSheetsTag","removeStyleBlock","googleSheetsMatch","GoogleSheetsNormalizer","normalizeSpacing","normalizeSafariSpaceSpans","normalizeSpacerunSpans","htmlDocument","querySelectorAll","forEach","htmlElement","innerTextLength","innerText","substr","fullMatch","spaces","parsePasteOfficeHtml","domParser","DOMParser","normalizedHtml","cleanContentAfterBody","parseFromString","bodyString","innerHTML","bodyView","documentToView","stylesObject","extractStyles","fragment","createDocumentFragment","childNodes","domToView","skipComments","styleTags","getElementsByTagName","sheet","cssRules","bodyCloseTag","htmlCloseTag","bodyCloseIndex","htmlCloseIndex","PasteFromOffice","Plugin","pluginName","licenseFeatureCode","isOfficialPlugin","isPremiumPlugin","requires","ClipboardPipeline","init","editor","clipboardPipeline","plugins","editing","view","normalizers","on","evt","_isTransformedWithPasteFromOffice","codeBlock","model","selection","getFirstPosition","activeNormalizer","normalizer","priority"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { ClipboardPipeline } from '@ckeditor/ckeditor5-clipboard/dist/index.js';\nimport { ViewUpcastWriter, Matcher, ViewDocument, ViewDomConverter } from '@ckeditor/ckeditor5-engine/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/bookmark\n */ /**\n * Transforms `<a>` elements which are bookmarks by moving their children after the element.\n *\n * @internal\n */ function transformBookmarks(documentFragment, writer) {\n const elementsToChange = [];\n for (const value of writer.createRangeIn(documentFragment)){\n const element = value.item;\n if (element.is('element', 'a') && !element.hasAttribute('href') && (element.hasAttribute('id') || element.hasAttribute('name'))) {\n elementsToChange.push(element);\n }\n }\n for (const element of elementsToChange){\n const index = element.parent.getChildIndex(element) + 1;\n const children = element.getChildren();\n writer.insertChild(index, children, element.parent);\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/utils\n */ /**\n * Normalizes CSS length value to 'px'.\n *\n * @internal\n */ function convertCssLengthToPx(value) {\n const numericValue = parseFloat(value);\n if (value.endsWith('pt')) {\n // 1pt = 1in / 72\n return toPx(numericValue * 96 / 72);\n } else if (value.endsWith('pc')) {\n // 1pc = 12pt = 1in / 6.\n return toPx(numericValue * 12 * 96 / 72);\n } else if (value.endsWith('in')) {\n // 1in = 2.54cm = 96px\n return toPx(numericValue * 96);\n } else if (value.endsWith('cm')) {\n // 1cm = 96px / 2.54\n return toPx(numericValue * 96 / 2.54);\n } else if (value.endsWith('mm')) {\n // 1mm = 1cm / 10\n return toPx(numericValue / 10 * 96 / 2.54);\n }\n return value;\n}\n/**\n * Returns true for value with 'px' unit.\n *\n * @internal\n */ function isPx(value) {\n return value !== undefined && value.endsWith('px');\n}\n/**\n * Returns a rounded 'px' value.\n *\n * @internal\n */ function toPx(value) {\n return Math.round(value) + 'px';\n}\n\n/**\n * Transforms Word specific list-like elements to the semantic HTML lists.\n *\n * Lists in Word are represented by block elements with special attributes like:\n *\n * ```xml\n * <p class=MsoListParagraphCxSpFirst style='mso-list:l1 level1 lfo1'>...</p> // Paragraph based list.\n * <h1 style='mso-list:l0 level1 lfo1'>...</h1> // Heading 1 based list.\n * ```\n *\n * @param documentFragment The view structure to be transformed.\n * @param stylesString Styles from which list-like elements styling will be extracted.\n * @internal\n */ function transformListItemLikeElementsIntoLists(documentFragment, stylesString, hasMultiLevelListPlugin) {\n if (!documentFragment.childCount) {\n return;\n }\n const writer = new ViewUpcastWriter(documentFragment.document);\n const itemLikeElements = findAllItemLikeElements(documentFragment, writer);\n if (!itemLikeElements.length) {\n return;\n }\n const encounteredLists = {};\n const stack = [];\n for (const itemLikeElement of itemLikeElements){\n if (itemLikeElement.indent !== undefined) {\n if (!isListContinuation(itemLikeElement)) {\n stack.length = 0;\n }\n // Combined list ID for addressing encounter lists counters.\n const originalListId = `${itemLikeElement.id}:${itemLikeElement.indent}`;\n // Normalized list item indentation.\n const indent = Math.min(itemLikeElement.indent - 1, stack.length);\n // Trimming of the list stack on list ID change.\n if (indent < stack.length && stack[indent].id !== itemLikeElement.id) {\n stack.length = indent;\n }\n // Trimming of the list stack on lower indent list encountered.\n if (indent < stack.length - 1) {\n stack.length = indent + 1;\n } else {\n const listStyle = detectListStyle(itemLikeElement, stylesString);\n // Create a new OL/UL if required (greater indent or different list type).\n if (indent > stack.length - 1 || stack[indent].listElement.name != listStyle.type) {\n // Check if there is some start index to set from a previous list.\n if (indent == 0 && listStyle.type == 'ol' && itemLikeElement.id !== undefined && encounteredLists[originalListId]) {\n listStyle.startIndex = encounteredLists[originalListId];\n }\n const listElement = createNewEmptyList(listStyle, writer, hasMultiLevelListPlugin);\n // Apply list padding only if we have margins for the item and the parent item.\n if (isPx(itemLikeElement.marginLeft) && (indent == 0 || isPx(stack[indent - 1].marginLeft))) {\n let marginLeft = itemLikeElement.marginLeft;\n if (indent > 0) {\n // Convert the padding from absolute to relative.\n marginLeft = toPx(parseFloat(marginLeft) - parseFloat(stack[indent - 1].marginLeft));\n }\n writer.setStyle('padding-left', marginLeft, listElement);\n }\n // Insert the new OL/UL.\n if (stack.length == 0) {\n const parent = itemLikeElement.element.parent;\n const index = parent.getChildIndex(itemLikeElement.element) + 1;\n writer.insertChild(index, listElement, parent);\n } else {\n const parentListItems = stack[indent - 1].listItemElements;\n writer.appendChild(listElement, parentListItems[parentListItems.length - 1]);\n }\n // Update the list stack for other items to reference.\n stack[indent] = {\n ...itemLikeElement,\n listElement,\n listItemElements: []\n };\n // Prepare list counter for start index.\n if (indent == 0 && itemLikeElement.id !== undefined) {\n encounteredLists[originalListId] = listStyle.startIndex || 1;\n }\n }\n }\n // Use LI if it is already it or create a new LI element.\n // https://github.com/ckeditor/ckeditor5/issues/15964\n const listItem = itemLikeElement.element.name == 'li' ? itemLikeElement.element : writer.createElement('li');\n // Append the LI to OL/UL.\n writer.appendChild(listItem, stack[indent].listElement);\n stack[indent].listItemElements.push(listItem);\n // Increment list counter.\n if (indent == 0 && itemLikeElement.id !== undefined) {\n encounteredLists[originalListId]++;\n }\n // Append list block to LI.\n if (itemLikeElement.element != listItem) {\n writer.appendChild(itemLikeElement.element, listItem);\n }\n // Clean list block.\n removeBulletElement(itemLikeElement.element, writer);\n writer.removeStyle('text-indent', itemLikeElement.element); // #12361\n writer.removeStyle('margin-left', itemLikeElement.element);\n } else {\n // Other blocks in a list item.\n const stackItem = stack.find((stackItem)=>stackItem.marginLeft == itemLikeElement.marginLeft);\n // This might be a paragraph that has known margin, but it is not a real list block.\n if (stackItem) {\n const listItems = stackItem.listItemElements;\n // Append block to LI.\n writer.appendChild(itemLikeElement.element, listItems[listItems.length - 1]);\n writer.removeStyle('margin-left', itemLikeElement.element);\n } else {\n stack.length = 0;\n }\n }\n }\n}\n/**\n * Removes paragraph wrapping content inside a list item.\n *\n * @internal\n */ function unwrapParagraphInListItem(documentFragment, writer) {\n for (const value of writer.createRangeIn(documentFragment)){\n const element = value.item;\n if (element.is('element', 'li')) {\n // Google Docs allows for single paragraph inside LI.\n const firstChild = element.getChild(0);\n if (firstChild && firstChild.is('element', 'p')) {\n writer.unwrapElement(firstChild);\n }\n }\n }\n}\n/**\n * Finds all list-like elements in a given document fragment.\n *\n * @param documentFragment Document fragment in which to look for list-like nodes.\n * @returns Array of found list-like items. Each item is an object containing\n * @internal\n */ function findAllItemLikeElements(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const itemLikeElements = [];\n const foundMargins = new Set();\n for (const item of range.getItems()){\n // https://github.com/ckeditor/ckeditor5/issues/15964\n if (!item.is('element') || !item.name.match(/^(p|h\\d+|li|div)$/)) {\n continue;\n }\n // Try to rely on margin-left style to find paragraphs visually aligned with previously encountered list item.\n let marginLeft = getMarginLeftNormalized(item);\n // Ignore margin-left 0 style if there is no MsoList... class.\n if (marginLeft !== undefined && parseFloat(marginLeft) == 0 && !Array.from(item.getClassNames()).find((className)=>className.startsWith('MsoList'))) {\n marginLeft = undefined;\n }\n // List item or a following list item block.\n if (item.hasStyle('mso-list') && item.getStyle('mso-list') !== 'none' || marginLeft !== undefined && foundMargins.has(marginLeft)) {\n const itemData = getListItemData(item);\n itemLikeElements.push({\n element: item,\n id: itemData.id,\n order: itemData.order,\n indent: itemData.indent,\n marginLeft\n });\n if (marginLeft !== undefined) {\n foundMargins.add(marginLeft);\n }\n } else {\n foundMargins.clear();\n }\n }\n return itemLikeElements;\n}\n/**\n * Whether the given element is possibly a list continuation. Previous element was wrapped into a list\n * or the current element already is inside a list.\n */ function isListContinuation(currentItem) {\n const previousSibling = currentItem.element.previousSibling;\n if (!previousSibling) {\n const parent = currentItem.element.parent;\n // If it's a li inside ul or ol like in here: https://github.com/ckeditor/ckeditor5/issues/15964.\n // If the parent has previous sibling, which is not a list, then it is not a continuation.\n return isList(parent) && (!parent.previousSibling || isList(parent.previousSibling));\n }\n // Even with the same id the list does not have to be continuous (#43).\n return isList(previousSibling);\n}\nfunction isList(element) {\n return element.is('element', 'ol') || element.is('element', 'ul');\n}\n/**\n * Extracts list item style from the provided CSS.\n *\n * List item style is extracted from the CSS stylesheet. Each list with its specific style attribute\n * value (`mso-list:l1 level1 lfo1`) has its dedicated properties in a CSS stylesheet defined with a selector like:\n *\n * ```css\n * @list l1:level1 { ... }\n * ```\n *\n * It contains `mso-level-number-format` property which defines list numbering/bullet style. If this property\n * is not defined it means default `decimal` numbering.\n *\n * Here CSS string representation is used as `mso-level-number-format` property is an invalid CSS property\n * and will be removed during CSS parsing.\n *\n * @param listLikeItem List-like item for which list style will be searched for. Usually\n * a result of `findAllItemLikeElements()` function.\n * @param stylesString CSS stylesheet.\n * @returns An object with properties:\n *\n * * type - List type, could be `ul` or `ol`.\n * * startIndex - List start index, valid only for ordered lists.\n * * style - List style, for example: `decimal`, `lower-roman`, etc. It is extracted\n * directly from Word stylesheet and adjusted to represent proper values for the CSS `list-style-type` property.\n * If it cannot be adjusted, the `null` value is returned.\n */ function detectListStyle(listLikeItem, stylesString) {\n const listStyleRegexp = new RegExp(`@list l${listLikeItem.id}:level${listLikeItem.indent}\\\\s*({[^}]*)`, 'gi');\n const listStyleTypeRegex = /mso-level-number-format:([^;]{0,100});/gi;\n const listStartIndexRegex = /mso-level-start-at:\\s{0,100}([0-9]{0,10})\\s{0,100};/gi;\n const legalStyleListRegex = new RegExp(`@list\\\\s+l${listLikeItem.id}:level\\\\d\\\\s*{[^{]*mso-level-text:\"%\\\\d\\\\\\\\.`, 'gi');\n const multiLevelNumberFormatTypeRegex = new RegExp(`@list l${listLikeItem.id}:level\\\\d\\\\s*{[^{]*mso-level-number-format:`, 'gi');\n const legalStyleListMatch = legalStyleListRegex.exec(stylesString);\n const multiLevelNumberFormatMatch = multiLevelNumberFormatTypeRegex.exec(stylesString);\n // Multi level lists in Word have mso-level-number-format attribute except legal lists,\n // so we used that. If list has legal list match and doesn't has mso-level-number-format\n // then this is legal-list.\n const islegalStyleList = legalStyleListMatch && !multiLevelNumberFormatMatch;\n const listStyleMatch = listStyleRegexp.exec(stylesString);\n let listStyleType = 'decimal'; // Decimal is default one.\n let type = 'ol'; // <ol> is default list.\n let startIndex = null;\n if (listStyleMatch && listStyleMatch[1]) {\n const listStyleTypeMatch = listStyleTypeRegex.exec(listStyleMatch[1]);\n if (listStyleTypeMatch && listStyleTypeMatch[1]) {\n listStyleType = listStyleTypeMatch[1].trim();\n type = listStyleType !== 'bullet' && listStyleType !== 'image' ? 'ol' : 'ul';\n }\n // Styles for the numbered lists are always defined in the Word CSS stylesheet.\n // Unordered lists MAY contain a value for the Word CSS definition `mso-level-text` but sometimes\n // this tag is missing. And because of that, we cannot depend on that. We need to predict the list style value\n // based on the list style marker element.\n if (listStyleType === 'bullet') {\n const bulletedStyle = findBulletedListStyle(listLikeItem.element);\n if (bulletedStyle) {\n listStyleType = bulletedStyle;\n }\n } else {\n const listStartIndexMatch = listStartIndexRegex.exec(listStyleMatch[1]);\n if (listStartIndexMatch && listStartIndexMatch[1]) {\n startIndex = parseInt(listStartIndexMatch[1]);\n }\n }\n if (islegalStyleList) {\n type = 'ol';\n }\n }\n return {\n type,\n startIndex,\n style: mapListStyleDefinition(listStyleType),\n isLegalStyleList: islegalStyleList\n };\n}\n/**\n * Tries to extract the `list-style-type` value based on the marker element for bulleted list.\n */ function findBulletedListStyle(element) {\n // https://github.com/ckeditor/ckeditor5/issues/15964\n if (element.name == 'li' && element.parent.name == 'ul' && element.parent.hasAttribute('type')) {\n return element.parent.getAttribute('type');\n }\n const listMarkerElement = findListMarkerNode(element);\n if (!listMarkerElement) {\n return null;\n }\n const listMarker = listMarkerElement._data;\n if (listMarker === 'o') {\n return 'circle';\n } else if (listMarker === '·') {\n return 'disc';\n } else if (listMarker === '§') {\n return 'square';\n }\n return null;\n}\n/**\n * Tries to find a text node that represents the marker element (list-style-type).\n */ function findListMarkerNode(element) {\n // If the first child is a text node, it is the data for the element.\n // The list-style marker is not present here.\n if (element.getChild(0).is('$text')) {\n return null;\n }\n for (const childNode of element.getChildren()){\n // The list-style marker will be inside the `<span>` element. Let's ignore all non-span elements.\n // It may happen that the `<a>` element is added as the first child. Most probably, it's an anchor element.\n if (!childNode.is('element', 'span')) {\n continue;\n }\n const textNodeOrElement = childNode.getChild(0);\n if (!textNodeOrElement) {\n continue;\n }\n // If already found the marker element, use it.\n if (textNodeOrElement.is('$text')) {\n return textNodeOrElement;\n }\n return textNodeOrElement.getChild(0);\n }\n /* istanbul ignore next -- @preserve */ return null;\n}\n/**\n * Parses the `list-style-type` value extracted directly from the Word CSS stylesheet and returns proper CSS definition.\n */ function mapListStyleDefinition(value) {\n if (value.startsWith('arabic-leading-zero')) {\n return 'decimal-leading-zero';\n }\n switch(value){\n case 'alpha-upper':\n return 'upper-alpha';\n case 'alpha-lower':\n return 'lower-alpha';\n case 'roman-upper':\n return 'upper-roman';\n case 'roman-lower':\n return 'lower-roman';\n case 'circle':\n case 'disc':\n case 'square':\n return value;\n default:\n return null;\n }\n}\n/**\n * Creates a new list OL/UL element.\n */ function createNewEmptyList(listStyle, writer, hasMultiLevelListPlugin) {\n const list = writer.createElement(listStyle.type);\n // We do not support modifying the marker for a particular list item.\n // Set the value for the `list-style-type` property directly to the list container.\n if (listStyle.style) {\n writer.setStyle('list-style-type', listStyle.style, list);\n }\n if (listStyle.startIndex && listStyle.startIndex > 1) {\n writer.setAttribute('start', listStyle.startIndex, list);\n }\n if (listStyle.isLegalStyleList && hasMultiLevelListPlugin) {\n writer.addClass('legal-list', list);\n }\n return list;\n}\n/**\n * Extracts list item information from Word specific list-like element style:\n *\n * ```\n * `style=\"mso-list:l1 level1 lfo1\"`\n * ```\n *\n * where:\n *\n * ```\n * * `l1` is a list id (however it does not mean this is a continuous list - see #43),\n * * `level1` is a list item indentation level,\n * * `lfo1` is a list insertion order in a document.\n * ```\n *\n * @param element Element from which style data is extracted.\n */ function getListItemData(element) {\n const listStyle = element.getStyle('mso-list');\n if (listStyle === undefined) {\n return {};\n }\n const idMatch = listStyle.match(/(^|\\s{1,100})l(\\d+)/i);\n const orderMatch = listStyle.match(/\\s{0,100}lfo(\\d+)/i);\n const indentMatch = listStyle.match(/\\s{0,100}level(\\d+)/i);\n if (idMatch && orderMatch && indentMatch) {\n return {\n id: idMatch[2],\n order: orderMatch[1],\n indent: parseInt(indentMatch[1])\n };\n }\n return {\n indent: 1 // Handle empty mso-list style as a marked for default list item.\n };\n}\n/**\n * Removes span with a numbering/bullet from a given element.\n */ function removeBulletElement(element, writer) {\n // Matcher for finding `span` elements holding lists numbering/bullets.\n const bulletMatcher = new Matcher({\n name: 'span',\n styles: {\n 'mso-list': 'Ignore'\n }\n });\n const range = writer.createRangeIn(element);\n for (const value of range){\n if (value.type === 'elementStart' && bulletMatcher.match(value.item)) {\n writer.remove(value.item);\n }\n }\n}\n/**\n * Returns element left margin normalized to 'px' if possible.\n */ function getMarginLeftNormalized(element) {\n const value = element.getStyle('margin-left');\n if (value === undefined || value.endsWith('px')) {\n return value;\n }\n return convertCssLengthToPx(value);\n}\n\n/**\n * Replaces source attribute of all `<img>` elements representing regular\n * images (not the Word shapes) with inlined base64 image representation extracted from RTF or Blob data.\n *\n * @param documentFragment Document fragment on which transform images.\n * @param rtfData The RTF data from which images representation will be used.\n * @internal\n */ function replaceImagesSourceWithBase64(documentFragment, rtfData) {\n if (!documentFragment.childCount) {\n return;\n }\n const upcastWriter = new ViewUpcastWriter(documentFragment.document);\n const shapesIds = findAllShapesIds(documentFragment, upcastWriter);\n removeAllImgElementsRepresentingShapes(shapesIds, documentFragment, upcastWriter);\n insertMissingImgs(shapesIds, documentFragment, upcastWriter);\n removeAllShapeElements(documentFragment, upcastWriter);\n const images = findAllImageElementsWithLocalSource(documentFragment, upcastWriter);\n if (images.length) {\n replaceImagesFileSourceWithInlineRepresentation(images, extractImageDataFromRtf(rtfData), upcastWriter);\n }\n}\n/**\n * Converts given HEX string to base64 representation.\n *\n * @internal\n * @param hexString The HEX string to be converted.\n * @returns Base64 representation of a given HEX string.\n */ function _convertHexToBase64(hexString) {\n return btoa(hexString.match(/\\w{2}/g).map((char)=>{\n return String.fromCharCode(parseInt(char, 16));\n }).join(''));\n}\n/**\n * Finds all shapes (`<v:*>...</v:*>`) ids. Shapes can represent images (canvas)\n * or Word shapes (which does not have RTF or Blob representation).\n *\n * @param documentFragment Document fragment from which to extract shape ids.\n * @returns Array of shape ids.\n */ function findAllShapesIds(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const shapeElementsMatcher = new Matcher({\n name: /v:(.+)/\n });\n const shapesIds = [];\n for (const value of range){\n if (value.type != 'elementStart') {\n continue;\n }\n const el = value.item;\n const previousSibling = el.previousSibling;\n const prevSiblingName = previousSibling && previousSibling.is('element') ? previousSibling.name : null;\n // List of ids which should not be considered as shapes.\n // https://github.com/ckeditor/ckeditor5/pull/15847#issuecomment-1941543983\n const exceptionIds = [\n 'Chart'\n ];\n const isElementAShape = shapeElementsMatcher.match(el);\n const hasElementGfxdataAttribute = el.getAttribute('o:gfxdata');\n const isPreviousSiblingAShapeType = prevSiblingName === 'v:shapetype';\n const isElementIdInExceptionsArray = hasElementGfxdataAttribute && exceptionIds.some((item)=>el.getAttribute('id').includes(item));\n // If shape element has 'o:gfxdata' attribute and is not directly before\n // `<v:shapetype>` element it means that it represents a Word shape.\n if (isElementAShape && hasElementGfxdataAttribute && !isPreviousSiblingAShapeType && !isElementIdInExceptionsArray) {\n shapesIds.push(value.item.getAttribute('id'));\n }\n }\n return shapesIds;\n}\n/**\n * Removes all `<img>` elements which represents Word shapes and not regular images.\n *\n * @param shapesIds Shape ids which will be checked against `<img>` elements.\n * @param documentFragment Document fragment from which to remove `<img>` elements.\n */ function removeAllImgElementsRepresentingShapes(shapesIds, documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const imageElementsMatcher = new Matcher({\n name: 'img'\n });\n const imgs = [];\n for (const value of range){\n if (value.item.is('element') && imageElementsMatcher.match(value.item)) {\n const el = value.item;\n const shapes = el.getAttribute('v:shapes') ? el.getAttribute('v:shapes').split(' ') : [];\n if (shapes.length && shapes.every((shape)=>shapesIds.indexOf(shape) > -1)) {\n imgs.push(el);\n // Shapes may also have empty source while content is paste in some browsers (Safari).\n } else if (!el.getAttribute('src')) {\n imgs.push(el);\n }\n }\n }\n for (const img of imgs){\n writer.remove(img);\n }\n}\n/**\n * Removes all shape elements (`<v:*>...</v:*>`) so they do not pollute the output structure.\n *\n * @param documentFragment Document fragment from which to remove shape elements.\n */ function removeAllShapeElements(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const shapeElementsMatcher = new Matcher({\n name: /v:(.+)/\n });\n const shapes = [];\n for (const value of range){\n if (value.type == 'elementStart' && shapeElementsMatcher.match(value.item)) {\n shapes.push(value.item);\n }\n }\n for (const shape of shapes){\n writer.remove(shape);\n }\n}\n/**\n * Inserts `img` tags if there is none after a shape.\n */ function insertMissingImgs(shapeIds, documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const shapes = [];\n for (const value of range){\n if (value.type == 'elementStart' && value.item.is('element', 'v:shape')) {\n const id = value.item.getAttribute('id');\n if (shapeIds.includes(id)) {\n continue;\n }\n if (!containsMatchingImg(value.item.parent.getChildren(), id)) {\n shapes.push(value.item);\n }\n }\n }\n for (const shape of shapes){\n const attrs = {\n src: findSrc(shape)\n };\n if (shape.hasAttribute('alt')) {\n attrs.alt = shape.getAttribute('alt');\n }\n const img = writer.createElement('img', attrs);\n writer.insertChild(shape.index + 1, img, shape.parent);\n }\n function containsMatchingImg(nodes, id) {\n for (const node of nodes){\n /* istanbul ignore else -- @preserve */ if (node.is('element')) {\n if (node.name == 'img' && node.getAttribute('v:shapes') == id) {\n return true;\n }\n if (containsMatchingImg(node.getChildren(), id)) {\n return true;\n }\n }\n }\n return false;\n }\n function findSrc(shape) {\n for (const child of shape.getChildren()){\n /* istanbul ignore else -- @preserve */ if (child.is('element') && child.getAttribute('src')) {\n return child.getAttribute('src');\n }\n }\n }\n}\n/**\n * Finds all `<img>` elements in a given document fragment which have source pointing to local `file://` resource.\n * This function also tracks the index position of each image in the document, which is essential for\n * precise matching with hexadecimal representations in RTF data.\n *\n * @param documentFragment Document fragment in which to look for `<img>` elements.\n * @returns Array of found images along with their position index in the document.\n */ function findAllImageElementsWithLocalSource(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const imageElementsMatcher = new Matcher({\n name: 'img'\n });\n const imgs = [];\n let currentImageIndex = 0;\n for (const value of range){\n if (value.item.is('element') && imageElementsMatcher.match(value.item)) {\n if (value.item.getAttribute('src').startsWith('file://')) {\n imgs.push({\n element: value.item,\n imageIndex: currentImageIndex\n });\n }\n currentImageIndex++;\n }\n }\n return imgs;\n}\n/**\n * Extracts all images HEX representations from a given RTF data.\n *\n * @param rtfData The RTF data from which to extract images HEX representation.\n * @returns Array of found HEX representations. Each array item is an object containing:\n *\n * * hex Image representation in HEX format.\n * * type Type of image, `image/png` or `image/jpeg`.\n */ function extractImageDataFromRtf(rtfData) {\n if (!rtfData) {\n return [];\n }\n const regexPictureHeader = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/;\n const regexPicture = new RegExp('(?:(' + regexPictureHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g');\n const images = rtfData.match(regexPicture);\n const result = [];\n if (images) {\n for (const image of images){\n let imageType = false;\n if (image.includes('\\\\pngblip')) {\n imageType = 'image/png';\n } else if (image.includes('\\\\jpegblip')) {\n imageType = 'image/jpeg';\n }\n if (imageType) {\n result.push({\n hex: image.replace(regexPictureHeader, '').replace(/[^\\da-fA-F]/g, ''),\n type: imageType\n });\n }\n }\n }\n return result;\n}\n/**\n * Replaces `src` attribute value of all given images with the corresponding base64 image representation.\n * Uses the image index to precisely match with the correct hexadecimal representation from RTF data.\n *\n * @param imageElements Array of image elements along with their indices which will have their sources replaced.\n * @param imagesHexSources Array of images hex sources (usually the result of `extractImageDataFromRtf()` function).\n * Contains hexadecimal representations of ALL images in the document, not just those with `file://` URLs.\n * In XML documents, the same image might be defined both as base64 in HTML and as hexadecimal in RTF data.\n */ function replaceImagesFileSourceWithInlineRepresentation(imageElements, imagesHexSources, writer) {\n for(let i = 0; i < imageElements.length; i++){\n const { element, imageIndex } = imageElements[i];\n const rtfHexSource = imagesHexSources[imageIndex];\n if (rtfHexSource) {\n const newSrc = `data:${rtfHexSource.type};base64,${_convertHexToBase64(rtfHexSource.hex)}`;\n writer.setAttribute('src', newSrc, element);\n }\n }\n}\n\n/**\n * Cleanup MS attributes like styles, attributes and elements.\n *\n * @param documentFragment element `data.content` obtained from clipboard.\n * @internal\n */ function removeMSAttributes(documentFragment) {\n const elementsToUnwrap = [];\n const writer = new ViewUpcastWriter(documentFragment.document);\n for (const { item } of writer.createRangeIn(documentFragment)){\n if (!item.is('element')) {\n continue;\n }\n for (const className of item.getClassNames()){\n if (/\\bmso/gi.exec(className)) {\n writer.removeClass(className, item);\n }\n }\n for (const styleName of item.getStyleNames()){\n if (/\\bmso/gi.exec(styleName)) {\n writer.removeStyle(styleName, item);\n }\n }\n if (item.is('element', 'w:sdt') || item.is('element', 'w:sdtpr') && item.isEmpty || item.is('element', 'o:p') && item.isEmpty) {\n elementsToUnwrap.push(item);\n }\n }\n for (const item of elementsToUnwrap){\n const itemParent = item.parent;\n const childIndex = itemParent.getChildIndex(item);\n writer.insertChild(childIndex, item.getChildren(), itemParent);\n writer.remove(item);\n }\n}\n\n/**\n * Applies border none for table and cells without a border specified.\n * Normalizes style length units to px.\n *\n * @internal\n */ function transformTables(documentFragment, writer) {\n for (const item of writer.createRangeIn(documentFragment).getItems()){\n if (!item.is('element', 'table') && !item.is('element', 'td') && !item.is('element', 'th')) {\n continue;\n }\n const sides = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n ];\n // As this is a pasted table, we do not want default table styles to apply here\n // so we set border node for sides that does not have any border style.\n // It is enough to verify border style as border color and border width properties have default values in DOM.\n if (sides.every((side)=>!item.hasStyle(`border-${side}-style`))) {\n writer.setStyle('border-style', 'none', item);\n } else {\n for (const side of sides){\n if (!item.hasStyle(`border-${side}-style`)) {\n writer.setStyle(`border-${side}-style`, 'none', item);\n }\n }\n }\n // Translate style length units to px.\n const props = [\n 'width',\n 'height',\n ...sides.map((side)=>`border-${side}-width`),\n ...sides.map((side)=>`padding-${side}`)\n ];\n for (const prop of props){\n if (item.hasStyle(prop)) {\n writer.setStyle(prop, convertCssLengthToPx(item.getStyle(prop)), item);\n }\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removeinvalidtablewidth\n */ /**\n * Removes the `width:0px` style from table pasted from Google Sheets and `width=\"0\"` attribute from Word tables.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeInvalidTableWidth(documentFragment, writer) {\n for (const child of writer.createRangeIn(documentFragment).getItems()){\n if (child.is('element', 'table')) {\n // Remove invalid width style (Google Sheets: width:0px).\n if (child.getStyle('width') === '0px') {\n writer.removeStyle('width', child);\n }\n // Remove invalid width attribute (Word: width=\"0\").\n if (child.getAttribute('width') === '0') {\n writer.removeAttribute('width', child);\n }\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/replacemsfootnotes\n */ /**\n * Replaces MS Word specific footnotes references and definitions with proper elements.\n *\n * Things to know about MS Word footnotes:\n *\n * * Footnote references in Word are marked with `mso-footnote-id` style.\n * * Word does not support nested footnotes, so references within definitions are ignored.\n * * Word appends extra spaces after footnote references within definitions, which are trimmed.\n * * Footnote definitions list is marked with `mso-element: footnote-list` style it contain `mso-element: footnote` elements.\n * * Footnote definition might contain tables, lists and other elements, not only text. They are placed directly within `li` element,\n * without any wrapper (in opposition to text content of the definition, which is placed within `MsoFootnoteText` element).\n *\n * Example pseudo document showing MS Word footnote structure:\n *\n * ```html\n * <p>Text with footnote<a style='mso-footnote-id:ftn1'>[1]</a> reference.</p>\n *\n * <div style='mso-element:footnote-list'>\n * \t<div style='mso-element:footnote' id=ftn1>\n * \t\t<p class=MsoFootnoteText><a style='mso-footnote-id:ftn1'>[1]</a> Footnote content</p>\n * \t\t<table class=\"MsoTableGrid\">...</table>\n * \t</div>\n * </div>\n * ```\n *\n * Will be transformed into:\n *\n * ```html\n * <p>Text with footnote<sup class=\"footnote\"><a id=\"ref-footnote-ftn1\" href=\"#footnote-ftn1\">1</a></sup> reference.</p>\n *\n * <ol class=\"footnotes\">\n * \t<li class=\"footnote-definition\" id=\"footnote-ftn1\">\n * \t\t<a href=\"#ref-footnote-ftn1\" class=\"footnote-backlink\">^</a>\n * \t\t<div class=\"footnote-content\">\n * \t\t\t<p>Footnote content</p>\n * \t\t\t<table>...</table>\n * \t\t</div>\n * \t</li>\n * </ol>\n * ```\n *\n * @param documentFragment `data.content` obtained from clipboard.\n * @param writer The view writer instance.\n * @internal\n */ function replaceMSFootnotes(documentFragment, writer) {\n const msFootnotesRefs = new Map();\n const msFootnotesDefs = new Map();\n let msFootnotesDefinitionsList = null;\n // Phase 1: Collect all footnotes references and definitions. Find the footnotes definitions list element.\n for (const { item } of writer.createRangeIn(documentFragment)){\n if (!item.is('element')) {\n continue;\n }\n // If spot a footnotes definitions element, let's store it. It'll be replaced later.\n // There should be only one such element in the document.\n if (item.getStyle('mso-element') === 'footnote-list') {\n msFootnotesDefinitionsList = item;\n continue;\n }\n // If spot a footnote reference or definition, store it in the corresponding map.\n if (item.hasStyle('mso-footnote-id')) {\n const msFootnoteDef = item.findAncestor('element', (el)=>el.getStyle('mso-element') === 'footnote');\n if (msFootnoteDef) {\n // If it's a reference within a definition, ignore it and track only the definition.\n // MS Word do not support nested footnotes, so it's safe to assume that all references within\n // a definition point to the same definition.\n const msFootnoteDefId = msFootnoteDef.getAttribute('id');\n msFootnotesDefs.set(msFootnoteDefId, msFootnoteDef);\n } else {\n // If it's a reference outside of a definition, track it as a reference.\n const msFootnoteRefId = item.getStyle('mso-footnote-id');\n msFootnotesRefs.set(msFootnoteRefId, item);\n }\n continue;\n }\n }\n // If there are no footnotes references or definitions, or no definitions list, there's nothing to normalize.\n if (!msFootnotesRefs.size || !msFootnotesDefinitionsList) {\n return;\n }\n // Phase 2: Replace footnotes definitions list with proper element.\n const footnotesDefinitionsList = createFootnotesListViewElement(writer);\n writer.replace(msFootnotesDefinitionsList, footnotesDefinitionsList);\n // Phase 3: Replace all footnotes references and add matching definitions to the definitions list.\n for (const [footnoteId, msFootnoteRef] of msFootnotesRefs){\n const msFootnoteDef = msFootnotesDefs.get(footnoteId);\n if (!msFootnoteDef) {\n continue;\n }\n // Replace footnote reference.\n writer.replace(msFootnoteRef, createFootnoteRefViewElement(writer, footnoteId));\n // Append found matching definition to the definitions list.\n // Order doesn't matter here, as it'll be fixed in the post-fixer.\n const defElements = createFootnoteDefViewElement(writer, footnoteId);\n removeMSReferences(writer, msFootnoteDef);\n // Insert content within the `MsoFootnoteText` element. It's usually a definition text content.\n for (const child of msFootnoteDef.getChildren()){\n let clonedChild = child;\n if (child.is('element')) {\n clonedChild = writer.clone(child, true);\n }\n writer.appendChild(clonedChild, defElements.content);\n }\n writer.appendChild(defElements.listItem, footnotesDefinitionsList);\n }\n}\n/**\n * Removes all MS Office specific references from the given element.\n *\n * It also removes leading space from text nodes following the references, as MS Word adds\n * them to separate the reference from the rest of the text.\n *\n * @param writer The view writer.\n * @param element The element to trim.\n * @returns The trimmed element.\n */ function removeMSReferences(writer, element) {\n const elementsToRemove = [];\n const textNodesToTrim = [];\n for (const { item } of writer.createRangeIn(element)){\n if (item.is('element') && item.getStyle('mso-footnote-id')) {\n elementsToRemove.unshift(item);\n // MS Word used to add spaces after footnote references within definitions. Let's check if there's a space after\n // the footnote reference and mark it for trimming.\n const { nextSibling } = item;\n if (nextSibling?.is('$text') && nextSibling.data.startsWith(' ')) {\n textNodesToTrim.unshift(nextSibling);\n }\n }\n }\n for (const element of elementsToRemove){\n writer.remove(element);\n }\n // Remove only the leading space from text nodes following reference within definition, preserve the rest of the text.\n for (const textNode of textNodesToTrim){\n const trimmedData = textNode.data.substring(1);\n if (trimmedData.length > 0) {\n // Create a new text node and replace the old one.\n const parent = textNode.parent;\n const index = parent.getChildIndex(textNode);\n const newTextNode = writer.createText(trimmedData);\n writer.remove(textNode);\n writer.insertChild(index, newTextNode, parent);\n } else {\n // If the text node contained only a space, remove it entirely.\n writer.remove(textNode);\n }\n }\n return element;\n}\n/**\n * Creates a footnotes list view element.\n *\n * @param writer The view writer instance.\n * @returns The footnotes list view element.\n */ function createFootnotesListViewElement(writer) {\n return writer.createElement('ol', {\n class: 'footnotes'\n });\n}\n/**\n * Creates a footnote reference view element.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns The footnote reference view element.\n */ function createFootnoteRefViewElement(writer, footnoteId) {\n const sup = writer.createElement('sup', {\n class: 'footnote'\n });\n const link = writer.createElement('a', {\n id: `ref-${footnoteId}`,\n href: `#${footnoteId}`\n });\n writer.appendChild(link, sup);\n return sup;\n}\n/**\n * Creates a footnote definition view element with a backlink and a content container.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns An object containing the list item element, backlink and content container.\n */ function createFootnoteDefViewElement(writer, footnoteId) {\n const listItem = writer.createElement('li', {\n id: footnoteId,\n class: 'footnote-definition'\n });\n const backLink = writer.createElement('a', {\n href: `#ref-${footnoteId}`,\n class: 'footnote-backlink'\n });\n const content = writer.createElement('div', {\n class: 'footnote-content'\n });\n writer.appendChild(writer.createText('^'), backLink);\n writer.appendChild(backLink, listItem);\n writer.appendChild(content, listItem);\n return {\n listItem,\n content\n };\n}\n\nconst msWordMatch1 = /<meta\\s*name=\"?generator\"?\\s*content=\"?microsoft\\s*word\\s*\\d+\"?\\/?>/i;\nconst msWordMatch2 = /xmlns:o=\"urn:schemas-microsoft-com/i;\n/**\n * Normalizer for the content pasted from Microsoft Word.\n */ class PasteFromOfficeMSWordNormalizer {\n document;\n hasMultiLevelListPlugin;\n /**\n\t * Creates a new `PasteFromOfficeMSWordNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */ constructor(document, hasMultiLevelListPlugin = false){\n this.document = document;\n this.hasMultiLevelListPlugin = hasMultiLevelListPlugin;\n }\n /**\n\t * @inheritDoc\n\t */ isActive(htmlString) {\n return msWordMatch1.test(htmlString) || msWordMatch2.test(htmlString);\n }\n /**\n\t * @inheritDoc\n\t */ execute(data) {\n const writer = new ViewUpcastWriter(this.document);\n const { body: documentFragment, stylesString } = data._parsedData;\n transformBookmarks(documentFragment, writer);\n transformListItemLikeElementsIntoLists(documentFragment, stylesString, this.hasMultiLevelListPlugin);\n replaceImagesSourceWithBase64(documentFragment, data.dataTransfer.getData('text/rtf'));\n transformTables(documentFragment, writer);\n removeInvalidTableWidth(documentFragment, writer);\n replaceMSFootnotes(documentFragment, writer);\n removeMSAttributes(documentFragment);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removeboldwrapper\n */ /**\n * Removes the `<b>` tag wrapper added by Google Docs to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeBoldWrapper(documentFragment, writer) {\n for (const child of documentFragment.getChildren()){\n if (child.is('element', 'b') && child.getStyle('font-weight') === 'normal') {\n const childIndex = documentFragment.getChildIndex(child);\n writer.remove(child);\n writer.insertChild(childIndex, child.getChildren(), documentFragment);\n }\n }\n}\n\n/**\n * Transforms `<br>` elements that are siblings to some block element into a paragraphs.\n *\n * @param documentFragment The view structure to be transformed.\n * @internal\n */ function transformBlockBrsToParagraphs(documentFragment, writer) {\n const viewDocument = new ViewDocument(writer.document.stylesProcessor);\n const domConverter = new ViewDomConverter(viewDocument, {\n renderingMode: 'data'\n });\n const blockElements = domConverter.blockElements;\n const inlineObjectElements = domConverter.inlineObjectElements;\n const elementsToReplace = [];\n for (const value of writer.createRangeIn(documentFragment)){\n const element = value.item;\n if (element.is('element', 'br')) {\n const nextSibling = findSibling(element, 'forward', writer, {\n blockElements,\n inlineObjectElements\n });\n const previousSibling = findSibling(element, 'backward', writer, {\n blockElements,\n inlineObjectElements\n });\n const nextSiblingIsBlock = isBlockViewElement(nextSibling, blockElements);\n const previousSiblingIsBlock = isBlockViewElement(previousSibling, blockElements);\n // If the <br> is surrounded by blocks then convert it to a paragraph:\n // * <p>foo</p>[<br>]<p>bar</p> -> <p>foo</p>[<p></p>]<p>bar</p>\n // * <p>foo</p>[<br>] -> <p>foo</p>[<p></p>]\n // * [<br>]<p>foo</p> -> [<p></p>]<p>foo</p>\n if (previousSiblingIsBlock || nextSiblingIsBlock) {\n elementsToReplace.push(element);\n }\n }\n }\n for (const element of elementsToReplace){\n if (element.hasClass('Apple-interchange-newline')) {\n writer.remove(element);\n } else {\n writer.replace(element, writer.createElement('p'));\n }\n }\n}\n/**\n * Returns sibling node, threats inline elements as transparent (but should stop on an inline objects).\n */ function findSibling(viewElement, direction, writer, { blockElements, inlineObjectElements }) {\n let position = writer.createPositionAt(viewElement, direction == 'forward' ? 'after' : 'before');\n // Find first position that is just before a first:\n // * text node,\n // * block element,\n // * inline object element.\n // It's ignoring any inline (non-object) elements like span, strong, etc.\n position = position.getLastMatchingPosition(({ item })=>item.is('element') && !blockElements.includes(item.name) && !inlineObjectElements.includes(item.name), {\n direction\n });\n return direction == 'forward' ? position.nodeAfter : position.nodeBefore;\n}\n/**\n * Returns true for view elements that are listed as block view elements.\n */ function isBlockViewElement(node, blockElements) {\n return !!node && node.is('element') && blockElements.includes(node.name);\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/replacetabswithinprewithspaces\n */ /**\n * Replaces tab characters with spaces in text nodes that are inside elements styled with `white-space: pre-wrap`.\n *\n * This is a workaround for incorrect detection of pre-like formatting in the DOM converter for pasted Google Docs documents.\n * When an element uses `white-space: pre-wrap`, the editor reduces tab characters to a single space, causing\n * inconsistent spacing in pasted content. This function replaces tabs with spaces to ensure visual consistency.\n * This is intended as a temporary solution.\n *\n * See: https://github.com/ckeditor/ckeditor5/issues/18995\n *\n * @param documentFragment The `data.content` element obtained from the clipboard.\n * @param writer The upcast writer used to manipulate the view structure.\n * @param tabWidth The number of spaces to replace each tab with. Defaults to 8.\n * @internal\n */ function replaceTabsWithinPreWithSpaces(documentFragment, writer, tabWidth) {\n // Collect all text nodes with tabs that are inside pre-wrap elements.\n const textNodesToReplace = new Set();\n for (const child of writer.createRangeIn(documentFragment).getItems()){\n if (!child.is('view:$textProxy') || !child.data.includes('\\t')) {\n continue;\n }\n // Check if any parent has `white-space: pre-wrap`.\n if (hasPreWrapParent(child.parent)) {\n textNodesToReplace.add(child.textNode);\n }\n }\n // Replace tabs in each collected text node.\n for (const textNode of textNodesToReplace){\n replaceTabsInTextNode(textNode, writer, tabWidth);\n }\n}\n/**\n * Checks if element or any of its parents has `white-space: pre-wrap` style.\n */ function hasPreWrapParent(element) {\n let parent = element;\n while(parent){\n if (parent.is('element')) {\n const whiteSpace = parent.getStyle?.('white-space');\n if (whiteSpace === 'pre-wrap') {\n return true;\n }\n }\n parent = parent.parent;\n }\n return false;\n}\n/**\n * Replaces all tabs with spaces in the given text node.\n */ function replaceTabsInTextNode(textNode, writer, tabWidth) {\n const { parent, data } = textNode;\n const replacedData = data.replaceAll('\\t', ' '.repeat(tabWidth));\n const index = parent.getChildIndex(textNode);\n // Remove old node and insert new one with replaced tabs.\n writer.remove(textNode);\n writer.insertChild(index, writer.createText(replacedData), parent);\n}\n\nconst googleDocsMatch = /id=(\"|')docs-internal-guid-[-0-9a-f]+(\"|')/i;\n/**\n * Normalizer for the content pasted from Google Docs.\n *\n * @internal\n */ class GoogleDocsNormalizer {\n document;\n /**\n\t * Creates a new `GoogleDocsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */ constructor(document){\n this.document = document;\n }\n /**\n\t * @inheritDoc\n\t */ isActive(htmlString) {\n return googleDocsMatch.test(htmlString);\n }\n /**\n\t * @inheritDoc\n\t */ execute(data) {\n const writer = new ViewUpcastWriter(this.document);\n const { body: documentFragment } = data._parsedData;\n removeBoldWrapper(documentFragment, writer);\n unwrapParagraphInListItem(documentFragment, writer);\n transformBlockBrsToParagraphs(documentFragment, writer);\n replaceTabsWithinPreWithSpaces(documentFragment, writer, 8);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removexmlns\n */ /**\n * Removes the `xmlns` attribute from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeXmlns(documentFragment, writer) {\n for (const child of documentFragment.getChildren()){\n if (child.is('element', 'table') && child.hasAttribute('xmlns')) {\n writer.removeAttribute('xmlns', child);\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removegooglesheetstag\n */ /**\n * Removes the `<google-sheets-html-origin>` tag wrapper added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeGoogleSheetsTag(documentFragment, writer) {\n for (const child of documentFragment.getChildren()){\n if (child.is('element', 'google-sheets-html-origin')) {\n const childIndex = documentFragment.getChildIndex(child);\n writer.remove(child);\n writer.insertChild(childIndex, child.getChildren(), documentFragment);\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removestyleblock\n */ /**\n * Removes `<style>` block added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeStyleBlock(documentFragment, writer) {\n for (const child of Array.from(documentFragment.getChildren())){\n if (child.is('element', 'style')) {\n writer.remove(child);\n }\n }\n}\n\nconst googleSheetsMatch = /<google-sheets-html-origin/i;\n/**\n * Normalizer for the content pasted from Google Sheets.\n *\n * @internal\n */ class GoogleSheetsNormalizer {\n document;\n /**\n\t * Creates a new `GoogleSheetsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */ constructor(document){\n this.document = document;\n }\n /**\n\t * @inheritDoc\n\t */ isActive(htmlString) {\n return googleSheetsMatch.test(htmlString);\n }\n /**\n\t * @inheritDoc\n\t */ execute(data) {\n const writer = new ViewUpcastWriter(this.document);\n const { body: documentFragment } = data._parsedData;\n removeGoogleSheetsTag(documentFragment, writer);\n removeXmlns(documentFragment, writer);\n removeInvalidTableWidth(documentFragment, writer);\n removeStyleBlock(documentFragment, writer);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/space\n */ /**\n * Replaces last space preceding elements closing tag with `&nbsp;`. Such operation prevents spaces from being removed\n * during further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n * This method also takes into account Word specific `<o:p></o:p>` empty tags.\n * Additionally multiline sequences of spaces and new lines between tags are removed (see #39 and #40).\n *\n * @param htmlString HTML string in which spacing should be normalized.\n * @returns Input HTML with spaces normalized.\n * @internal\n */ function normalizeSpacing(htmlString) {\n // Run normalizeSafariSpaceSpans() two times to cover nested spans.\n return normalizeSafariSpaceSpans(normalizeSafariSpaceSpans(htmlString))// Remove all \\r\\n from \"spacerun spans\" so the last replace line doesn't strip all whitespaces.\n .replace(/(<span\\s+style=['\"]mso-spacerun:yes['\"]>[^\\S\\r\\n]*?)[\\r\\n]+([^\\S\\r\\n]*<\\/span>)/g, '$1$2').replace(/<span\\s+style=['\"]mso-spacerun:yes['\"]><\\/span>/g, '').replace(/(<span\\s+style=['\"]letter-spacing:[^'\"]+?['\"]>)[\\r\\n]+(<\\/span>)/g, '$1 $2').replace(/ <\\//g, '\\u00A0</').replace(/ <o:p><\\/o:p>/g, '\\u00A0<o:p></o:p>')// Remove <o:p> block filler from empty paragraph. Safari uses \\u00A0 instead of &nbsp;.\n .replace(/<o:p>(&nbsp;|\\u00A0)<\\/o:p>/g, '')// Remove all whitespaces when they contain any \\r or \\n.\n .replace(/>([^\\S\\r\\n]*[\\r\\n]\\s*)</g, '><');\n}\n/**\n * Normalizes spacing in special Word `spacerun spans` (`<span style='mso-spacerun:yes'>\\s+</span>`) by replacing\n * all spaces with `&nbsp; ` pairs. This prevents spaces from being removed during further DOM/View processing\n * (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n *\n * @param htmlDocument Native `Document` object in which spacing should be normalized.\n * @internal\n */ function normalizeSpacerunSpans(htmlDocument) {\n htmlDocument.querySelectorAll('span[style*=spacerun]').forEach((el)=>{\n const htmlElement = el;\n const innerTextLength = htmlElement.innerText.length || 0;\n htmlElement.innerText = Array(innerTextLength + 1).join('\\u00A0 ').substr(0, innerTextLength);\n });\n}\n/**\n * Normalizes specific spacing generated by Safari when content pasted from Word (`<span class=\"Apple-converted-space\"> </span>`)\n * by replacing all spaces sequences longer than 1 space with `&nbsp; ` pairs. This prevents spaces from being removed during\n * further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDataFromDomText}).\n *\n * This function is similar to {@link module:clipboard/utils/normalizeclipboarddata normalizeClipboardData util} but uses\n * regular spaces / &nbsp; sequence for replacement.\n *\n * @param htmlString HTML string in which spacing should be normalized\n * @returns Input HTML with spaces normalized.\n * @internal\n */ function normalizeSafariSpaceSpans(htmlString) {\n return htmlString.replace(/<span(?: class=\"Apple-converted-space\"|)>(\\s+)<\\/span>/g, (fullMatch, spaces)=>{\n return spaces.length === 1 ? ' ' : Array(spaces.length + 1).join('\\u00A0 ').substr(0, spaces.length);\n });\n}\n\n/**\n * Parses the provided HTML extracting contents of `<body>` and `<style>` tags.\n *\n * @param htmlString HTML string to be parsed.\n */ function parsePasteOfficeHtml(htmlString, stylesProcessor) {\n const domParser = new DOMParser();\n // Remove Word specific \"if comments\" so content inside is not omitted by the parser.\n htmlString = htmlString.replace(/<!--\\[if gte vml 1]>/g, '');\n // Clean the <head> section of MS Windows specific tags. See https://github.com/ckeditor/ckeditor5/issues/15333.\n // The regular expression matches the <o:SmartTagType> tag with optional attributes (with or without values).\n htmlString = htmlString.replace(/<o:SmartTagType(?:\\s+[^\\s>=]+(?:=\"[^\"]*\")?)*\\s*\\/?>/gi, '');\n const normalizedHtml = normalizeSpacing(cleanContentAfterBody(htmlString));\n // Parse htmlString as native Document object.\n const htmlDocument = domParser.parseFromString(normalizedHtml, 'text/html');\n normalizeSpacerunSpans(htmlDocument);\n // Get `innerHTML` first as transforming to View modifies the source document.\n const bodyString = htmlDocument.body.innerHTML;\n // Transform document.body to View.\n const bodyView = documentToView(htmlDocument, stylesProcessor);\n // Extract stylesheets.\n const stylesObject = extractStyles(htmlDocument);\n return {\n body: bodyView,\n bodyString,\n styles: stylesObject.styles,\n stylesString: stylesObject.stylesString\n };\n}\n/**\n * Transforms native `Document` object into {@link module:engine/view/documentfragment~ViewDocumentFragment}. Comments are skipped.\n *\n * @param htmlDocument Native `Document` object to be transformed.\n */ function documentToView(htmlDocument, stylesProcessor) {\n const viewDocument = new ViewDocument(stylesProcessor);\n const domConverter = new ViewDomConverter(viewDocument, {\n renderingMode: 'data'\n });\n const fragment = htmlDocument.createDocumentFragment();\n const nodes = htmlDocument.body.childNodes;\n while(nodes.length > 0){\n fragment.appendChild(nodes[0]);\n }\n return domConverter.domToView(fragment, {\n skipComments: true\n });\n}\n/**\n * Extracts both `CSSStyleSheet` and string representation from all `style` elements available in a provided `htmlDocument`.\n *\n * @param htmlDocument Native `Document` object from which styles will be extracted.\n */ function extractStyles(htmlDocument) {\n const styles = [];\n const stylesString = [];\n const styleTags = Array.from(htmlDocument.getElementsByTagName('style'));\n for (const style of styleTags){\n if (style.sheet && style.sheet.cssRules && style.sheet.cssRules.length) {\n styles.push(style.sheet);\n stylesString.push(style.innerHTML);\n }\n }\n return {\n styles,\n stylesString: stylesString.join(' ')\n };\n}\n/**\n * Removes leftover content from between closing </body> and closing </html> tag:\n *\n * ```html\n * <html><body><p>Foo Bar</p></body><span>Fo</span></html> -> <html><body><p>Foo Bar</p></body></html>\n * ```\n *\n * This function is used as specific browsers (Edge) add some random content after `body` tag when pasting from Word.\n * @param htmlString The HTML string to be cleaned.\n * @returns The HTML string with leftover content removed.\n */ function cleanContentAfterBody(htmlString) {\n const bodyCloseTag = '</body>';\n const htmlCloseTag = '</html>';\n const bodyCloseIndex = htmlString.indexOf(bodyCloseTag);\n if (bodyCloseIndex < 0) {\n return htmlString;\n }\n const htmlCloseIndex = htmlString.indexOf(htmlCloseTag, bodyCloseIndex + bodyCloseTag.length);\n return htmlString.substring(0, bodyCloseIndex + bodyCloseTag.length) + (htmlCloseIndex >= 0 ? htmlString.substring(htmlCloseIndex) : '');\n}\n\n/**\n * The Paste from Office plugin.\n *\n * This plugin handles content pasted from Office apps and transforms it (if necessary)\n * to a valid structure which can then be understood by the editor features.\n *\n * Transformation is made by a set of predefined {@link module:paste-from-office/normalizer~PasteFromOfficeNormalizer normalizers}.\n * This plugin includes following normalizers:\n * * {@link module:paste-from-office/normalizers/mswordnormalizer~PasteFromOfficeMSWordNormalizer Microsoft Word normalizer}\n * * {@link module:paste-from-office/normalizers/googledocsnormalizer~GoogleDocsNormalizer Google Docs normalizer}\n *\n * For more information about this feature check the {@glink api/paste-from-office package page}.\n */ class PasteFromOffice extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'PasteFromOffice';\n }\n /**\n\t * @inheritDoc\n\t * @internal\n\t */ static get licenseFeatureCode() {\n return 'PFO';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get isPremiumPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ClipboardPipeline\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const clipboardPipeline = editor.plugins.get('ClipboardPipeline');\n const viewDocument = editor.editing.view.document;\n const normalizers = [];\n const hasMultiLevelListPlugin = this.editor.plugins.has('MultiLevelList');\n normalizers.push(new PasteFromOfficeMSWordNormalizer(viewDocument, hasMultiLevelListPlugin));\n normalizers.push(new GoogleDocsNormalizer(viewDocument));\n normalizers.push(new GoogleSheetsNormalizer(viewDocument));\n clipboardPipeline.on('inputTransformation', (evt, data)=>{\n if (data._isTransformedWithPasteFromOffice) {\n return;\n }\n const codeBlock = editor.model.document.selection.getFirstPosition().parent;\n if (codeBlock.is('element', 'codeBlock')) {\n return;\n }\n const htmlString = data.dataTransfer.getData('text/html');\n const activeNormalizer = normalizers.find((normalizer)=>normalizer.isActive(htmlString));\n if (activeNormalizer) {\n if (!data._parsedData) {\n data._parsedData = parsePasteOfficeHtml(htmlString, viewDocument.stylesProcessor);\n }\n activeNormalizer.execute(data);\n data._isTransformedWithPasteFromOffice = true;\n }\n }, {\n priority: 'high'\n });\n }\n}\n\nexport { PasteFromOffice, GoogleDocsNormalizer as PasteFromOfficeGoogleDocsNormalizer, GoogleSheetsNormalizer as PasteFromOfficeGoogleSheetsNormalizer, PasteFromOfficeMSWordNormalizer, _convertHexToBase64, convertCssLengthToPx as _convertPasteOfficeCssLengthToPx, isPx as _isPasteOfficePxValue, normalizeSpacerunSpans as _normalizePasteOfficeSpaceRunSpans, normalizeSpacing as _normalizePasteOfficeSpacing, removeGoogleSheetsTag as _removePasteGoogleOfficeSheetsTag, removeMSAttributes as _removePasteMSOfficeAttributes, removeBoldWrapper as _removePasteOfficeBoldWrapper, removeInvalidTableWidth as _removePasteOfficeInvalidTableWidths, removeStyleBlock as _removePasteOfficeStyleBlock, removeXmlns as _removePasteOfficeXmlnsAttributes, replaceImagesSourceWithBase64 as _replacePasteOfficeImagesSourceWithBase64, toPx as _toPasteOfficePxValue, transformBlockBrsToParagraphs as _transformPasteOfficeBlockBrsToParagraphs, transformBookmarks as _transformPasteOfficeBookmarks, transformListItemLikeElementsIntoLists as _transformPasteOfficeListItemLikeElementsIntoLists, transformTables as _transformPasteOfficeTables, unwrapParagraphInListItem as _unwrapPasteOfficeParagraphInListItem, parsePasteOfficeHtml };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/bookmark\n */\n\nimport {\n\ttype ViewUpcastWriter,\n\ttype ViewDocumentFragment\n} from 'ckeditor5/src/engine.js';\n\n/**\n * Transforms `<a>` elements which are bookmarks by moving their children after the element.\n *\n * @internal\n */\nexport function transformBookmarks(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tconst elementsToChange = [];\n\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif (\n\t\t\telement.is( 'element', 'a' ) &&\n\t\t\t!element.hasAttribute( 'href' ) &&\n\t\t\t( element.hasAttribute( 'id' ) || element.hasAttribute( 'name' ) ) )\n\t\t{\n\t\t\telementsToChange.push( element );\n\t\t}\n\t}\n\n\tfor ( const element of elementsToChange ) {\n\t\tconst index = element.parent!.getChildIndex( element ) + 1;\n\t\tconst children = element.getChildren();\n\n\t\twriter.insertChild( index, children, element.parent! );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/utils\n */\n\n/**\n * Normalizes CSS length value to 'px'.\n *\n * @internal\n */\nexport function convertCssLengthToPx( value: string ): string {\n\tconst numericValue = parseFloat( value );\n\n\tif ( value.endsWith( 'pt' ) ) {\n\t\t// 1pt = 1in / 72\n\t\treturn toPx( numericValue * 96 / 72 );\n\t}\n\telse if ( value.endsWith( 'pc' ) ) {\n\t\t// 1pc = 12pt = 1in / 6.\n\t\treturn toPx( numericValue * 12 * 96 / 72 );\n\t}\n\telse if ( value.endsWith( 'in' ) ) {\n\t\t// 1in = 2.54cm = 96px\n\t\treturn toPx( numericValue * 96 );\n\t}\n\telse if ( value.endsWith( 'cm' ) ) {\n\t\t// 1cm = 96px / 2.54\n\t\treturn toPx( numericValue * 96 / 2.54 );\n\t}\n\telse if ( value.endsWith( 'mm' ) ) {\n\t\t// 1mm = 1cm / 10\n\t\treturn toPx( numericValue / 10 * 96 / 2.54 );\n\t}\n\n\treturn value;\n}\n\n/**\n * Returns true for value with 'px' unit.\n *\n * @internal\n */\nexport function isPx( value?: string ): value is string {\n\treturn value !== undefined && value.endsWith( 'px' );\n}\n\n/**\n * Returns a rounded 'px' value.\n *\n * @internal\n */\nexport function toPx( value: number ): string {\n\treturn Math.round( value ) + 'px';\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/list\n */\n\nimport {\n\tMatcher,\n\tViewUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode,\n\ttype ViewText\n} from 'ckeditor5/src/engine.js';\n\nimport {\n\tconvertCssLengthToPx,\n\tisPx,\n\ttoPx\n} from './utils.js';\n\n/**\n * Transforms Word specific list-like elements to the semantic HTML lists.\n *\n * Lists in Word are represented by block elements with special attributes like:\n *\n * ```xml\n * <p class=MsoListParagraphCxSpFirst style='mso-list:l1 level1 lfo1'>...</p> // Paragraph based list.\n * <h1 style='mso-list:l0 level1 lfo1'>...</h1> // Heading 1 based list.\n * ```\n *\n * @param documentFragment The view structure to be transformed.\n * @param stylesString Styles from which list-like elements styling will be extracted.\n * @internal\n */\nexport function transformListItemLikeElementsIntoLists(\n\tdocumentFragment: ViewDocumentFragment,\n\tstylesString: string,\n\thasMultiLevelListPlugin: boolean\n): void {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst writer = new ViewUpcastWriter( documentFragment.document );\n\tconst itemLikeElements = findAllItemLikeElements( documentFragment, writer );\n\n\tif ( !itemLikeElements.length ) {\n\t\treturn;\n\t}\n\n\tconst encounteredLists: Record<string, number> = {};\n\n\tconst stack: Array<ListLikeElement & {\n\t\tlistElement: ViewElement;\n\t\tlistItemElements: Array<ViewElement>;\n\t}> = [];\n\n\tfor ( const itemLikeElement of itemLikeElements ) {\n\t\tif ( itemLikeElement.indent !== undefined ) {\n\t\t\tif ( !isListContinuation( itemLikeElement ) ) {\n\t\t\t\tstack.length = 0;\n\t\t\t}\n\n\t\t\t// Combined list ID for addressing encounter lists counters.\n\t\t\tconst originalListId = `${ itemLikeElement.id }:${ itemLikeElement.indent }`;\n\n\t\t\t// Normalized list item indentation.\n\t\t\tconst indent = Math.min( itemLikeElement.indent - 1, stack.length );\n\n\t\t\t// Trimming of the list stack on list ID change.\n\t\t\tif ( indent < stack.length && stack[ indent ].id !== itemLikeElement.id ) {\n\t\t\t\tstack.length = indent;\n\t\t\t}\n\n\t\t\t// Trimming of the list stack on lower indent list encountered.\n\t\t\tif ( indent < stack.length - 1 ) {\n\t\t\t\tstack.length = indent + 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst listStyle = detectListStyle( itemLikeElement, stylesString );\n\n\t\t\t\t// Create a new OL/UL if required (greater indent or different list type).\n\t\t\t\tif ( indent > stack.length - 1 || stack[ indent ].listElement.name != listStyle.type ) {\n\t\t\t\t\t// Check if there is some start index to set from a previous list.\n\t\t\t\t\tif (\n\t\t\t\t\t\tindent == 0 &&\n\t\t\t\t\t\tlistStyle.type == 'ol' &&\n\t\t\t\t\t\titemLikeElement.id !== undefined &&\n\t\t\t\t\t\tencounteredLists[ originalListId ]\n\t\t\t\t\t) {\n\t\t\t\t\t\tlistStyle.startIndex = encounteredLists[ originalListId ];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst listElement = createNewEmptyList( listStyle, writer, hasMultiLevelListPlugin );\n\n\t\t\t\t\t// Apply list padding only if we have margins for the item and the parent item.\n\t\t\t\t\tif (\n\t\t\t\t\t\tisPx( itemLikeElement.marginLeft ) &&\n\t\t\t\t\t\t( indent == 0 || isPx( stack[ indent - 1 ].marginLeft ) )\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet marginLeft = itemLikeElement.marginLeft;\n\n\t\t\t\t\t\tif ( indent > 0 ) {\n\t\t\t\t\t\t\t// Convert the padding from absolute to relative.\n\t\t\t\t\t\t\tmarginLeft = toPx( parseFloat( marginLeft ) - parseFloat( stack[ indent - 1 ].marginLeft! ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twriter.setStyle( 'padding-left', marginLeft, listElement );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Insert the new OL/UL.\n\t\t\t\t\tif ( stack.length == 0 ) {\n\t\t\t\t\t\tconst parent = itemLikeElement.element.parent!;\n\t\t\t\t\t\tconst index = parent.getChildIndex( itemLikeElement.element ) + 1;\n\n\t\t\t\t\t\twriter.insertChild( index, listElement, parent );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst parentListItems = stack[ indent - 1 ].listItemElements;\n\n\t\t\t\t\t\twriter.appendChild( listElement, parentListItems[ parentListItems.length - 1 ] );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update the list stack for other items to reference.\n\t\t\t\t\tstack[ indent ] = {\n\t\t\t\t\t\t...itemLikeElement,\n\t\t\t\t\t\tlistElement,\n\t\t\t\t\t\tlistItemElements: []\n\t\t\t\t\t};\n\n\t\t\t\t\t// Prepare list counter for start index.\n\t\t\t\t\tif ( indent == 0 && itemLikeElement.id !== undefined ) {\n\t\t\t\t\t\tencounteredLists[ originalListId ] = listStyle.startIndex || 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Use LI if it is already it or create a new LI element.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/15964\n\t\t\tconst listItem = itemLikeElement.element.name == 'li' ? itemLikeElement.element : writer.createElement( 'li' );\n\n\t\t\t// Append the LI to OL/UL.\n\t\t\twriter.appendChild( listItem, stack[ indent ].listElement );\n\t\t\tstack[ indent ].listItemElements.push( listItem );\n\n\t\t\t// Increment list counter.\n\t\t\tif ( indent == 0 && itemLikeElement.id !== undefined ) {\n\t\t\t\tencounteredLists[ originalListId ]++;\n\t\t\t}\n\n\t\t\t// Append list block to LI.\n\t\t\tif ( itemLikeElement.element != listItem ) {\n\t\t\t\twriter.appendChild( itemLikeElement.element, listItem );\n\t\t\t}\n\n\t\t\t// Clean list block.\n\t\t\tremoveBulletElement( itemLikeElement.element, writer );\n\t\t\twriter.removeStyle( 'text-indent', itemLikeElement.element ); // #12361\n\t\t\twriter.removeStyle( 'margin-left', itemLikeElement.element );\n\t\t}\n\t\telse {\n\t\t\t// Other blocks in a list item.\n\t\t\tconst stackItem = stack.find( stackItem => stackItem.marginLeft == itemLikeElement.marginLeft );\n\n\t\t\t// This might be a paragraph that has known margin, but it is not a real list block.\n\t\t\tif ( stackItem ) {\n\t\t\t\tconst listItems = stackItem.listItemElements;\n\n\t\t\t\t// Append block to LI.\n\t\t\t\twriter.appendChild( itemLikeElement.element, listItems[ listItems.length - 1 ] );\n\t\t\t\twriter.removeStyle( 'margin-left', itemLikeElement.element );\n\t\t\t} else {\n\t\t\t\tstack.length = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Removes paragraph wrapping content inside a list item.\n *\n * @internal\n */\nexport function unwrapParagraphInListItem(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif ( element.is( 'element', 'li' ) ) {\n\t\t\t// Google Docs allows for single paragraph inside LI.\n\t\t\tconst firstChild = element.getChild( 0 );\n\n\t\t\tif ( firstChild && firstChild.is( 'element', 'p' ) ) {\n\t\t\t\twriter.unwrapElement( firstChild );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Finds all list-like elements in a given document fragment.\n *\n * @param documentFragment Document fragment in which to look for list-like nodes.\n * @returns Array of found list-like items. Each item is an object containing\n * @internal\n */\nfunction findAllItemLikeElements(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): Array<ListLikeElement> {\n\tconst range = writer.createRangeIn( documentFragment );\n\tconst itemLikeElements: Array<ListLikeElement> = [];\n\tconst foundMargins = new Set<string>();\n\n\tfor ( const item of range.getItems() ) {\n\t\t// https://github.com/ckeditor/ckeditor5/issues/15964\n\t\tif ( !item.is( 'element' ) || !item.name.match( /^(p|h\\d+|li|div)$/ ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Try to rely on margin-left style to find paragraphs visually aligned with previously encountered list item.\n\t\tlet marginLeft = getMarginLeftNormalized( item );\n\n\t\t// Ignore margin-left 0 style if there is no MsoList... class.\n\t\tif (\n\t\t\tmarginLeft !== undefined &&\n\t\t\tparseFloat( marginLeft ) == 0 &&\n\t\t\t!Array.from( item.getClassNames() ).find( className => className.startsWith( 'MsoList' ) )\n\t\t) {\n\t\t\tmarginLeft = undefined;\n\t\t}\n\n\t\t// List item or a following list item block.\n\t\tif (\n\t\t\t( item.hasStyle( 'mso-list' ) && item.getStyle( 'mso-list' ) !== 'none' ) ||\n\t\t\t( marginLeft !== undefined && foundMargins.has( marginLeft ) )\n\t\t) {\n\t\t\tconst itemData = getListItemData( item );\n\n\t\t\titemLikeElements.push( {\n\t\t\t\telement: item,\n\t\t\t\tid: itemData.id,\n\t\t\t\torder: itemData.order,\n\t\t\t\tindent: itemData.indent,\n\t\t\t\tmarginLeft\n\t\t\t} );\n\n\t\t\tif ( marginLeft !== undefined ) {\n\t\t\t\tfoundMargins.add( marginLeft );\n\t\t\t}\n\t\t}\n\t\t// Clear found margins as we found block after a list.\n\t\telse {\n\t\t\tfoundMargins.clear();\n\t\t}\n\t}\n\n\treturn itemLikeElements;\n}\n\n/**\n * Whether the given element is possibly a list continuation. Previous element was wrapped into a list\n * or the current element already is inside a list.\n */\nfunction isListContinuation( currentItem: ListLikeElement ) {\n\tconst previousSibling = currentItem.element.previousSibling;\n\n\tif ( !previousSibling ) {\n\t\tconst parent = currentItem.element.parent as ViewElement;\n\n\t\t// If it's a li inside ul or ol like in here: https://github.com/ckeditor/ckeditor5/issues/15964.\n\t\t// If the parent has previous sibling, which is not a list, then it is not a continuation.\n\t\treturn isList( parent ) && ( !parent.previousSibling || isList( parent.previousSibling ) );\n\t}\n\n\t// Even with the same id the list does not have to be continuous (#43).\n\treturn isList( previousSibling );\n}\n\nfunction isList( element: ViewNode ) {\n\treturn element.is( 'element', 'ol' ) || element.is( 'element', 'ul' );\n}\n\n/**\n * Extracts list item style from the provided CSS.\n *\n * List item style is extracted from the CSS stylesheet. Each list with its specific style attribute\n * value (`mso-list:l1 level1 lfo1`) has its dedicated properties in a CSS stylesheet defined with a selector like:\n *\n * ```css\n * @list l1:level1 { ... }\n * ```\n *\n * It contains `mso-level-number-format` property which defines list numbering/bullet style. If this property\n * is not defined it means default `decimal` numbering.\n *\n * Here CSS string representation is used as `mso-level-number-format` property is an invalid CSS property\n * and will be removed during CSS parsing.\n *\n * @param listLikeItem List-like item for which list style will be searched for. Usually\n * a result of `findAllItemLikeElements()` function.\n * @param stylesString CSS stylesheet.\n * @returns An object with properties:\n *\n * * type - List type, could be `ul` or `ol`.\n * * startIndex - List start index, valid only for ordered lists.\n * * style - List style, for example: `decimal`, `lower-roman`, etc. It is extracted\n * directly from Word stylesheet and adjusted to represent proper values for the CSS `list-style-type` property.\n * If it cannot be adjusted, the `null` value is returned.\n */\nfunction detectListStyle( listLikeItem: ListLikeElement, stylesString: string ) {\n\tconst listStyleRegexp = new RegExp( `@list l${ listLikeItem.id }:level${ listLikeItem.indent }\\\\s*({[^}]*)`, 'gi' );\n\tconst listStyleTypeRegex = /mso-level-number-format:([^;]{0,100});/gi;\n\tconst listStartIndexRegex = /mso-level-start-at:\\s{0,100}([0-9]{0,10})\\s{0,100};/gi;\n\tconst legalStyleListRegex = new RegExp( `@list\\\\s+l${ listLikeItem.id }:level\\\\d\\\\s*{[^{]*mso-level-text:\"%\\\\d\\\\\\\\.`, 'gi' );\n\tconst multiLevelNumberFormatTypeRegex = new RegExp( `@list l${ listLikeItem.id }:level\\\\d\\\\s*{[^{]*mso-level-number-format:`, 'gi' );\n\n\tconst legalStyleListMatch = legalStyleListRegex.exec( stylesString );\n\tconst multiLevelNumberFormatMatch = multiLevelNumberFormatTypeRegex.exec( stylesString );\n\n\t// Multi level lists in Word have mso-level-number-format attribute except legal lists,\n\t// so we used that. If list has legal list match and doesn't has mso-level-number-format\n\t// then this is legal-list.\n\tconst islegalStyleList = legalStyleListMatch && !multiLevelNumberFormatMatch;\n\n\tconst listStyleMatch = listStyleRegexp.exec( stylesString );\n\n\tlet listStyleType = 'decimal'; // Decimal is default one.\n\tlet type = 'ol'; // <ol> is default list.\n\tlet startIndex = null;\n\n\tif ( listStyleMatch && listStyleMatch[ 1 ] ) {\n\t\tconst listStyleTypeMatch = listStyleTypeRegex.exec( listStyleMatch[ 1 ] );\n\n\t\tif ( listStyleTypeMatch && listStyleTypeMatch[ 1 ] ) {\n\t\t\tlistStyleType = listStyleTypeMatch[ 1 ].trim();\n\t\t\ttype = listStyleType !== 'bullet' && listStyleType !== 'image' ? 'ol' : 'ul';\n\t\t}\n\n\t\t// Styles for the numbered lists are always defined in the Word CSS stylesheet.\n\t\t// Unordered lists MAY contain a value for the Word CSS definition `mso-level-text` but sometimes\n\t\t// this tag is missing. And because of that, we cannot depend on that. We need to predict the list style value\n\t\t// based on the list style marker element.\n\t\tif ( listStyleType === 'bullet' ) {\n\t\t\tconst bulletedStyle = findBulletedListStyle( listLikeItem.element );\n\n\t\t\tif ( bulletedStyle ) {\n\t\t\t\tlistStyleType = bulletedStyle;\n\t\t\t}\n\t\t} else {\n\t\t\tconst listStartIndexMatch = listStartIndexRegex.exec( listStyleMatch[ 1 ] );\n\n\t\t\tif ( listStartIndexMatch && listStartIndexMatch[ 1 ] ) {\n\t\t\t\tstartIndex = parseInt( listStartIndexMatch[ 1 ] );\n\t\t\t}\n\t\t}\n\n\t\tif ( islegalStyleList ) {\n\t\t\ttype = 'ol';\n\t\t}\n\t}\n\n\treturn {\n\t\ttype,\n\t\tstartIndex,\n\t\tstyle: mapListStyleDefinition( listStyleType ),\n\t\tisLegalStyleList: islegalStyleList\n\t};\n}\n\n/**\n * Tries to extract the `list-style-type` value based on the marker element for bulleted list.\n */\nfunction findBulletedListStyle( element: ViewElement ) {\n\t// https://github.com/ckeditor/ckeditor5/issues/15964\n\tif ( element.name == 'li' && element.parent!.name == 'ul' && element.parent!.hasAttribute( 'type' ) ) {\n\t\treturn element.parent!.getAttribute( 'type' );\n\t}\n\n\tconst listMarkerElement = findListMarkerNode( element );\n\n\tif ( !listMarkerElement ) {\n\t\treturn null;\n\t}\n\n\tconst listMarker = listMarkerElement._data;\n\n\tif ( listMarker === 'o' ) {\n\t\treturn 'circle';\n\t} else if ( listMarker === '·' ) {\n\t\treturn 'disc';\n\t}\n\t// Word returns '§' instead of '■' for the square list style.\n\telse if ( listMarker === '§' ) {\n\t\treturn 'square';\n\t}\n\n\treturn null;\n}\n\n/**\n * Tries to find a text node that represents the marker element (list-style-type).\n */\nfunction findListMarkerNode( element: ViewElement ): ViewText | null {\n\t// If the first child is a text node, it is the data for the element.\n\t// The list-style marker is not present here.\n\tif ( element.getChild( 0 )!.is( '$text' ) ) {\n\t\treturn null;\n\t}\n\n\tfor ( const childNode of element.getChildren() ) {\n\t\t// The list-style marker will be inside the `<span>` element. Let's ignore all non-span elements.\n\t\t// It may happen that the `<a>` element is added as the first child. Most probably, it's an anchor element.\n\t\tif ( !childNode.is( 'element', 'span' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst textNodeOrElement = childNode.getChild( 0 );\n\n\t\tif ( !textNodeOrElement ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If already found the marker element, use it.\n\t\tif ( textNodeOrElement.is( '$text' ) ) {\n\t\t\treturn textNodeOrElement;\n\t\t}\n\n\t\treturn ( textNodeOrElement as any ).getChild( 0 );\n\t}\n\n\t/* istanbul ignore next -- @preserve */\n\treturn null;\n}\n\n/**\n * Parses the `list-style-type` value extracted directly from the Word CSS stylesheet and returns proper CSS definition.\n */\nfunction mapListStyleDefinition( value: string ) {\n\tif ( value.startsWith( 'arabic-leading-zero' ) ) {\n\t\treturn 'decimal-leading-zero';\n\t}\n\n\tswitch ( value ) {\n\t\tcase 'alpha-upper':\n\t\t\treturn 'upper-alpha';\n\t\tcase 'alpha-lower':\n\t\t\treturn 'lower-alpha';\n\t\tcase 'roman-upper':\n\t\t\treturn 'upper-roman';\n\t\tcase 'roman-lower':\n\t\t\treturn 'lower-roman';\n\t\tcase 'circle':\n\t\tcase 'disc':\n\t\tcase 'square':\n\t\t\treturn value;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Creates a new list OL/UL element.\n */\nfunction createNewEmptyList(\n\tlistStyle: ReturnType<typeof detectListStyle>,\n\twriter: ViewUpcastWriter,\n\thasMultiLevelListPlugin: boolean\n) {\n\tconst list = writer.createElement( listStyle.type );\n\n\t// We do not support modifying the marker for a particular list item.\n\t// Set the value for the `list-style-type` property directly to the list container.\n\tif ( listStyle.style ) {\n\t\twriter.setStyle( 'list-style-type', listStyle.style, list );\n\t}\n\n\tif ( listStyle.startIndex && listStyle.startIndex > 1 ) {\n\t\twriter.setAttribute( 'start', listStyle.startIndex, list );\n\t}\n\n\tif ( listStyle.isLegalStyleList && hasMultiLevelListPlugin ) {\n\t\twriter.addClass( 'legal-list', list );\n\t}\n\n\treturn list;\n}\n\n/**\n * Extracts list item information from Word specific list-like element style:\n *\n * ```\n * `style=\"mso-list:l1 level1 lfo1\"`\n * ```\n *\n * where:\n *\n * ```\n * * `l1` is a list id (however it does not mean this is a continuous list - see #43),\n * * `level1` is a list item indentation level,\n * * `lfo1` is a list insertion order in a document.\n * ```\n *\n * @param element Element from which style data is extracted.\n */\nfunction getListItemData( element: ViewElement ): ListItemData {\n\tconst listStyle = element.getStyle( 'mso-list' );\n\n\tif ( listStyle === undefined ) {\n\t\treturn {};\n\t}\n\n\tconst idMatch = listStyle.match( /(^|\\s{1,100})l(\\d+)/i );\n\tconst orderMatch = listStyle.match( /\\s{0,100}lfo(\\d+)/i );\n\tconst indentMatch = listStyle.match( /\\s{0,100}level(\\d+)/i );\n\n\tif ( idMatch && orderMatch && indentMatch ) {\n\t\treturn {\n\t\t\tid: idMatch[ 2 ],\n\t\t\torder: orderMatch[ 1 ],\n\t\t\tindent: parseInt( indentMatch[ 1 ] )\n\t\t};\n\t}\n\n\treturn {\n\t\tindent: 1 // Handle empty mso-list style as a marked for default list item.\n\t};\n}\n\n/**\n * Removes span with a numbering/bullet from a given element.\n */\nfunction removeBulletElement( element: ViewElement, writer: ViewUpcastWriter ) {\n\t// Matcher for finding `span` elements holding lists numbering/bullets.\n\tconst bulletMatcher = new Matcher( {\n\t\tname: 'span',\n\t\tstyles: {\n\t\t\t'mso-list': 'Ignore'\n\t\t}\n\t} );\n\n\tconst range = writer.createRangeIn( element );\n\n\tfor ( const value of range ) {\n\t\tif ( value.type === 'elementStart' && bulletMatcher.match( value.item as ViewElement ) ) {\n\t\t\twriter.remove( value.item as ViewElement );\n\t\t}\n\t}\n}\n\n/**\n * Returns element left margin normalized to 'px' if possible.\n */\nfunction getMarginLeftNormalized( element: ViewElement ): string | undefined {\n\tconst value = element.getStyle( 'margin-left' );\n\n\tif ( value === undefined || value.endsWith( 'px' ) ) {\n\t\treturn value;\n\t}\n\n\treturn convertCssLengthToPx( value );\n}\n\ninterface ListItemData {\n\n\t/**\n\t * Parent list id.\n\t */\n\tid?: string;\n\n\t/**\n\t * List item creation order.\n\t */\n\torder?: string;\n\n\t/**\n\t * List item indentation level.\n\t */\n\tindent?: number;\n}\n\ninterface ListLikeElement extends ListItemData {\n\n\t/**\n\t * List-like element.\n\t */\n\telement: ViewElement;\n\n\t/**\n\t * The margin-left normalized to 'px' if possible.\n\t */\n\tmarginLeft?: string;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/image\n */\n\nimport {\n\tMatcher,\n\tViewUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode\n} from 'ckeditor5/src/engine.js';\n\n/**\n * Replaces source attribute of all `<img>` elements representing regular\n * images (not the Word shapes) with inlined base64 image representation extracted from RTF or Blob data.\n *\n * @param documentFragment Document fragment on which transform images.\n * @param rtfData The RTF data from which images representation will be used.\n * @internal\n */\nexport function replaceImagesSourceWithBase64( documentFragment: ViewDocumentFragment, rtfData: string ): void {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst upcastWriter = new ViewUpcastWriter( documentFragment.document );\n\tconst shapesIds = findAllShapesIds( documentFragment, upcastWriter );\n\n\tremoveAllImgElementsRepresentingShapes( shapesIds, documentFragment, upcastWriter );\n\tinsertMissingImgs( shapesIds, documentFragment, upcastWriter );\n\tremoveAllShapeElements( documentFragment, upcastWriter );\n\n\tconst images = findAllImageElementsWithLocalSource( documentFragment, upcastWriter );\n\n\tif ( images.length ) {\n\t\treplaceImagesFileSourceWithInlineRepresentation( images, extractImageDataFromRtf( rtfData ), upcastWriter );\n\t}\n}\n\n/**\n * Converts given HEX string to base64 representation.\n *\n * @internal\n * @param hexString The HEX string to be converted.\n * @returns Base64 representation of a given HEX string.\n */\nexport function _convertHexToBase64( hexString: string ): string {\n\treturn btoa( hexString.match( /\\w{2}/g )!.map( char => {\n\t\treturn String.fromCharCode( parseInt( char, 16 ) );\n\t} ).join( '' ) );\n}\n\n/**\n * Finds all shapes (`<v:*>...</v:*>`) ids. Shapes can represent images (canvas)\n * or Word shapes (which does not have RTF or Blob representation).\n *\n * @param documentFragment Document fragment from which to extract shape ids.\n * @returns Array of shape ids.\n */\nfunction findAllShapesIds( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): Array<string> {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapeElementsMatcher = new Matcher( {\n\t\tname: /v:(.+)/\n\t} );\n\n\tconst shapesIds = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type != 'elementStart' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst el = value.item as ViewElement;\n\t\tconst previousSibling = el.previousSibling;\n\t\tconst prevSiblingName = previousSibling && previousSibling.is( 'element' ) ? previousSibling.name : null;\n\t\t// List of ids which should not be considered as shapes.\n\t\t// https://github.com/ckeditor/ckeditor5/pull/15847#issuecomment-1941543983\n\t\tconst exceptionIds = [ 'Chart' ];\n\n\t\tconst isElementAShape = shapeElementsMatcher.match( el );\n\t\tconst hasElementGfxdataAttribute = el.getAttribute( 'o:gfxdata' );\n\t\tconst isPreviousSiblingAShapeType = prevSiblingName === 'v:shapetype';\n\t\tconst isElementIdInExceptionsArray = hasElementGfxdataAttribute &&\n\t\t\texceptionIds.some( item => el.getAttribute( 'id' )!.includes( item ) );\n\n\t\t// If shape element has 'o:gfxdata' attribute and is not directly before\n\t\t// `<v:shapetype>` element it means that it represents a Word shape.\n\t\tif (\n\t\t\tisElementAShape &&\n\t\t\thasElementGfxdataAttribute &&\n\t\t\t!isPreviousSiblingAShapeType &&\n\t\t\t!isElementIdInExceptionsArray\n\t\t) {\n\t\t\tshapesIds.push( ( value.item as ViewElement ).getAttribute( 'id' )! );\n\t\t}\n\t}\n\n\treturn shapesIds;\n}\n\n/**\n * Removes all `<img>` elements which represents Word shapes and not regular images.\n *\n * @param shapesIds Shape ids which will be checked against `<img>` elements.\n * @param documentFragment Document fragment from which to remove `<img>` elements.\n */\nfunction removeAllImgElementsRepresentingShapes(\n\tshapesIds: Array<string>,\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst imageElementsMatcher = new Matcher( {\n\t\tname: 'img'\n\t} );\n\n\tconst imgs = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.item.is( 'element' ) && imageElementsMatcher.match( value.item ) ) {\n\t\t\tconst el = value.item;\n\t\t\tconst shapes = el.getAttribute( 'v:shapes' ) ? el.getAttribute( 'v:shapes' )!.split( ' ' ) : [];\n\n\t\t\tif ( shapes.length && shapes.every( shape => shapesIds.indexOf( shape ) > -1 ) ) {\n\t\t\t\timgs.push( el );\n\t\t\t// Shapes may also have empty source while content is paste in some browsers (Safari).\n\t\t\t} else if ( !el.getAttribute( 'src' ) ) {\n\t\t\t\timgs.push( el );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const img of imgs ) {\n\t\twriter.remove( img );\n\t}\n}\n\n/**\n * Removes all shape elements (`<v:*>...</v:*>`) so they do not pollute the output structure.\n *\n * @param documentFragment Document fragment from which to remove shape elements.\n */\nfunction removeAllShapeElements( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ) {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapeElementsMatcher = new Matcher( {\n\t\tname: /v:(.+)/\n\t} );\n\n\tconst shapes = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type == 'elementStart' && shapeElementsMatcher.match( value.item as ViewElement ) ) {\n\t\t\tshapes.push( value.item as ViewElement );\n\t\t}\n\t}\n\n\tfor ( const shape of shapes ) {\n\t\twriter.remove( shape );\n\t}\n}\n\n/**\n * Inserts `img` tags if there is none after a shape.\n */\nfunction insertMissingImgs( shapeIds: Array<string>, documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ) {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapes: Array<ViewElement> = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type == 'elementStart' && value.item.is( 'element', 'v:shape' ) ) {\n\t\t\tconst id = value.item.getAttribute( 'id' )!;\n\n\t\t\tif ( shapeIds.includes( id ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !containsMatchingImg( value.item.parent!.getChildren(), id ) ) {\n\t\t\t\tshapes.push( value.item );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const shape of shapes ) {\n\t\tconst attrs: Record<string, unknown> = {\n\t\t\tsrc: findSrc( shape )\n\t\t};\n\n\t\tif ( shape.hasAttribute( 'alt' ) ) {\n\t\t\tattrs.alt = shape.getAttribute( 'alt' );\n\t\t}\n\n\t\tconst img = writer.createElement( 'img', attrs );\n\n\t\twriter.insertChild( shape.index! + 1, img, shape.parent! );\n\t}\n\n\tfunction containsMatchingImg( nodes: Iterable<ViewNode>, id: string ): boolean {\n\t\tfor ( const node of nodes ) {\n\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\tif ( node.is( 'element' ) ) {\n\t\t\t\tif ( node.name == 'img' && node.getAttribute( 'v:shapes' ) == id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( containsMatchingImg( node.getChildren(), id ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction findSrc( shape: ViewElement ) {\n\t\tfor ( const child of shape.getChildren() ) {\n\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\tif ( child.is( 'element' ) && child.getAttribute( 'src' ) ) {\n\t\t\t\treturn child.getAttribute( 'src' );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Finds all `<img>` elements in a given document fragment which have source pointing to local `file://` resource.\n * This function also tracks the index position of each image in the document, which is essential for\n * precise matching with hexadecimal representations in RTF data.\n *\n * @param documentFragment Document fragment in which to look for `<img>` elements.\n * @returns Array of found images along with their position index in the document.\n */\nfunction findAllImageElementsWithLocalSource(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): Array<ImageWithIndex> {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst imageElementsMatcher = new Matcher( {\n\t\tname: 'img'\n\t} );\n\n\tconst imgs: Array<ImageWithIndex> = [];\n\tlet currentImageIndex = 0;\n\n\tfor ( const value of range ) {\n\t\tif ( value.item.is( 'element' ) && imageElementsMatcher.match( value.item ) ) {\n\t\t\tif ( value.item.getAttribute( 'src' )!.startsWith( 'file://' ) ) {\n\t\t\t\timgs.push( {\n\t\t\t\t\telement: value.item,\n\t\t\t\t\timageIndex: currentImageIndex\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tcurrentImageIndex++;\n\t\t}\n\t}\n\n\treturn imgs;\n}\n\n/**\n * Represents an image element with its index position in the document.\n * This index is crucial for correctly matching images with their\n * corresponding hexadecimal representations in RTF data.\n */\ntype ImageWithIndex = {\n\n\t/**\n * The position index of the image in the document.\n * Used to map the image to its corresponding hexadecimal representation in RTF data.\n * RTF data contains hexadecimal representations of ALL images in the document,\n * not just those with file:// URLs.\n */\n\timageIndex: number;\n\n\t/**\n * The image element.\n */\n\telement: ViewElement;\n};\n\n/**\n * Extracts all images HEX representations from a given RTF data.\n *\n * @param rtfData The RTF data from which to extract images HEX representation.\n * @returns Array of found HEX representations. Each array item is an object containing:\n *\n * * hex Image representation in HEX format.\n * * type Type of image, `image/png` or `image/jpeg`.\n */\nfunction extractImageDataFromRtf( rtfData: string ): Array<{ hex: string; type: string }> {\n\tif ( !rtfData ) {\n\t\treturn [];\n\t}\n\n\tconst regexPictureHeader = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/;\n\tconst regexPicture = new RegExp( '(?:(' + regexPictureHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g' );\n\tconst images = rtfData.match( regexPicture );\n\tconst result = [];\n\n\tif ( images ) {\n\t\tfor ( const image of images ) {\n\t\t\tlet imageType: string | false = false;\n\n\t\t\tif ( image.includes( '\\\\pngblip' ) ) {\n\t\t\t\timageType = 'image/png';\n\t\t\t} else if ( image.includes( '\\\\jpegblip' ) ) {\n\t\t\t\timageType = 'image/jpeg';\n\t\t\t}\n\n\t\t\tif ( imageType ) {\n\t\t\t\tresult.push( {\n\t\t\t\t\thex: image.replace( regexPictureHeader, '' ).replace( /[^\\da-fA-F]/g, '' ),\n\t\t\t\t\ttype: imageType\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Replaces `src` attribute value of all given images with the corresponding base64 image representation.\n * Uses the image index to precisely match with the correct hexadecimal representation from RTF data.\n *\n * @param imageElements Array of image elements along with their indices which will have their sources replaced.\n * @param imagesHexSources Array of images hex sources (usually the result of `extractImageDataFromRtf()` function).\n * Contains hexadecimal representations of ALL images in the document, not just those with `file://` URLs.\n * In XML documents, the same image might be defined both as base64 in HTML and as hexadecimal in RTF data.\n */\nfunction replaceImagesFileSourceWithInlineRepresentation(\n\timageElements: Array<ImageWithIndex>,\n\timagesHexSources: ReturnType<typeof extractImageDataFromRtf>,\n\twriter: ViewUpcastWriter\n) {\n\tfor ( let i = 0; i < imageElements.length; i++ ) {\n\t\tconst { element, imageIndex } = imageElements[ i ];\n\t\tconst rtfHexSource = imagesHexSources[ imageIndex ];\n\n\t\tif ( rtfHexSource ) {\n\t\t\tconst newSrc = `data:${ rtfHexSource.type };base64,${ _convertHexToBase64( rtfHexSource.hex ) }`;\n\t\t\twriter.setAttribute( 'src', newSrc, element );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removemsattributes\n */\n\nimport { ViewUpcastWriter, type ViewDocumentFragment, type ViewElement } from 'ckeditor5/src/engine.js';\n\n/**\n * Cleanup MS attributes like styles, attributes and elements.\n *\n * @param documentFragment element `data.content` obtained from clipboard.\n * @internal\n */\nexport function removeMSAttributes( documentFragment: ViewDocumentFragment ): void {\n\tconst elementsToUnwrap: Array<ViewElement> = [];\n\n\tconst writer = new ViewUpcastWriter( documentFragment.document );\n\n\tfor ( const { item } of writer.createRangeIn( documentFragment ) ) {\n\t\tif ( !item.is( 'element' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor ( const className of item.getClassNames() ) {\n\t\t\tif ( /\\bmso/gi.exec( className ) ) {\n\t\t\t\twriter.removeClass( className, item );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const styleName of item.getStyleNames() ) {\n\t\t\tif ( /\\bmso/gi.exec( styleName ) ) {\n\t\t\t\twriter.removeStyle( styleName, item );\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\titem.is( 'element', 'w:sdt' ) ||\n\t\t\titem.is( 'element', 'w:sdtpr' ) && item.isEmpty ||\n\t\t\titem.is( 'element', 'o:p' ) && item.isEmpty\n\t\t) {\n\t\t\telementsToUnwrap.push( item );\n\t\t}\n\t}\n\n\tfor ( const item of elementsToUnwrap ) {\n\t\tconst itemParent = item.parent!;\n\t\tconst childIndex = itemParent.getChildIndex( item );\n\n\t\twriter.insertChild( childIndex, item.getChildren(), itemParent );\n\t\twriter.remove( item );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/table\n */\n\nimport {\n\ttype ViewUpcastWriter,\n\ttype ViewDocumentFragment\n} from 'ckeditor5/src/engine.js';\n\nimport { convertCssLengthToPx } from './utils.js';\n\n/**\n * Applies border none for table and cells without a border specified.\n * Normalizes style length units to px.\n *\n * @internal\n */\nexport function transformTables(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tfor ( const item of writer.createRangeIn( documentFragment ).getItems() ) {\n\t\tif (\n\t\t\t!item.is( 'element', 'table' ) &&\n\t\t\t!item.is( 'element', 'td' ) &&\n\t\t\t!item.is( 'element', 'th' )\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst sides = [ 'left', 'top', 'right', 'bottom' ];\n\n\t\t// As this is a pasted table, we do not want default table styles to apply here\n\t\t// so we set border node for sides that does not have any border style.\n\t\t// It is enough to verify border style as border color and border width properties have default values in DOM.\n\t\tif ( sides.every( side => !item.hasStyle( `border-${ side }-style` ) ) ) {\n\t\t\twriter.setStyle( 'border-style', 'none', item );\n\t\t} else {\n\t\t\tfor ( const side of sides ) {\n\t\t\t\tif ( !item.hasStyle( `border-${ side }-style` ) ) {\n\t\t\t\t\twriter.setStyle( `border-${ side }-style`, 'none', item );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Translate style length units to px.\n\t\tconst props = [\n\t\t\t'width',\n\t\t\t'height',\n\t\t\t...sides.map( side => `border-${ side }-width` ),\n\t\t\t...sides.map( side => `padding-${ side }` )\n\t\t];\n\n\t\tfor ( const prop of props ) {\n\t\t\tif ( item.hasStyle( prop ) ) {\n\t\t\t\twriter.setStyle( prop, convertCssLengthToPx( item.getStyle( prop )! ), item );\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removeinvalidtablewidth\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `width:0px` style from table pasted from Google Sheets and `width=\"0\"` attribute from Word tables.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeInvalidTableWidth( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of writer.createRangeIn( documentFragment ).getItems() ) {\n\t\tif ( child.is( 'element', 'table' ) ) {\n\t\t\t// Remove invalid width style (Google Sheets: width:0px).\n\t\t\tif ( child.getStyle( 'width' ) === '0px' ) {\n\t\t\t\twriter.removeStyle( 'width', child );\n\t\t\t}\n\n\t\t\t// Remove invalid width attribute (Word: width=\"0\").\n\t\t\tif ( child.getAttribute( 'width' ) === '0' ) {\n\t\t\t\twriter.removeAttribute( 'width', child );\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/replacemsfootnotes\n */\n\nimport type { ViewDocumentFragment, ViewElement, ViewText, ViewUpcastWriter } from 'ckeditor5/src/engine.js';\n\n/**\n * Replaces MS Word specific footnotes references and definitions with proper elements.\n *\n * Things to know about MS Word footnotes:\n *\n * * Footnote references in Word are marked with `mso-footnote-id` style.\n * * Word does not support nested footnotes, so references within definitions are ignored.\n * * Word appends extra spaces after footnote references within definitions, which are trimmed.\n * * Footnote definitions list is marked with `mso-element: footnote-list` style it contain `mso-element: footnote` elements.\n * * Footnote definition might contain tables, lists and other elements, not only text. They are placed directly within `li` element,\n * without any wrapper (in opposition to text content of the definition, which is placed within `MsoFootnoteText` element).\n *\n * Example pseudo document showing MS Word footnote structure:\n *\n * ```html\n * <p>Text with footnote<a style='mso-footnote-id:ftn1'>[1]</a> reference.</p>\n *\n * <div style='mso-element:footnote-list'>\n * \t<div style='mso-element:footnote' id=ftn1>\n * \t\t<p class=MsoFootnoteText><a style='mso-footnote-id:ftn1'>[1]</a> Footnote content</p>\n * \t\t<table class=\"MsoTableGrid\">...</table>\n * \t</div>\n * </div>\n * ```\n *\n * Will be transformed into:\n *\n * ```html\n * <p>Text with footnote<sup class=\"footnote\"><a id=\"ref-footnote-ftn1\" href=\"#footnote-ftn1\">1</a></sup> reference.</p>\n *\n * <ol class=\"footnotes\">\n * \t<li class=\"footnote-definition\" id=\"footnote-ftn1\">\n * \t\t<a href=\"#ref-footnote-ftn1\" class=\"footnote-backlink\">^</a>\n * \t\t<div class=\"footnote-content\">\n * \t\t\t<p>Footnote content</p>\n * \t\t\t<table>...</table>\n * \t\t</div>\n * \t</li>\n * </ol>\n * ```\n *\n * @param documentFragment `data.content` obtained from clipboard.\n * @param writer The view writer instance.\n * @internal\n */\nexport function replaceMSFootnotes( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tconst msFootnotesRefs = new Map<string, ViewElement>();\n\tconst msFootnotesDefs = new Map<string, ViewElement>();\n\tlet msFootnotesDefinitionsList: ViewElement | null = null;\n\n\t// Phase 1: Collect all footnotes references and definitions. Find the footnotes definitions list element.\n\tfor ( const { item } of writer.createRangeIn( documentFragment ) ) {\n\t\tif ( !item.is( 'element' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If spot a footnotes definitions element, let's store it. It'll be replaced later.\n\t\t// There should be only one such element in the document.\n\t\tif ( item.getStyle( 'mso-element' ) === 'footnote-list' ) {\n\t\t\tmsFootnotesDefinitionsList = item;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If spot a footnote reference or definition, store it in the corresponding map.\n\t\tif ( item.hasStyle( 'mso-footnote-id' ) ) {\n\t\t\tconst msFootnoteDef = item.findAncestor( 'element', el => el.getStyle( 'mso-element' ) === 'footnote' );\n\n\t\t\tif ( msFootnoteDef ) {\n\t\t\t\t// If it's a reference within a definition, ignore it and track only the definition.\n\t\t\t\t// MS Word do not support nested footnotes, so it's safe to assume that all references within\n\t\t\t\t// a definition point to the same definition.\n\t\t\t\tconst msFootnoteDefId = msFootnoteDef.getAttribute( 'id' )!;\n\n\t\t\t\tmsFootnotesDefs.set( msFootnoteDefId, msFootnoteDef );\n\t\t\t} else {\n\t\t\t\t// If it's a reference outside of a definition, track it as a reference.\n\t\t\t\tconst msFootnoteRefId = item.getStyle( 'mso-footnote-id' )!;\n\n\t\t\t\tmsFootnotesRefs.set( msFootnoteRefId, item );\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\t// If there are no footnotes references or definitions, or no definitions list, there's nothing to normalize.\n\tif ( !msFootnotesRefs.size || !msFootnotesDefinitionsList ) {\n\t\treturn;\n\t}\n\n\t// Phase 2: Replace footnotes definitions list with proper element.\n\tconst footnotesDefinitionsList = createFootnotesListViewElement( writer );\n\n\twriter.replace( msFootnotesDefinitionsList, footnotesDefinitionsList );\n\n\t// Phase 3: Replace all footnotes references and add matching definitions to the definitions list.\n\tfor ( const [ footnoteId, msFootnoteRef ] of msFootnotesRefs ) {\n\t\tconst msFootnoteDef = msFootnotesDefs.get( footnoteId );\n\n\t\tif ( !msFootnoteDef ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Replace footnote reference.\n\t\twriter.replace( msFootnoteRef, createFootnoteRefViewElement( writer, footnoteId ) );\n\n\t\t// Append found matching definition to the definitions list.\n\t\t// Order doesn't matter here, as it'll be fixed in the post-fixer.\n\t\tconst defElements = createFootnoteDefViewElement( writer, footnoteId );\n\n\t\tremoveMSReferences( writer, msFootnoteDef );\n\n\t\t// Insert content within the `MsoFootnoteText` element. It's usually a definition text content.\n\t\tfor ( const child of msFootnoteDef.getChildren() ) {\n\t\t\tlet clonedChild = child;\n\n\t\t\tif ( child.is( 'element' ) ) {\n\t\t\t\tclonedChild = writer.clone( child, true );\n\t\t\t}\n\n\t\t\twriter.appendChild( clonedChild, defElements.content );\n\t\t}\n\n\t\twriter.appendChild( defElements.listItem, footnotesDefinitionsList );\n\t}\n}\n\n/**\n * Removes all MS Office specific references from the given element.\n *\n * It also removes leading space from text nodes following the references, as MS Word adds\n * them to separate the reference from the rest of the text.\n *\n * @param writer The view writer.\n * @param element The element to trim.\n * @returns The trimmed element.\n */\nfunction removeMSReferences( writer: ViewUpcastWriter, element: ViewElement ): ViewElement {\n\tconst elementsToRemove: Array<ViewElement> = [];\n\tconst textNodesToTrim: Array<ViewText> = [];\n\n\tfor ( const { item } of writer.createRangeIn( element ) ) {\n\t\tif ( item.is( 'element' ) && item.getStyle( 'mso-footnote-id' ) ) {\n\t\t\telementsToRemove.unshift( item );\n\n\t\t\t// MS Word used to add spaces after footnote references within definitions. Let's check if there's a space after\n\t\t\t// the footnote reference and mark it for trimming.\n\t\t\tconst { nextSibling } = item;\n\n\t\t\tif ( nextSibling?.is( '$text' ) && nextSibling.data.startsWith( ' ' ) ) {\n\t\t\t\ttextNodesToTrim.unshift( nextSibling );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const element of elementsToRemove ) {\n\t\twriter.remove( element );\n\t}\n\n\t// Remove only the leading space from text nodes following reference within definition, preserve the rest of the text.\n\tfor ( const textNode of textNodesToTrim ) {\n\t\tconst trimmedData = textNode.data.substring( 1 );\n\n\t\tif ( trimmedData.length > 0 ) {\n\t\t\t// Create a new text node and replace the old one.\n\t\t\tconst parent = textNode.parent!;\n\t\t\tconst index = parent.getChildIndex( textNode );\n\t\t\tconst newTextNode = writer.createText( trimmedData );\n\n\t\t\twriter.remove( textNode );\n\t\t\twriter.insertChild( index, newTextNode, parent );\n\t\t} else {\n\t\t\t// If the text node contained only a space, remove it entirely.\n\t\t\twriter.remove( textNode );\n\t\t}\n\t}\n\n\treturn element;\n}\n\n/**\n * Creates a footnotes list view element.\n *\n * @param writer The view writer instance.\n * @returns The footnotes list view element.\n */\nfunction createFootnotesListViewElement( writer: ViewUpcastWriter ): ViewElement {\n\treturn writer.createElement( 'ol', { class: 'footnotes' } );\n}\n\n/**\n * Creates a footnote reference view element.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns The footnote reference view element.\n */\nfunction createFootnoteRefViewElement( writer: ViewUpcastWriter, footnoteId: string ): ViewElement {\n\tconst sup = writer.createElement( 'sup', { class: 'footnote' } );\n\tconst link = writer.createElement( 'a', {\n\t\tid: `ref-${ footnoteId }`,\n\t\thref: `#${ footnoteId }`\n\t} );\n\n\twriter.appendChild( link, sup );\n\n\treturn sup;\n}\n\n/**\n * Creates a footnote definition view element with a backlink and a content container.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns An object containing the list item element, backlink and content container.\n */\nfunction createFootnoteDefViewElement( writer: ViewUpcastWriter, footnoteId: string ): {\n\tlistItem: ViewElement;\n\tcontent: ViewElement;\n} {\n\tconst listItem = writer.createElement( 'li', {\n\t\tid: footnoteId,\n\t\tclass: 'footnote-definition'\n\t} );\n\n\tconst backLink = writer.createElement( 'a', {\n\t\thref: `#ref-${ footnoteId }`,\n\t\tclass: 'footnote-backlink'\n\t} );\n\n\tconst content = writer.createElement( 'div', {\n\t\tclass: 'footnote-content'\n\t} );\n\n\twriter.appendChild( writer.createText( '^' ), backLink );\n\twriter.appendChild( backLink, listItem );\n\twriter.appendChild( content, listItem );\n\n\treturn {\n\t\tlistItem,\n\t\tcontent\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/normalizers/mswordnormalizer\n */\n\nimport { transformBookmarks } from '../filters/bookmark.js';\nimport { transformListItemLikeElementsIntoLists } from '../filters/list.js';\nimport { replaceImagesSourceWithBase64 } from '../filters/image.js';\nimport { removeMSAttributes } from '../filters/removemsattributes.js';\nimport { transformTables } from '../filters/table.js';\nimport { removeInvalidTableWidth } from '../filters/removeinvalidtablewidth.js';\nimport { replaceMSFootnotes } from '../filters/replacemsfootnotes.js';\nimport { ViewUpcastWriter, type ViewDocument } from 'ckeditor5/src/engine.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../normalizer.js';\n\nconst msWordMatch1 = /<meta\\s*name=\"?generator\"?\\s*content=\"?microsoft\\s*word\\s*\\d+\"?\\/?>/i;\nconst msWordMatch2 = /xmlns:o=\"urn:schemas-microsoft-com/i;\n\n/**\n * Normalizer for the content pasted from Microsoft Word.\n */\nexport class PasteFromOfficeMSWordNormalizer implements PasteFromOfficeNormalizer {\n\tpublic readonly document: ViewDocument;\n\n\tpublic readonly hasMultiLevelListPlugin: boolean;\n\n\t/**\n\t * Creates a new `PasteFromOfficeMSWordNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument, hasMultiLevelListPlugin: boolean = false ) {\n\t\tthis.document = document;\n\t\tthis.hasMultiLevelListPlugin = hasMultiLevelListPlugin;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn msWordMatch1.test( htmlString ) || msWordMatch2.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: PasteFromOfficeNormalizerData ): void {\n\t\tconst writer = new ViewUpcastWriter( this.document );\n\t\tconst { body: documentFragment, stylesString } = data._parsedData;\n\n\t\ttransformBookmarks( documentFragment, writer );\n\t\ttransformListItemLikeElementsIntoLists( documentFragment, stylesString, this.hasMultiLevelListPlugin );\n\t\treplaceImagesSourceWithBase64( documentFragment, data.dataTransfer.getData( 'text/rtf' ) );\n\t\ttransformTables( documentFragment, writer );\n\t\tremoveInvalidTableWidth( documentFragment, writer );\n\t\treplaceMSFootnotes( documentFragment, writer );\n\t\tremoveMSAttributes( documentFragment );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removeboldwrapper\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `<b>` tag wrapper added by Google Docs to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeBoldWrapper( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'b' ) && child.getStyle( 'font-weight' ) === 'normal' ) {\n\t\t\tconst childIndex = documentFragment.getChildIndex( child );\n\n\t\t\twriter.remove( child );\n\t\t\twriter.insertChild( childIndex, child.getChildren(), documentFragment );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/br\n */\n\nimport {\n\tViewDomConverter,\n\tViewDocument,\n\ttype ViewUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode\n} from 'ckeditor5/src/engine.js';\n\n/**\n * Transforms `<br>` elements that are siblings to some block element into a paragraphs.\n *\n * @param documentFragment The view structure to be transformed.\n * @internal\n */\nexport function transformBlockBrsToParagraphs(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tconst viewDocument = new ViewDocument( writer.document.stylesProcessor );\n\tconst domConverter = new ViewDomConverter( viewDocument, { renderingMode: 'data' } );\n\n\tconst blockElements = domConverter.blockElements;\n\tconst inlineObjectElements = domConverter.inlineObjectElements;\n\n\tconst elementsToReplace = [];\n\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif ( element.is( 'element', 'br' ) ) {\n\t\t\tconst nextSibling = findSibling( element, 'forward', writer, { blockElements, inlineObjectElements } );\n\t\t\tconst previousSibling = findSibling( element, 'backward', writer, { blockElements, inlineObjectElements } );\n\n\t\t\tconst nextSiblingIsBlock = isBlockViewElement( nextSibling, blockElements );\n\t\t\tconst previousSiblingIsBlock = isBlockViewElement( previousSibling, blockElements );\n\n\t\t\t// If the <br> is surrounded by blocks then convert it to a paragraph:\n\t\t\t// * <p>foo</p>[<br>]<p>bar</p> -> <p>foo</p>[<p></p>]<p>bar</p>\n\t\t\t// * <p>foo</p>[<br>] -> <p>foo</p>[<p></p>]\n\t\t\t// * [<br>]<p>foo</p> -> [<p></p>]<p>foo</p>\n\t\t\tif ( previousSiblingIsBlock || nextSiblingIsBlock ) {\n\t\t\t\telementsToReplace.push( element );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const element of elementsToReplace ) {\n\t\tif ( element.hasClass( 'Apple-interchange-newline' ) ) {\n\t\t\twriter.remove( element );\n\t\t} else {\n\t\t\twriter.replace( element, writer.createElement( 'p' ) );\n\t\t}\n\t}\n}\n\n/**\n * Returns sibling node, threats inline elements as transparent (but should stop on an inline objects).\n */\nfunction findSibling(\n\tviewElement: ViewElement,\n\tdirection: 'forward' | 'backward',\n\twriter: ViewUpcastWriter,\n\t{ blockElements, inlineObjectElements }: { blockElements: Array<string>; inlineObjectElements: Array<string> }\n) {\n\tlet position = writer.createPositionAt( viewElement, direction == 'forward' ? 'after' : 'before' );\n\n\t// Find first position that is just before a first:\n\t// * text node,\n\t// * block element,\n\t// * inline object element.\n\t// It's ignoring any inline (non-object) elements like span, strong, etc.\n\tposition = position.getLastMatchingPosition( ( { item } ) => (\n\t\titem.is( 'element' ) &&\n\t\t!blockElements.includes( item.name ) &&\n\t\t!inlineObjectElements.includes( item.name )\n\t), { direction } );\n\n\treturn direction == 'forward' ? position.nodeAfter : position.nodeBefore;\n}\n\n/**\n * Returns true for view elements that are listed as block view elements.\n */\nfunction isBlockViewElement( node: ViewNode | null, blockElements: Array<string> ) {\n\treturn !!node && node.is( 'element' ) && blockElements.includes( node.name );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/replacetabswithinprewithspaces\n */\n\nimport type { ViewDocumentFragment, ViewUpcastWriter, ViewText, ViewElement } from 'ckeditor5/src/engine.js';\n\n/**\n * Replaces tab characters with spaces in text nodes that are inside elements styled with `white-space: pre-wrap`.\n *\n * This is a workaround for incorrect detection of pre-like formatting in the DOM converter for pasted Google Docs documents.\n * When an element uses `white-space: pre-wrap`, the editor reduces tab characters to a single space, causing\n * inconsistent spacing in pasted content. This function replaces tabs with spaces to ensure visual consistency.\n * This is intended as a temporary solution.\n *\n * See: https://github.com/ckeditor/ckeditor5/issues/18995\n *\n * @param documentFragment The `data.content` element obtained from the clipboard.\n * @param writer The upcast writer used to manipulate the view structure.\n * @param tabWidth The number of spaces to replace each tab with. Defaults to 8.\n * @internal\n */\nexport function replaceTabsWithinPreWithSpaces(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter,\n\ttabWidth: number\n): void {\n\t// Collect all text nodes with tabs that are inside pre-wrap elements.\n\tconst textNodesToReplace: Set<ViewText> = new Set();\n\n\tfor ( const child of writer.createRangeIn( documentFragment ).getItems() ) {\n\t\tif ( !child.is( 'view:$textProxy' ) || !child.data.includes( '\\t' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if any parent has `white-space: pre-wrap`.\n\t\tif ( hasPreWrapParent( child.parent ) ) {\n\t\t\ttextNodesToReplace.add( child.textNode );\n\t\t}\n\t}\n\n\t// Replace tabs in each collected text node.\n\tfor ( const textNode of textNodesToReplace ) {\n\t\treplaceTabsInTextNode( textNode, writer, tabWidth );\n\t}\n}\n\n/**\n * Checks if element or any of its parents has `white-space: pre-wrap` style.\n */\nfunction hasPreWrapParent( element: ViewDocumentFragment | ViewElement | null ): boolean {\n\tlet parent = element;\n\n\twhile ( parent ) {\n\t\tif ( parent.is( 'element' ) ) {\n\t\t\tconst whiteSpace = parent.getStyle?.( 'white-space' );\n\n\t\t\tif ( whiteSpace === 'pre-wrap' ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\treturn false;\n}\n\n/**\n * Replaces all tabs with spaces in the given text node.\n */\nfunction replaceTabsInTextNode( textNode: ViewText, writer: ViewUpcastWriter, tabWidth: number ): void {\n\tconst { parent, data } = textNode;\n\n\tconst replacedData = data.replaceAll( '\\t', ' '.repeat( tabWidth ) );\n\tconst index = parent!.getChildIndex( textNode );\n\n\t// Remove old node and insert new one with replaced tabs.\n\twriter.remove( textNode );\n\twriter.insertChild( index, writer.createText( replacedData ), parent! );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/normalizers/googledocsnormalizer\n */\n\nimport { ViewUpcastWriter, type ViewDocument } from 'ckeditor5/src/engine.js';\n\nimport { removeBoldWrapper } from '../filters/removeboldwrapper.js';\nimport { transformBlockBrsToParagraphs } from '../filters/br.js';\nimport { unwrapParagraphInListItem } from '../filters/list.js';\nimport { replaceTabsWithinPreWithSpaces } from '../filters/replacetabswithinprewithspaces.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../normalizer.js';\n\nconst googleDocsMatch = /id=(\"|')docs-internal-guid-[-0-9a-f]+(\"|')/i;\n\n/**\n * Normalizer for the content pasted from Google Docs.\n *\n * @internal\n */\nexport class GoogleDocsNormalizer implements PasteFromOfficeNormalizer {\n\tpublic readonly document: ViewDocument;\n\n\t/**\n\t * Creates a new `GoogleDocsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn googleDocsMatch.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: PasteFromOfficeNormalizerData ): void {\n\t\tconst writer = new ViewUpcastWriter( this.document );\n\t\tconst { body: documentFragment } = data._parsedData;\n\n\t\tremoveBoldWrapper( documentFragment, writer );\n\t\tunwrapParagraphInListItem( documentFragment, writer );\n\t\ttransformBlockBrsToParagraphs( documentFragment, writer );\n\t\treplaceTabsWithinPreWithSpaces( documentFragment, writer, 8 );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removexmlns\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `xmlns` attribute from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeXmlns( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'table' ) && child.hasAttribute( 'xmlns' ) ) {\n\t\t\twriter.removeAttribute( 'xmlns', child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removegooglesheetstag\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `<google-sheets-html-origin>` tag wrapper added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeGoogleSheetsTag( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'google-sheets-html-origin' ) ) {\n\t\t\tconst childIndex = documentFragment.getChildIndex( child );\n\n\t\t\twriter.remove( child );\n\t\t\twriter.insertChild( childIndex, child.getChildren(), documentFragment );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removestyleblock\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes `<style>` block added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeStyleBlock( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of Array.from( documentFragment.getChildren() ) ) {\n\t\tif ( child.is( 'element', 'style' ) ) {\n\t\t\twriter.remove( child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/normalizers/googlesheetsnormalizer\n */\n\nimport { ViewUpcastWriter, type ViewDocument } from 'ckeditor5/src/engine.js';\n\nimport { removeXmlns } from '../filters/removexmlns.js';\nimport { removeGoogleSheetsTag } from '../filters/removegooglesheetstag.js';\nimport { removeInvalidTableWidth } from '../filters/removeinvalidtablewidth.js';\nimport { removeStyleBlock } from '../filters/removestyleblock.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../normalizer.js';\n\nconst googleSheetsMatch = /<google-sheets-html-origin/i;\n\n/**\n * Normalizer for the content pasted from Google Sheets.\n *\n * @internal\n */\nexport class GoogleSheetsNormalizer implements PasteFromOfficeNormalizer {\n\tpublic readonly document: ViewDocument;\n\n\t/**\n\t * Creates a new `GoogleSheetsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn googleSheetsMatch.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: PasteFromOfficeNormalizerData ): void {\n\t\tconst writer = new ViewUpcastWriter( this.document );\n\t\tconst { body: documentFragment } = data._parsedData;\n\n\t\tremoveGoogleSheetsTag( documentFragment, writer );\n\t\tremoveXmlns( documentFragment, writer );\n\t\tremoveInvalidTableWidth( documentFragment, writer );\n\t\tremoveStyleBlock( documentFragment, writer );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/space\n */\n\n/**\n * Replaces last space preceding elements closing tag with `&nbsp;`. Such operation prevents spaces from being removed\n * during further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n * This method also takes into account Word specific `<o:p></o:p>` empty tags.\n * Additionally multiline sequences of spaces and new lines between tags are removed (see #39 and #40).\n *\n * @param htmlString HTML string in which spacing should be normalized.\n * @returns Input HTML with spaces normalized.\n * @internal\n */\nexport function normalizeSpacing( htmlString: string ): string {\n\t// Run normalizeSafariSpaceSpans() two times to cover nested spans.\n\treturn normalizeSafariSpaceSpans( normalizeSafariSpaceSpans( htmlString ) )\n\t\t// Remove all \\r\\n from \"spacerun spans\" so the last replace line doesn't strip all whitespaces.\n\t\t.replace( /(<span\\s+style=['\"]mso-spacerun:yes['\"]>[^\\S\\r\\n]*?)[\\r\\n]+([^\\S\\r\\n]*<\\/span>)/g, '$1$2' )\n\t\t.replace( /<span\\s+style=['\"]mso-spacerun:yes['\"]><\\/span>/g, '' )\n\t\t.replace( /(<span\\s+style=['\"]letter-spacing:[^'\"]+?['\"]>)[\\r\\n]+(<\\/span>)/g, '$1 $2' )\n\t\t.replace( / <\\//g, '\\u00A0</' )\n\t\t.replace( / <o:p><\\/o:p>/g, '\\u00A0<o:p></o:p>' )\n\t\t// Remove <o:p> block filler from empty paragraph. Safari uses \\u00A0 instead of &nbsp;.\n\t\t.replace( /<o:p>(&nbsp;|\\u00A0)<\\/o:p>/g, '' )\n\t\t// Remove all whitespaces when they contain any \\r or \\n.\n\t\t.replace( />([^\\S\\r\\n]*[\\r\\n]\\s*)</g, '><' );\n}\n\n/**\n * Normalizes spacing in special Word `spacerun spans` (`<span style='mso-spacerun:yes'>\\s+</span>`) by replacing\n * all spaces with `&nbsp; ` pairs. This prevents spaces from being removed during further DOM/View processing\n * (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n *\n * @param htmlDocument Native `Document` object in which spacing should be normalized.\n * @internal\n */\nexport function normalizeSpacerunSpans( htmlDocument: Document ): void {\n\thtmlDocument.querySelectorAll( 'span[style*=spacerun]' ).forEach( el => {\n\t\tconst htmlElement = el as HTMLElement;\n\t\tconst innerTextLength = htmlElement.innerText.length || 0;\n\n\t\thtmlElement.innerText = Array( innerTextLength + 1 ).join( '\\u00A0 ' ).substr( 0, innerTextLength );\n\t} );\n}\n\n/**\n * Normalizes specific spacing generated by Safari when content pasted from Word (`<span class=\"Apple-converted-space\"> </span>`)\n * by replacing all spaces sequences longer than 1 space with `&nbsp; ` pairs. This prevents spaces from being removed during\n * further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDataFromDomText}).\n *\n * This function is similar to {@link module:clipboard/utils/normalizeclipboarddata normalizeClipboardData util} but uses\n * regular spaces / &nbsp; sequence for replacement.\n *\n * @param htmlString HTML string in which spacing should be normalized\n * @returns Input HTML with spaces normalized.\n * @internal\n */\nfunction normalizeSafariSpaceSpans( htmlString: string ) {\n\treturn htmlString.replace( /<span(?: class=\"Apple-converted-space\"|)>(\\s+)<\\/span>/g, ( fullMatch, spaces ) => {\n\t\treturn spaces.length === 1 ? ' ' : Array( spaces.length + 1 ).join( '\\u00A0 ' ).substr( 0, spaces.length );\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/parse\n */\n\nimport {\n\tViewDomConverter,\n\tViewDocument,\n\ttype StylesProcessor,\n\ttype ViewDocumentFragment\n} from 'ckeditor5/src/engine.js';\n\nimport { normalizeSpacing, normalizeSpacerunSpans } from './space.js';\n\n/**\n * Parses the provided HTML extracting contents of `<body>` and `<style>` tags.\n *\n * @param htmlString HTML string to be parsed.\n */\nexport function parsePasteOfficeHtml( htmlString: string, stylesProcessor: StylesProcessor ): PasteOfficeHtmlParseResult {\n\tconst domParser = new DOMParser();\n\n\t// Remove Word specific \"if comments\" so content inside is not omitted by the parser.\n\thtmlString = htmlString.replace( /<!--\\[if gte vml 1]>/g, '' );\n\n\t// Clean the <head> section of MS Windows specific tags. See https://github.com/ckeditor/ckeditor5/issues/15333.\n\t// The regular expression matches the <o:SmartTagType> tag with optional attributes (with or without values).\n\thtmlString = htmlString.replace( /<o:SmartTagType(?:\\s+[^\\s>=]+(?:=\"[^\"]*\")?)*\\s*\\/?>/gi, '' );\n\n\tconst normalizedHtml = normalizeSpacing( cleanContentAfterBody( htmlString ) );\n\n\t// Parse htmlString as native Document object.\n\tconst htmlDocument = domParser.parseFromString( normalizedHtml, 'text/html' );\n\n\tnormalizeSpacerunSpans( htmlDocument );\n\n\t// Get `innerHTML` first as transforming to View modifies the source document.\n\tconst bodyString = htmlDocument.body.innerHTML;\n\n\t// Transform document.body to View.\n\tconst bodyView = documentToView( htmlDocument, stylesProcessor );\n\n\t// Extract stylesheets.\n\tconst stylesObject = extractStyles( htmlDocument );\n\n\treturn {\n\t\tbody: bodyView,\n\t\tbodyString,\n\t\tstyles: stylesObject.styles,\n\t\tstylesString: stylesObject.stylesString\n\t};\n}\n\n/**\n * The result of {@link ~parsePasteOfficeHtml}.\n */\nexport interface PasteOfficeHtmlParseResult {\n\n\t/**\n\t * Parsed body content as a traversable structure.\n\t */\n\tbody: ViewDocumentFragment;\n\n\t/**\n\t * Entire body content as a string.\n\t */\n\tbodyString: string;\n\n\t/**\n\t * Array of native `CSSStyleSheet` objects, each representing separate `style` tag from the source HTML.\n\t */\n\tstyles: Array<CSSStyleSheet>;\n\n\t/**\n\t * All `style` tags contents combined in the order of occurrence into one string.\n\t */\n\tstylesString: string;\n}\n\n/**\n * Transforms native `Document` object into {@link module:engine/view/documentfragment~ViewDocumentFragment}. Comments are skipped.\n *\n * @param htmlDocument Native `Document` object to be transformed.\n */\nfunction documentToView( htmlDocument: Document, stylesProcessor: StylesProcessor ) {\n\tconst viewDocument = new ViewDocument( stylesProcessor );\n\tconst domConverter = new ViewDomConverter( viewDocument, { renderingMode: 'data' } );\n\tconst fragment = htmlDocument.createDocumentFragment();\n\tconst nodes = htmlDocument.body.childNodes;\n\n\twhile ( nodes.length > 0 ) {\n\t\tfragment.appendChild( nodes[ 0 ] );\n\t}\n\n\treturn domConverter.domToView( fragment, { skipComments: true } ) as ViewDocumentFragment;\n}\n\n/**\n * Extracts both `CSSStyleSheet` and string representation from all `style` elements available in a provided `htmlDocument`.\n *\n * @param htmlDocument Native `Document` object from which styles will be extracted.\n */\nfunction extractStyles( htmlDocument: Document ): { styles: Array<CSSStyleSheet>; stylesString: string } {\n\tconst styles = [];\n\tconst stylesString = [];\n\tconst styleTags = Array.from( htmlDocument.getElementsByTagName( 'style' ) );\n\n\tfor ( const style of styleTags ) {\n\t\tif ( style.sheet && style.sheet.cssRules && style.sheet.cssRules.length ) {\n\t\t\tstyles.push( style.sheet );\n\t\t\tstylesString.push( style.innerHTML );\n\t\t}\n\t}\n\n\treturn {\n\t\tstyles,\n\t\tstylesString: stylesString.join( ' ' )\n\t};\n}\n\n/**\n * Removes leftover content from between closing </body> and closing </html> tag:\n *\n * ```html\n * <html><body><p>Foo Bar</p></body><span>Fo</span></html> -> <html><body><p>Foo Bar</p></body></html>\n * ```\n *\n * This function is used as specific browsers (Edge) add some random content after `body` tag when pasting from Word.\n * @param htmlString The HTML string to be cleaned.\n * @returns The HTML string with leftover content removed.\n */\nfunction cleanContentAfterBody( htmlString: string ) {\n\tconst bodyCloseTag = '</body>';\n\tconst htmlCloseTag = '</html>';\n\n\tconst bodyCloseIndex = htmlString.indexOf( bodyCloseTag );\n\n\tif ( bodyCloseIndex < 0 ) {\n\t\treturn htmlString;\n\t}\n\n\tconst htmlCloseIndex = htmlString.indexOf( htmlCloseTag, bodyCloseIndex + bodyCloseTag.length );\n\n\treturn htmlString.substring( 0, bodyCloseIndex + bodyCloseTag.length ) +\n\t\t( htmlCloseIndex >= 0 ? htmlString.substring( htmlCloseIndex ) : '' );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/pastefromoffice\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport { ClipboardPipeline } from 'ckeditor5/src/clipboard.js';\n\nimport { PasteFromOfficeMSWordNormalizer } from './normalizers/mswordnormalizer.js';\nimport { GoogleDocsNormalizer } from './normalizers/googledocsnormalizer.js';\nimport { GoogleSheetsNormalizer } from './normalizers/googlesheetsnormalizer.js';\n\nimport { parsePasteOfficeHtml } from './filters/parse.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from './normalizer.js';\n\n/**\n * The Paste from Office plugin.\n *\n * This plugin handles content pasted from Office apps and transforms it (if necessary)\n * to a valid structure which can then be understood by the editor features.\n *\n * Transformation is made by a set of predefined {@link module:paste-from-office/normalizer~PasteFromOfficeNormalizer normalizers}.\n * This plugin includes following normalizers:\n * * {@link module:paste-from-office/normalizers/mswordnormalizer~PasteFromOfficeMSWordNormalizer Microsoft Word normalizer}\n * * {@link module:paste-from-office/normalizers/googledocsnormalizer~GoogleDocsNormalizer Google Docs normalizer}\n *\n * For more information about this feature check the {@glink api/paste-from-office package page}.\n */\nexport class PasteFromOffice extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PasteFromOffice' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'PFO';\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\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\t\tconst viewDocument = editor.editing.view.document;\n\t\tconst normalizers: Array<PasteFromOfficeNormalizer> = [];\n\t\tconst hasMultiLevelListPlugin = this.editor.plugins.has( 'MultiLevelList' );\n\n\t\tnormalizers.push( new PasteFromOfficeMSWordNormalizer( viewDocument, hasMultiLevelListPlugin ) );\n\t\tnormalizers.push( new GoogleDocsNormalizer( viewDocument ) );\n\t\tnormalizers.push( new GoogleSheetsNormalizer( viewDocument ) );\n\n\t\tclipboardPipeline.on(\n\t\t\t'inputTransformation',\n\t\t\t( evt, data: PasteFromOfficeNormalizerData ) => {\n\t\t\t\tif ( data._isTransformedWithPasteFromOffice ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst codeBlock = editor.model.document.selection.getFirstPosition()!.parent;\n\n\t\t\t\tif ( codeBlock.is( 'element', 'codeBlock' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst htmlString = data.dataTransfer.getData( 'text/html' );\n\t\t\t\tconst activeNormalizer = normalizers.find( normalizer => normalizer.isActive( htmlString ) );\n\n\t\t\t\tif ( activeNormalizer ) {\n\t\t\t\t\tif ( !data._parsedData ) {\n\t\t\t\t\t\tdata._parsedData = parsePasteOfficeHtml( htmlString, viewDocument.stylesProcessor );\n\t\t\t\t\t}\n\n\t\t\t\t\tactiveNormalizer.execute( data );\n\n\t\t\t\t\tdata._isTransformedWithPasteFromOffice = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: 'high' }\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/filters/bookmark.ts","../src/filters/utils.ts","../src/filters/list.ts","../src/filters/image.ts","../src/filters/removemsattributes.ts","../src/filters/table.ts","../src/filters/removeinvalidtablewidth.ts","../src/filters/replacemsfootnotes.ts","../src/normalizers/mswordnormalizer.ts","../src/filters/removeboldwrapper.ts","../src/filters/br.ts","../src/filters/replacetabswithinprewithspaces.ts","../src/normalizers/googledocsnormalizer.ts","../src/filters/removexmlns.ts","../src/filters/removegooglesheetstag.ts","../src/filters/removestyleblock.ts","../src/normalizers/googlesheetsnormalizer.ts","../src/filters/space.ts","../src/filters/parse.ts","../src/pastefromoffice.ts"],"names":["transformBookmarks","documentFragment","writer","elementsToChange","value","createRangeIn","element","item","is","hasAttribute","push","index","parent","getChildIndex","children","getChildren","insertChild","convertCssLengthToPx","numericValue","parseFloat","endsWith","toPx","isPx","undefined","Math","round","transformListItemLikeElementsIntoLists","stylesString","hasMultiLevelListPlugin","childCount","ViewUpcastWriter","document","itemLikeElements","findAllItemLikeElements","length","encounteredLists","stack","itemLikeElement","indent","isListContinuation","originalListId","id","min","listStyle","detectListStyle","listElement","name","type","startIndex","createNewEmptyList","marginLeft","setStyle","parentListItems","listItemElements","appendChild","listItem","createElement","removeBulletElement","removeStyle","stackItem","find","listItems","unwrapParagraphInListItem","firstChild","getChild","unwrapElement","range","foundMargins","Set","getItems","match","getMarginLeftNormalized","Array","from","getClassNames","className","startsWith","hasStyle","getStyle","has","itemData","getListItemData","order","add","clear","currentItem","previousSibling","isList","listLikeItem","listStyleRegexp","RegExp","listStyleTypeRegex","listStartIndexRegex","legalStyleListRegex","multiLevelNumberFormatTypeRegex","legalStyleListMatch","exec","multiLevelNumberFormatMatch","islegalStyleList","listStyleMatch","listStyleType","listStyleTypeMatch","trim","bulletedStyle","findBulletedListStyle","listStartIndexMatch","parseInt","style","mapListStyleDefinition","isLegalStyleList","getAttribute","listMarkerElement","findListMarkerNode","listMarker","_data","childNode","textNodeOrElement","list","setAttribute","addClass","idMatch","orderMatch","indentMatch","bulletMatcher","Matcher","styles","remove","replaceImagesSourceWithBase64","rtfData","upcastWriter","shapesIds","findAllShapesIds","removeAllImgElementsRepresentingShapes","insertMissingImgs","removeAllShapeElements","images","findAllImageElementsWithLocalSource","replaceImagesFileSourceWithInlineRepresentation","extractImageDataFromRtf","_convertHexToBase64","hexString","btoa","map","char","String","fromCharCode","join","shapeElementsMatcher","el","prevSiblingName","exceptionIds","isElementAShape","hasElementGfxdataAttribute","isPreviousSiblingAShapeType","isElementIdInExceptionsArray","some","includes","imageElementsMatcher","imgs","shapes","split","every","shape","indexOf","img","shapeIds","containsMatchingImg","attrs","src","findSrc","alt","nodes","node","child","currentImageIndex","imageIndex","regexPictureHeader","regexPicture","source","result","image","imageType","hex","replace","imageElements","imagesHexSources","i","rtfHexSource","newSrc","removeMSAttributes","elementsToUnwrap","removeClass","styleName","getStyleNames","isEmpty","itemParent","childIndex","transformTables","hasTablePropertiesPlugin","hasExtendedTableBlockAlignment","directParent","grandParent","divParent","sides","side","props","prop","removeInvalidTableWidth","removeAttribute","replaceMSFootnotes","msFootnotesRefs","Map","msFootnotesDefs","msFootnotesDefinitionsList","msFootnoteDef","findAncestor","msFootnoteDefId","set","msFootnoteRefId","size","footnotesDefinitionsList","createFootnotesListViewElement","footnoteId","msFootnoteRef","get","createFootnoteRefViewElement","defElements","createFootnoteDefViewElement","removeMSReferences","clonedChild","clone","content","elementsToRemove","textNodesToTrim","unshift","nextSibling","data","textNode","trimmedData","substring","newTextNode","createText","class","sup","link","href","backLink","msWordMatch1","msWordMatch2","PasteFromOfficeMSWordNormalizer","isActive","htmlString","test","execute","body","_parsedData","dataTransfer","getData","removeBoldWrapper","transformBlockBrsToParagraphs","viewDocument","ViewDocument","stylesProcessor","domConverter","ViewDomConverter","renderingMode","blockElements","inlineObjectElements","elementsToReplace","findSibling","nextSiblingIsBlock","isBlockViewElement","previousSiblingIsBlock","hasClass","viewElement","direction","position","createPositionAt","getLastMatchingPosition","nodeAfter","nodeBefore","replaceTabsWithinPreWithSpaces","tabWidth","textNodesToReplace","hasPreWrapParent","replaceTabsInTextNode","whiteSpace","replacedData","replaceAll","repeat","googleDocsMatch","GoogleDocsNormalizer","removeXmlns","removeGoogleSheetsTag","removeStyleBlock","googleSheetsMatch","GoogleSheetsNormalizer","normalizeSpacing","normalizeSafariSpaceSpans","normalizeSpacerunSpans","htmlDocument","querySelectorAll","forEach","htmlElement","innerTextLength","innerText","substr","fullMatch","spaces","parsePasteOfficeHtml","domParser","DOMParser","normalizedHtml","cleanContentAfterBody","parseFromString","bodyString","innerHTML","bodyView","documentToView","stylesObject","extractStyles","fragment","createDocumentFragment","childNodes","domToView","skipComments","styleTags","getElementsByTagName","sheet","cssRules","bodyCloseTag","htmlCloseTag","bodyCloseIndex","htmlCloseIndex","PasteFromOffice","Plugin","pluginName","licenseFeatureCode","isOfficialPlugin","isPremiumPlugin","requires","ClipboardPipeline","init","editor","clipboardPipeline","plugins","editing","view","normalizers","config","on","evt","_isTransformedWithPasteFromOffice","codeBlock","model","selection","getFirstPosition","activeNormalizer","normalizer","priority"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { ClipboardPipeline } from '@ckeditor/ckeditor5-clipboard/dist/index.js';\nimport { ViewUpcastWriter, Matcher, ViewDocument, ViewDomConverter } from '@ckeditor/ckeditor5-engine/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/bookmark\n */ /**\n * Transforms `<a>` elements which are bookmarks by moving their children after the element.\n *\n * @internal\n */ function transformBookmarks(documentFragment, writer) {\n const elementsToChange = [];\n for (const value of writer.createRangeIn(documentFragment)){\n const element = value.item;\n if (element.is('element', 'a') && !element.hasAttribute('href') && (element.hasAttribute('id') || element.hasAttribute('name'))) {\n elementsToChange.push(element);\n }\n }\n for (const element of elementsToChange){\n const index = element.parent.getChildIndex(element) + 1;\n const children = element.getChildren();\n writer.insertChild(index, children, element.parent);\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/utils\n */ /**\n * Normalizes CSS length value to 'px'.\n *\n * @internal\n */ function convertCssLengthToPx(value) {\n const numericValue = parseFloat(value);\n if (value.endsWith('pt')) {\n // 1pt = 1in / 72\n return toPx(numericValue * 96 / 72);\n } else if (value.endsWith('pc')) {\n // 1pc = 12pt = 1in / 6.\n return toPx(numericValue * 12 * 96 / 72);\n } else if (value.endsWith('in')) {\n // 1in = 2.54cm = 96px\n return toPx(numericValue * 96);\n } else if (value.endsWith('cm')) {\n // 1cm = 96px / 2.54\n return toPx(numericValue * 96 / 2.54);\n } else if (value.endsWith('mm')) {\n // 1mm = 1cm / 10\n return toPx(numericValue / 10 * 96 / 2.54);\n }\n return value;\n}\n/**\n * Returns true for value with 'px' unit.\n *\n * @internal\n */ function isPx(value) {\n return value !== undefined && value.endsWith('px');\n}\n/**\n * Returns a rounded 'px' value.\n *\n * @internal\n */ function toPx(value) {\n return Math.round(value) + 'px';\n}\n\n/**\n * Transforms Word specific list-like elements to the semantic HTML lists.\n *\n * Lists in Word are represented by block elements with special attributes like:\n *\n * ```xml\n * <p class=MsoListParagraphCxSpFirst style='mso-list:l1 level1 lfo1'>...</p> // Paragraph based list.\n * <h1 style='mso-list:l0 level1 lfo1'>...</h1> // Heading 1 based list.\n * ```\n *\n * @param documentFragment The view structure to be transformed.\n * @param stylesString Styles from which list-like elements styling will be extracted.\n * @internal\n */ function transformListItemLikeElementsIntoLists(documentFragment, stylesString, hasMultiLevelListPlugin) {\n if (!documentFragment.childCount) {\n return;\n }\n const writer = new ViewUpcastWriter(documentFragment.document);\n const itemLikeElements = findAllItemLikeElements(documentFragment, writer);\n if (!itemLikeElements.length) {\n return;\n }\n const encounteredLists = {};\n const stack = [];\n for (const itemLikeElement of itemLikeElements){\n if (itemLikeElement.indent !== undefined) {\n if (!isListContinuation(itemLikeElement)) {\n stack.length = 0;\n }\n // Combined list ID for addressing encounter lists counters.\n const originalListId = `${itemLikeElement.id}:${itemLikeElement.indent}`;\n // Normalized list item indentation.\n const indent = Math.min(itemLikeElement.indent - 1, stack.length);\n // Trimming of the list stack on list ID change.\n if (indent < stack.length && stack[indent].id !== itemLikeElement.id) {\n stack.length = indent;\n }\n // Trimming of the list stack on lower indent list encountered.\n if (indent < stack.length - 1) {\n stack.length = indent + 1;\n } else {\n const listStyle = detectListStyle(itemLikeElement, stylesString);\n // Create a new OL/UL if required (greater indent or different list type).\n if (indent > stack.length - 1 || stack[indent].listElement.name != listStyle.type) {\n // Check if there is some start index to set from a previous list.\n if (indent == 0 && listStyle.type == 'ol' && itemLikeElement.id !== undefined && encounteredLists[originalListId]) {\n listStyle.startIndex = encounteredLists[originalListId];\n }\n const listElement = createNewEmptyList(listStyle, writer, hasMultiLevelListPlugin);\n // Apply list padding only if we have margins for the item and the parent item.\n if (isPx(itemLikeElement.marginLeft) && (indent == 0 || isPx(stack[indent - 1].marginLeft))) {\n let marginLeft = itemLikeElement.marginLeft;\n if (indent > 0) {\n // Convert the padding from absolute to relative.\n marginLeft = toPx(parseFloat(marginLeft) - parseFloat(stack[indent - 1].marginLeft));\n }\n writer.setStyle('padding-left', marginLeft, listElement);\n }\n // Insert the new OL/UL.\n if (stack.length == 0) {\n const parent = itemLikeElement.element.parent;\n const index = parent.getChildIndex(itemLikeElement.element) + 1;\n writer.insertChild(index, listElement, parent);\n } else {\n const parentListItems = stack[indent - 1].listItemElements;\n writer.appendChild(listElement, parentListItems[parentListItems.length - 1]);\n }\n // Update the list stack for other items to reference.\n stack[indent] = {\n ...itemLikeElement,\n listElement,\n listItemElements: []\n };\n // Prepare list counter for start index.\n if (indent == 0 && itemLikeElement.id !== undefined) {\n encounteredLists[originalListId] = listStyle.startIndex || 1;\n }\n }\n }\n // Use LI if it is already it or create a new LI element.\n // https://github.com/ckeditor/ckeditor5/issues/15964\n const listItem = itemLikeElement.element.name == 'li' ? itemLikeElement.element : writer.createElement('li');\n // Append the LI to OL/UL.\n writer.appendChild(listItem, stack[indent].listElement);\n stack[indent].listItemElements.push(listItem);\n // Increment list counter.\n if (indent == 0 && itemLikeElement.id !== undefined) {\n encounteredLists[originalListId]++;\n }\n // Append list block to LI.\n if (itemLikeElement.element != listItem) {\n writer.appendChild(itemLikeElement.element, listItem);\n }\n // Clean list block.\n removeBulletElement(itemLikeElement.element, writer);\n writer.removeStyle('text-indent', itemLikeElement.element); // #12361\n writer.removeStyle('margin-left', itemLikeElement.element);\n } else {\n // Other blocks in a list item.\n const stackItem = stack.find((stackItem)=>stackItem.marginLeft == itemLikeElement.marginLeft);\n // This might be a paragraph that has known margin, but it is not a real list block.\n if (stackItem) {\n const listItems = stackItem.listItemElements;\n // Append block to LI.\n writer.appendChild(itemLikeElement.element, listItems[listItems.length - 1]);\n writer.removeStyle('margin-left', itemLikeElement.element);\n } else {\n stack.length = 0;\n }\n }\n }\n}\n/**\n * Removes paragraph wrapping content inside a list item.\n *\n * @internal\n */ function unwrapParagraphInListItem(documentFragment, writer) {\n for (const value of writer.createRangeIn(documentFragment)){\n const element = value.item;\n if (element.is('element', 'li')) {\n // Google Docs allows for single paragraph inside LI.\n const firstChild = element.getChild(0);\n if (firstChild && firstChild.is('element', 'p')) {\n writer.unwrapElement(firstChild);\n }\n }\n }\n}\n/**\n * Finds all list-like elements in a given document fragment.\n *\n * @param documentFragment Document fragment in which to look for list-like nodes.\n * @returns Array of found list-like items. Each item is an object containing\n * @internal\n */ function findAllItemLikeElements(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const itemLikeElements = [];\n const foundMargins = new Set();\n for (const item of range.getItems()){\n // https://github.com/ckeditor/ckeditor5/issues/15964\n if (!item.is('element') || !item.name.match(/^(p|h\\d+|li|div)$/)) {\n continue;\n }\n // Try to rely on margin-left style to find paragraphs visually aligned with previously encountered list item.\n let marginLeft = getMarginLeftNormalized(item);\n // Ignore margin-left 0 style if there is no MsoList... class.\n if (marginLeft !== undefined && parseFloat(marginLeft) == 0 && !Array.from(item.getClassNames()).find((className)=>className.startsWith('MsoList'))) {\n marginLeft = undefined;\n }\n // List item or a following list item block.\n if (item.hasStyle('mso-list') && item.getStyle('mso-list') !== 'none' || marginLeft !== undefined && foundMargins.has(marginLeft)) {\n const itemData = getListItemData(item);\n itemLikeElements.push({\n element: item,\n id: itemData.id,\n order: itemData.order,\n indent: itemData.indent,\n marginLeft\n });\n if (marginLeft !== undefined) {\n foundMargins.add(marginLeft);\n }\n } else {\n foundMargins.clear();\n }\n }\n return itemLikeElements;\n}\n/**\n * Whether the given element is possibly a list continuation. Previous element was wrapped into a list\n * or the current element already is inside a list.\n */ function isListContinuation(currentItem) {\n const previousSibling = currentItem.element.previousSibling;\n if (!previousSibling) {\n const parent = currentItem.element.parent;\n // If it's a li inside ul or ol like in here: https://github.com/ckeditor/ckeditor5/issues/15964.\n // If the parent has previous sibling, which is not a list, then it is not a continuation.\n return isList(parent) && (!parent.previousSibling || isList(parent.previousSibling));\n }\n // Even with the same id the list does not have to be continuous (#43).\n return isList(previousSibling);\n}\nfunction isList(element) {\n return element.is('element', 'ol') || element.is('element', 'ul');\n}\n/**\n * Extracts list item style from the provided CSS.\n *\n * List item style is extracted from the CSS stylesheet. Each list with its specific style attribute\n * value (`mso-list:l1 level1 lfo1`) has its dedicated properties in a CSS stylesheet defined with a selector like:\n *\n * ```css\n * @list l1:level1 { ... }\n * ```\n *\n * It contains `mso-level-number-format` property which defines list numbering/bullet style. If this property\n * is not defined it means default `decimal` numbering.\n *\n * Here CSS string representation is used as `mso-level-number-format` property is an invalid CSS property\n * and will be removed during CSS parsing.\n *\n * @param listLikeItem List-like item for which list style will be searched for. Usually\n * a result of `findAllItemLikeElements()` function.\n * @param stylesString CSS stylesheet.\n * @returns An object with properties:\n *\n * * type - List type, could be `ul` or `ol`.\n * * startIndex - List start index, valid only for ordered lists.\n * * style - List style, for example: `decimal`, `lower-roman`, etc. It is extracted\n * directly from Word stylesheet and adjusted to represent proper values for the CSS `list-style-type` property.\n * If it cannot be adjusted, the `null` value is returned.\n */ function detectListStyle(listLikeItem, stylesString) {\n const listStyleRegexp = new RegExp(`@list l${listLikeItem.id}:level${listLikeItem.indent}\\\\s*({[^}]*)`, 'gi');\n const listStyleTypeRegex = /mso-level-number-format:([^;]{0,100});/gi;\n const listStartIndexRegex = /mso-level-start-at:\\s{0,100}([0-9]{0,10})\\s{0,100};/gi;\n const legalStyleListRegex = new RegExp(`@list\\\\s+l${listLikeItem.id}:level\\\\d\\\\s*{[^{]*mso-level-text:\"%\\\\d\\\\\\\\.`, 'gi');\n const multiLevelNumberFormatTypeRegex = new RegExp(`@list l${listLikeItem.id}:level\\\\d\\\\s*{[^{]*mso-level-number-format:`, 'gi');\n const legalStyleListMatch = legalStyleListRegex.exec(stylesString);\n const multiLevelNumberFormatMatch = multiLevelNumberFormatTypeRegex.exec(stylesString);\n // Multi level lists in Word have mso-level-number-format attribute except legal lists,\n // so we used that. If list has legal list match and doesn't has mso-level-number-format\n // then this is legal-list.\n const islegalStyleList = legalStyleListMatch && !multiLevelNumberFormatMatch;\n const listStyleMatch = listStyleRegexp.exec(stylesString);\n let listStyleType = 'decimal'; // Decimal is default one.\n let type = 'ol'; // <ol> is default list.\n let startIndex = null;\n if (listStyleMatch && listStyleMatch[1]) {\n const listStyleTypeMatch = listStyleTypeRegex.exec(listStyleMatch[1]);\n if (listStyleTypeMatch && listStyleTypeMatch[1]) {\n listStyleType = listStyleTypeMatch[1].trim();\n type = listStyleType !== 'bullet' && listStyleType !== 'image' ? 'ol' : 'ul';\n }\n // Styles for the numbered lists are always defined in the Word CSS stylesheet.\n // Unordered lists MAY contain a value for the Word CSS definition `mso-level-text` but sometimes\n // this tag is missing. And because of that, we cannot depend on that. We need to predict the list style value\n // based on the list style marker element.\n if (listStyleType === 'bullet') {\n const bulletedStyle = findBulletedListStyle(listLikeItem.element);\n if (bulletedStyle) {\n listStyleType = bulletedStyle;\n }\n } else {\n const listStartIndexMatch = listStartIndexRegex.exec(listStyleMatch[1]);\n if (listStartIndexMatch && listStartIndexMatch[1]) {\n startIndex = parseInt(listStartIndexMatch[1]);\n }\n }\n if (islegalStyleList) {\n type = 'ol';\n }\n }\n return {\n type,\n startIndex,\n style: mapListStyleDefinition(listStyleType),\n isLegalStyleList: islegalStyleList\n };\n}\n/**\n * Tries to extract the `list-style-type` value based on the marker element for bulleted list.\n */ function findBulletedListStyle(element) {\n // https://github.com/ckeditor/ckeditor5/issues/15964\n if (element.name == 'li' && element.parent.name == 'ul' && element.parent.hasAttribute('type')) {\n return element.parent.getAttribute('type');\n }\n const listMarkerElement = findListMarkerNode(element);\n if (!listMarkerElement) {\n return null;\n }\n const listMarker = listMarkerElement._data;\n if (listMarker === 'o') {\n return 'circle';\n } else if (listMarker === '·') {\n return 'disc';\n } else if (listMarker === '§') {\n return 'square';\n }\n return null;\n}\n/**\n * Tries to find a text node that represents the marker element (list-style-type).\n */ function findListMarkerNode(element) {\n // If the first child is a text node, it is the data for the element.\n // The list-style marker is not present here.\n if (element.getChild(0).is('$text')) {\n return null;\n }\n for (const childNode of element.getChildren()){\n // The list-style marker will be inside the `<span>` element. Let's ignore all non-span elements.\n // It may happen that the `<a>` element is added as the first child. Most probably, it's an anchor element.\n if (!childNode.is('element', 'span')) {\n continue;\n }\n const textNodeOrElement = childNode.getChild(0);\n if (!textNodeOrElement) {\n continue;\n }\n // If already found the marker element, use it.\n if (textNodeOrElement.is('$text')) {\n return textNodeOrElement;\n }\n return textNodeOrElement.getChild(0);\n }\n /* istanbul ignore next -- @preserve */ return null;\n}\n/**\n * Parses the `list-style-type` value extracted directly from the Word CSS stylesheet and returns proper CSS definition.\n */ function mapListStyleDefinition(value) {\n if (value.startsWith('arabic-leading-zero')) {\n return 'decimal-leading-zero';\n }\n switch(value){\n case 'alpha-upper':\n return 'upper-alpha';\n case 'alpha-lower':\n return 'lower-alpha';\n case 'roman-upper':\n return 'upper-roman';\n case 'roman-lower':\n return 'lower-roman';\n case 'circle':\n case 'disc':\n case 'square':\n return value;\n default:\n return null;\n }\n}\n/**\n * Creates a new list OL/UL element.\n */ function createNewEmptyList(listStyle, writer, hasMultiLevelListPlugin) {\n const list = writer.createElement(listStyle.type);\n // We do not support modifying the marker for a particular list item.\n // Set the value for the `list-style-type` property directly to the list container.\n if (listStyle.style) {\n writer.setStyle('list-style-type', listStyle.style, list);\n }\n if (listStyle.startIndex && listStyle.startIndex > 1) {\n writer.setAttribute('start', listStyle.startIndex, list);\n }\n if (listStyle.isLegalStyleList && hasMultiLevelListPlugin) {\n writer.addClass('legal-list', list);\n }\n return list;\n}\n/**\n * Extracts list item information from Word specific list-like element style:\n *\n * ```\n * `style=\"mso-list:l1 level1 lfo1\"`\n * ```\n *\n * where:\n *\n * ```\n * * `l1` is a list id (however it does not mean this is a continuous list - see #43),\n * * `level1` is a list item indentation level,\n * * `lfo1` is a list insertion order in a document.\n * ```\n *\n * @param element Element from which style data is extracted.\n */ function getListItemData(element) {\n const listStyle = element.getStyle('mso-list');\n if (listStyle === undefined) {\n return {};\n }\n const idMatch = listStyle.match(/(^|\\s{1,100})l(\\d+)/i);\n const orderMatch = listStyle.match(/\\s{0,100}lfo(\\d+)/i);\n const indentMatch = listStyle.match(/\\s{0,100}level(\\d+)/i);\n if (idMatch && orderMatch && indentMatch) {\n return {\n id: idMatch[2],\n order: orderMatch[1],\n indent: parseInt(indentMatch[1])\n };\n }\n return {\n indent: 1 // Handle empty mso-list style as a marked for default list item.\n };\n}\n/**\n * Removes span with a numbering/bullet from a given element.\n */ function removeBulletElement(element, writer) {\n // Matcher for finding `span` elements holding lists numbering/bullets.\n const bulletMatcher = new Matcher({\n name: 'span',\n styles: {\n 'mso-list': 'Ignore'\n }\n });\n const range = writer.createRangeIn(element);\n for (const value of range){\n if (value.type === 'elementStart' && bulletMatcher.match(value.item)) {\n writer.remove(value.item);\n }\n }\n}\n/**\n * Returns element left margin normalized to 'px' if possible.\n */ function getMarginLeftNormalized(element) {\n const value = element.getStyle('margin-left');\n if (value === undefined || value.endsWith('px')) {\n return value;\n }\n return convertCssLengthToPx(value);\n}\n\n/**\n * Replaces source attribute of all `<img>` elements representing regular\n * images (not the Word shapes) with inlined base64 image representation extracted from RTF or Blob data.\n *\n * @param documentFragment Document fragment on which transform images.\n * @param rtfData The RTF data from which images representation will be used.\n * @internal\n */ function replaceImagesSourceWithBase64(documentFragment, rtfData) {\n if (!documentFragment.childCount) {\n return;\n }\n const upcastWriter = new ViewUpcastWriter(documentFragment.document);\n const shapesIds = findAllShapesIds(documentFragment, upcastWriter);\n removeAllImgElementsRepresentingShapes(shapesIds, documentFragment, upcastWriter);\n insertMissingImgs(shapesIds, documentFragment, upcastWriter);\n removeAllShapeElements(documentFragment, upcastWriter);\n const images = findAllImageElementsWithLocalSource(documentFragment, upcastWriter);\n if (images.length) {\n replaceImagesFileSourceWithInlineRepresentation(images, extractImageDataFromRtf(rtfData), upcastWriter);\n }\n}\n/**\n * Converts given HEX string to base64 representation.\n *\n * @internal\n * @param hexString The HEX string to be converted.\n * @returns Base64 representation of a given HEX string.\n */ function _convertHexToBase64(hexString) {\n return btoa(hexString.match(/\\w{2}/g).map((char)=>{\n return String.fromCharCode(parseInt(char, 16));\n }).join(''));\n}\n/**\n * Finds all shapes (`<v:*>...</v:*>`) ids. Shapes can represent images (canvas)\n * or Word shapes (which does not have RTF or Blob representation).\n *\n * @param documentFragment Document fragment from which to extract shape ids.\n * @returns Array of shape ids.\n */ function findAllShapesIds(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const shapeElementsMatcher = new Matcher({\n name: /v:(.+)/\n });\n const shapesIds = [];\n for (const value of range){\n if (value.type != 'elementStart') {\n continue;\n }\n const el = value.item;\n const previousSibling = el.previousSibling;\n const prevSiblingName = previousSibling && previousSibling.is('element') ? previousSibling.name : null;\n // List of ids which should not be considered as shapes.\n // https://github.com/ckeditor/ckeditor5/pull/15847#issuecomment-1941543983\n const exceptionIds = [\n 'Chart'\n ];\n const isElementAShape = shapeElementsMatcher.match(el);\n const hasElementGfxdataAttribute = el.getAttribute('o:gfxdata');\n const isPreviousSiblingAShapeType = prevSiblingName === 'v:shapetype';\n const isElementIdInExceptionsArray = hasElementGfxdataAttribute && exceptionIds.some((item)=>el.getAttribute('id').includes(item));\n // If shape element has 'o:gfxdata' attribute and is not directly before\n // `<v:shapetype>` element it means that it represents a Word shape.\n if (isElementAShape && hasElementGfxdataAttribute && !isPreviousSiblingAShapeType && !isElementIdInExceptionsArray) {\n shapesIds.push(value.item.getAttribute('id'));\n }\n }\n return shapesIds;\n}\n/**\n * Removes all `<img>` elements which represents Word shapes and not regular images.\n *\n * @param shapesIds Shape ids which will be checked against `<img>` elements.\n * @param documentFragment Document fragment from which to remove `<img>` elements.\n */ function removeAllImgElementsRepresentingShapes(shapesIds, documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const imageElementsMatcher = new Matcher({\n name: 'img'\n });\n const imgs = [];\n for (const value of range){\n if (value.item.is('element') && imageElementsMatcher.match(value.item)) {\n const el = value.item;\n const shapes = el.getAttribute('v:shapes') ? el.getAttribute('v:shapes').split(' ') : [];\n if (shapes.length && shapes.every((shape)=>shapesIds.indexOf(shape) > -1)) {\n imgs.push(el);\n // Shapes may also have empty source while content is paste in some browsers (Safari).\n } else if (!el.getAttribute('src')) {\n imgs.push(el);\n }\n }\n }\n for (const img of imgs){\n writer.remove(img);\n }\n}\n/**\n * Removes all shape elements (`<v:*>...</v:*>`) so they do not pollute the output structure.\n *\n * @param documentFragment Document fragment from which to remove shape elements.\n */ function removeAllShapeElements(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const shapeElementsMatcher = new Matcher({\n name: /v:(.+)/\n });\n const shapes = [];\n for (const value of range){\n if (value.type == 'elementStart' && shapeElementsMatcher.match(value.item)) {\n shapes.push(value.item);\n }\n }\n for (const shape of shapes){\n writer.remove(shape);\n }\n}\n/**\n * Inserts `img` tags if there is none after a shape.\n */ function insertMissingImgs(shapeIds, documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const shapes = [];\n for (const value of range){\n if (value.type == 'elementStart' && value.item.is('element', 'v:shape')) {\n const id = value.item.getAttribute('id');\n if (shapeIds.includes(id)) {\n continue;\n }\n if (!containsMatchingImg(value.item.parent.getChildren(), id)) {\n shapes.push(value.item);\n }\n }\n }\n for (const shape of shapes){\n const attrs = {\n src: findSrc(shape)\n };\n if (shape.hasAttribute('alt')) {\n attrs.alt = shape.getAttribute('alt');\n }\n const img = writer.createElement('img', attrs);\n writer.insertChild(shape.index + 1, img, shape.parent);\n }\n function containsMatchingImg(nodes, id) {\n for (const node of nodes){\n /* istanbul ignore else -- @preserve */ if (node.is('element')) {\n if (node.name == 'img' && node.getAttribute('v:shapes') == id) {\n return true;\n }\n if (containsMatchingImg(node.getChildren(), id)) {\n return true;\n }\n }\n }\n return false;\n }\n function findSrc(shape) {\n for (const child of shape.getChildren()){\n /* istanbul ignore else -- @preserve */ if (child.is('element') && child.getAttribute('src')) {\n return child.getAttribute('src');\n }\n }\n }\n}\n/**\n * Finds all `<img>` elements in a given document fragment which have source pointing to local `file://` resource.\n * This function also tracks the index position of each image in the document, which is essential for\n * precise matching with hexadecimal representations in RTF data.\n *\n * @param documentFragment Document fragment in which to look for `<img>` elements.\n * @returns Array of found images along with their position index in the document.\n */ function findAllImageElementsWithLocalSource(documentFragment, writer) {\n const range = writer.createRangeIn(documentFragment);\n const imageElementsMatcher = new Matcher({\n name: 'img'\n });\n const imgs = [];\n let currentImageIndex = 0;\n for (const value of range){\n if (value.item.is('element') && imageElementsMatcher.match(value.item)) {\n if (value.item.getAttribute('src').startsWith('file://')) {\n imgs.push({\n element: value.item,\n imageIndex: currentImageIndex\n });\n }\n currentImageIndex++;\n }\n }\n return imgs;\n}\n/**\n * Extracts all images HEX representations from a given RTF data.\n *\n * @param rtfData The RTF data from which to extract images HEX representation.\n * @returns Array of found HEX representations. Each array item is an object containing:\n *\n * * hex Image representation in HEX format.\n * * type Type of image, `image/png` or `image/jpeg`.\n */ function extractImageDataFromRtf(rtfData) {\n if (!rtfData) {\n return [];\n }\n const regexPictureHeader = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/;\n const regexPicture = new RegExp('(?:(' + regexPictureHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g');\n const images = rtfData.match(regexPicture);\n const result = [];\n if (images) {\n for (const image of images){\n let imageType = false;\n if (image.includes('\\\\pngblip')) {\n imageType = 'image/png';\n } else if (image.includes('\\\\jpegblip')) {\n imageType = 'image/jpeg';\n }\n if (imageType) {\n result.push({\n hex: image.replace(regexPictureHeader, '').replace(/[^\\da-fA-F]/g, ''),\n type: imageType\n });\n }\n }\n }\n return result;\n}\n/**\n * Replaces `src` attribute value of all given images with the corresponding base64 image representation.\n * Uses the image index to precisely match with the correct hexadecimal representation from RTF data.\n *\n * @param imageElements Array of image elements along with their indices which will have their sources replaced.\n * @param imagesHexSources Array of images hex sources (usually the result of `extractImageDataFromRtf()` function).\n * Contains hexadecimal representations of ALL images in the document, not just those with `file://` URLs.\n * In XML documents, the same image might be defined both as base64 in HTML and as hexadecimal in RTF data.\n */ function replaceImagesFileSourceWithInlineRepresentation(imageElements, imagesHexSources, writer) {\n for(let i = 0; i < imageElements.length; i++){\n const { element, imageIndex } = imageElements[i];\n const rtfHexSource = imagesHexSources[imageIndex];\n if (rtfHexSource) {\n const newSrc = `data:${rtfHexSource.type};base64,${_convertHexToBase64(rtfHexSource.hex)}`;\n writer.setAttribute('src', newSrc, element);\n }\n }\n}\n\n/**\n * Cleanup MS attributes like styles, attributes and elements.\n *\n * @param documentFragment element `data.content` obtained from clipboard.\n * @internal\n */ function removeMSAttributes(documentFragment) {\n const elementsToUnwrap = [];\n const writer = new ViewUpcastWriter(documentFragment.document);\n for (const { item } of writer.createRangeIn(documentFragment)){\n if (!item.is('element')) {\n continue;\n }\n for (const className of item.getClassNames()){\n if (/\\bmso/gi.exec(className)) {\n writer.removeClass(className, item);\n }\n }\n for (const styleName of item.getStyleNames()){\n if (/\\bmso/gi.exec(styleName)) {\n writer.removeStyle(styleName, item);\n }\n }\n if (item.is('element', 'w:sdt') || item.is('element', 'w:sdtpr') && item.isEmpty || item.is('element', 'o:p') && item.isEmpty) {\n elementsToUnwrap.push(item);\n }\n }\n for (const item of elementsToUnwrap){\n const itemParent = item.parent;\n const childIndex = itemParent.getChildIndex(item);\n writer.insertChild(childIndex, item.getChildren(), itemParent);\n writer.remove(item);\n }\n}\n\n/**\n * Applies border none for table and cells without a border specified.\n * Normalizes style length units to px.\n * Handles left block table alignment.\n *\n * @internal\n */ function transformTables(documentFragment, writer, hasTablePropertiesPlugin = false, hasExtendedTableBlockAlignment = false) {\n for (const item of writer.createRangeIn(documentFragment).getItems()){\n if (!item.is('element', 'table') && !item.is('element', 'td') && !item.is('element', 'th')) {\n continue;\n }\n // In MS Word, left-aligned tables (default) have no align attribute on the `<table>` and are not wrapped in a `<div>`.\n // In such cases, we need to set `margin-left: 0` and `margin-right: auto` to indicate to the editor that\n // the table is block-aligned to the left.\n //\n // Center- and right-aligned tables in MS Word are wrapped in a `<div>` with the `align` attribute set to\n // `center` or `right`, respectively with no align attribute on the `<table>` itself.\n //\n // Additionally, the structure may change when pasting content from MS Word.\n // Some browsers (e.g., Safari) may insert extra elements around the table (e.g., a <span>),\n // so the surrounding `<div>` with the `align` attribute may end up being the table's grandparent.\n if (hasTablePropertiesPlugin && hasExtendedTableBlockAlignment && item.is('element', 'table')) {\n const directParent = item.parent?.is('element', 'div') ? item.parent : null;\n const grandParent = item.parent?.parent?.is('element', 'div') ? item.parent.parent : null;\n const divParent = directParent ?? grandParent;\n // Center block table alignment.\n if (divParent && divParent.getAttribute('align') === 'center' && !item.getAttribute('align')) {\n writer.setStyle('margin-left', 'auto', item);\n writer.setStyle('margin-right', 'auto', item);\n } else if (divParent && divParent.getAttribute('align') === 'right' && !item.getAttribute('align')) {\n writer.setStyle('margin-left', 'auto', item);\n writer.setStyle('margin-right', '0', item);\n } else if (!divParent && !item.getAttribute('align')) {\n writer.setStyle('margin-left', '0', item);\n writer.setStyle('margin-right', 'auto', item);\n }\n }\n const sides = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n ];\n // As this is a pasted table, we do not want default table styles to apply here\n // so we set border node for sides that does not have any border style.\n // It is enough to verify border style as border color and border width properties have default values in DOM.\n if (sides.every((side)=>!item.hasStyle(`border-${side}-style`))) {\n writer.setStyle('border-style', 'none', item);\n } else {\n for (const side of sides){\n if (!item.hasStyle(`border-${side}-style`)) {\n writer.setStyle(`border-${side}-style`, 'none', item);\n }\n }\n }\n // Translate style length units to px.\n const props = [\n 'width',\n 'height',\n ...sides.map((side)=>`border-${side}-width`),\n ...sides.map((side)=>`padding-${side}`)\n ];\n for (const prop of props){\n if (item.hasStyle(prop)) {\n writer.setStyle(prop, convertCssLengthToPx(item.getStyle(prop)), item);\n }\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removeinvalidtablewidth\n */ /**\n * Removes the `width:0px` style from table pasted from Google Sheets and `width=\"0\"` attribute from Word tables.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeInvalidTableWidth(documentFragment, writer) {\n for (const child of writer.createRangeIn(documentFragment).getItems()){\n if (child.is('element', 'table')) {\n // Remove invalid width style (Google Sheets: width:0px).\n if (child.getStyle('width') === '0px') {\n writer.removeStyle('width', child);\n }\n // Remove invalid width attribute (Word: width=\"0\").\n if (child.getAttribute('width') === '0') {\n writer.removeAttribute('width', child);\n }\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/replacemsfootnotes\n */ /**\n * Replaces MS Word specific footnotes references and definitions with proper elements.\n *\n * Things to know about MS Word footnotes:\n *\n * * Footnote references in Word are marked with `mso-footnote-id` style.\n * * Word does not support nested footnotes, so references within definitions are ignored.\n * * Word appends extra spaces after footnote references within definitions, which are trimmed.\n * * Footnote definitions list is marked with `mso-element: footnote-list` style it contain `mso-element: footnote` elements.\n * * Footnote definition might contain tables, lists and other elements, not only text. They are placed directly within `li` element,\n * without any wrapper (in opposition to text content of the definition, which is placed within `MsoFootnoteText` element).\n *\n * Example pseudo document showing MS Word footnote structure:\n *\n * ```html\n * <p>Text with footnote<a style='mso-footnote-id:ftn1'>[1]</a> reference.</p>\n *\n * <div style='mso-element:footnote-list'>\n * \t<div style='mso-element:footnote' id=ftn1>\n * \t\t<p class=MsoFootnoteText><a style='mso-footnote-id:ftn1'>[1]</a> Footnote content</p>\n * \t\t<table class=\"MsoTableGrid\">...</table>\n * \t</div>\n * </div>\n * ```\n *\n * Will be transformed into:\n *\n * ```html\n * <p>Text with footnote<sup class=\"footnote\"><a id=\"ref-footnote-ftn1\" href=\"#footnote-ftn1\">1</a></sup> reference.</p>\n *\n * <ol class=\"footnotes\">\n * \t<li class=\"footnote-definition\" id=\"footnote-ftn1\">\n * \t\t<a href=\"#ref-footnote-ftn1\" class=\"footnote-backlink\">^</a>\n * \t\t<div class=\"footnote-content\">\n * \t\t\t<p>Footnote content</p>\n * \t\t\t<table>...</table>\n * \t\t</div>\n * \t</li>\n * </ol>\n * ```\n *\n * @param documentFragment `data.content` obtained from clipboard.\n * @param writer The view writer instance.\n * @internal\n */ function replaceMSFootnotes(documentFragment, writer) {\n const msFootnotesRefs = new Map();\n const msFootnotesDefs = new Map();\n let msFootnotesDefinitionsList = null;\n // Phase 1: Collect all footnotes references and definitions. Find the footnotes definitions list element.\n for (const { item } of writer.createRangeIn(documentFragment)){\n if (!item.is('element')) {\n continue;\n }\n // If spot a footnotes definitions element, let's store it. It'll be replaced later.\n // There should be only one such element in the document.\n if (item.getStyle('mso-element') === 'footnote-list') {\n msFootnotesDefinitionsList = item;\n continue;\n }\n // If spot a footnote reference or definition, store it in the corresponding map.\n if (item.hasStyle('mso-footnote-id')) {\n const msFootnoteDef = item.findAncestor('element', (el)=>el.getStyle('mso-element') === 'footnote');\n if (msFootnoteDef) {\n // If it's a reference within a definition, ignore it and track only the definition.\n // MS Word do not support nested footnotes, so it's safe to assume that all references within\n // a definition point to the same definition.\n const msFootnoteDefId = msFootnoteDef.getAttribute('id');\n msFootnotesDefs.set(msFootnoteDefId, msFootnoteDef);\n } else {\n // If it's a reference outside of a definition, track it as a reference.\n const msFootnoteRefId = item.getStyle('mso-footnote-id');\n msFootnotesRefs.set(msFootnoteRefId, item);\n }\n continue;\n }\n }\n // If there are no footnotes references or definitions, or no definitions list, there's nothing to normalize.\n if (!msFootnotesRefs.size || !msFootnotesDefinitionsList) {\n return;\n }\n // Phase 2: Replace footnotes definitions list with proper element.\n const footnotesDefinitionsList = createFootnotesListViewElement(writer);\n writer.replace(msFootnotesDefinitionsList, footnotesDefinitionsList);\n // Phase 3: Replace all footnotes references and add matching definitions to the definitions list.\n for (const [footnoteId, msFootnoteRef] of msFootnotesRefs){\n const msFootnoteDef = msFootnotesDefs.get(footnoteId);\n if (!msFootnoteDef) {\n continue;\n }\n // Replace footnote reference.\n writer.replace(msFootnoteRef, createFootnoteRefViewElement(writer, footnoteId));\n // Append found matching definition to the definitions list.\n // Order doesn't matter here, as it'll be fixed in the post-fixer.\n const defElements = createFootnoteDefViewElement(writer, footnoteId);\n removeMSReferences(writer, msFootnoteDef);\n // Insert content within the `MsoFootnoteText` element. It's usually a definition text content.\n for (const child of msFootnoteDef.getChildren()){\n let clonedChild = child;\n if (child.is('element')) {\n clonedChild = writer.clone(child, true);\n }\n writer.appendChild(clonedChild, defElements.content);\n }\n writer.appendChild(defElements.listItem, footnotesDefinitionsList);\n }\n}\n/**\n * Removes all MS Office specific references from the given element.\n *\n * It also removes leading space from text nodes following the references, as MS Word adds\n * them to separate the reference from the rest of the text.\n *\n * @param writer The view writer.\n * @param element The element to trim.\n * @returns The trimmed element.\n */ function removeMSReferences(writer, element) {\n const elementsToRemove = [];\n const textNodesToTrim = [];\n for (const { item } of writer.createRangeIn(element)){\n if (item.is('element') && item.getStyle('mso-footnote-id')) {\n elementsToRemove.unshift(item);\n // MS Word used to add spaces after footnote references within definitions. Let's check if there's a space after\n // the footnote reference and mark it for trimming.\n const { nextSibling } = item;\n if (nextSibling?.is('$text') && nextSibling.data.startsWith(' ')) {\n textNodesToTrim.unshift(nextSibling);\n }\n }\n }\n for (const element of elementsToRemove){\n writer.remove(element);\n }\n // Remove only the leading space from text nodes following reference within definition, preserve the rest of the text.\n for (const textNode of textNodesToTrim){\n const trimmedData = textNode.data.substring(1);\n if (trimmedData.length > 0) {\n // Create a new text node and replace the old one.\n const parent = textNode.parent;\n const index = parent.getChildIndex(textNode);\n const newTextNode = writer.createText(trimmedData);\n writer.remove(textNode);\n writer.insertChild(index, newTextNode, parent);\n } else {\n // If the text node contained only a space, remove it entirely.\n writer.remove(textNode);\n }\n }\n return element;\n}\n/**\n * Creates a footnotes list view element.\n *\n * @param writer The view writer instance.\n * @returns The footnotes list view element.\n */ function createFootnotesListViewElement(writer) {\n return writer.createElement('ol', {\n class: 'footnotes'\n });\n}\n/**\n * Creates a footnote reference view element.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns The footnote reference view element.\n */ function createFootnoteRefViewElement(writer, footnoteId) {\n const sup = writer.createElement('sup', {\n class: 'footnote'\n });\n const link = writer.createElement('a', {\n id: `ref-${footnoteId}`,\n href: `#${footnoteId}`\n });\n writer.appendChild(link, sup);\n return sup;\n}\n/**\n * Creates a footnote definition view element with a backlink and a content container.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns An object containing the list item element, backlink and content container.\n */ function createFootnoteDefViewElement(writer, footnoteId) {\n const listItem = writer.createElement('li', {\n id: footnoteId,\n class: 'footnote-definition'\n });\n const backLink = writer.createElement('a', {\n href: `#ref-${footnoteId}`,\n class: 'footnote-backlink'\n });\n const content = writer.createElement('div', {\n class: 'footnote-content'\n });\n writer.appendChild(writer.createText('^'), backLink);\n writer.appendChild(backLink, listItem);\n writer.appendChild(content, listItem);\n return {\n listItem,\n content\n };\n}\n\nconst msWordMatch1 = /<meta\\s*name=\"?generator\"?\\s*content=\"?microsoft\\s*word\\s*\\d+\"?\\/?>/i;\nconst msWordMatch2 = /xmlns:o=\"urn:schemas-microsoft-com/i;\n/**\n * Normalizer for the content pasted from Microsoft Word.\n */ class PasteFromOfficeMSWordNormalizer {\n document;\n hasMultiLevelListPlugin;\n hasTablePropertiesPlugin;\n hasExtendedTableBlockAlignment;\n /**\n\t * Creates a new `PasteFromOfficeMSWordNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */ constructor(document, hasMultiLevelListPlugin = false, hasTablePropertiesPlugin = false, hasExtendedTableBlockAlignment = false){\n this.document = document;\n this.hasMultiLevelListPlugin = hasMultiLevelListPlugin;\n this.hasTablePropertiesPlugin = hasTablePropertiesPlugin;\n this.hasExtendedTableBlockAlignment = hasExtendedTableBlockAlignment;\n }\n /**\n\t * @inheritDoc\n\t */ isActive(htmlString) {\n return msWordMatch1.test(htmlString) || msWordMatch2.test(htmlString);\n }\n /**\n\t * @inheritDoc\n\t */ execute(data) {\n const writer = new ViewUpcastWriter(this.document);\n const { body: documentFragment, stylesString } = data._parsedData;\n transformBookmarks(documentFragment, writer);\n transformListItemLikeElementsIntoLists(documentFragment, stylesString, this.hasMultiLevelListPlugin);\n replaceImagesSourceWithBase64(documentFragment, data.dataTransfer.getData('text/rtf'));\n transformTables(documentFragment, writer, this.hasTablePropertiesPlugin, this.hasExtendedTableBlockAlignment);\n removeInvalidTableWidth(documentFragment, writer);\n replaceMSFootnotes(documentFragment, writer);\n removeMSAttributes(documentFragment);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removeboldwrapper\n */ /**\n * Removes the `<b>` tag wrapper added by Google Docs to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeBoldWrapper(documentFragment, writer) {\n for (const child of documentFragment.getChildren()){\n if (child.is('element', 'b') && child.getStyle('font-weight') === 'normal') {\n const childIndex = documentFragment.getChildIndex(child);\n writer.remove(child);\n writer.insertChild(childIndex, child.getChildren(), documentFragment);\n }\n }\n}\n\n/**\n * Transforms `<br>` elements that are siblings to some block element into a paragraphs.\n *\n * @param documentFragment The view structure to be transformed.\n * @internal\n */ function transformBlockBrsToParagraphs(documentFragment, writer) {\n const viewDocument = new ViewDocument(writer.document.stylesProcessor);\n const domConverter = new ViewDomConverter(viewDocument, {\n renderingMode: 'data'\n });\n const blockElements = domConverter.blockElements;\n const inlineObjectElements = domConverter.inlineObjectElements;\n const elementsToReplace = [];\n for (const value of writer.createRangeIn(documentFragment)){\n const element = value.item;\n if (element.is('element', 'br')) {\n const nextSibling = findSibling(element, 'forward', writer, {\n blockElements,\n inlineObjectElements\n });\n const previousSibling = findSibling(element, 'backward', writer, {\n blockElements,\n inlineObjectElements\n });\n const nextSiblingIsBlock = isBlockViewElement(nextSibling, blockElements);\n const previousSiblingIsBlock = isBlockViewElement(previousSibling, blockElements);\n // If the <br> is surrounded by blocks then convert it to a paragraph:\n // * <p>foo</p>[<br>]<p>bar</p> -> <p>foo</p>[<p></p>]<p>bar</p>\n // * <p>foo</p>[<br>] -> <p>foo</p>[<p></p>]\n // * [<br>]<p>foo</p> -> [<p></p>]<p>foo</p>\n if (previousSiblingIsBlock || nextSiblingIsBlock) {\n elementsToReplace.push(element);\n }\n }\n }\n for (const element of elementsToReplace){\n if (element.hasClass('Apple-interchange-newline')) {\n writer.remove(element);\n } else {\n writer.replace(element, writer.createElement('p'));\n }\n }\n}\n/**\n * Returns sibling node, threats inline elements as transparent (but should stop on an inline objects).\n */ function findSibling(viewElement, direction, writer, { blockElements, inlineObjectElements }) {\n let position = writer.createPositionAt(viewElement, direction == 'forward' ? 'after' : 'before');\n // Find first position that is just before a first:\n // * text node,\n // * block element,\n // * inline object element.\n // It's ignoring any inline (non-object) elements like span, strong, etc.\n position = position.getLastMatchingPosition(({ item })=>item.is('element') && !blockElements.includes(item.name) && !inlineObjectElements.includes(item.name), {\n direction\n });\n return direction == 'forward' ? position.nodeAfter : position.nodeBefore;\n}\n/**\n * Returns true for view elements that are listed as block view elements.\n */ function isBlockViewElement(node, blockElements) {\n return !!node && node.is('element') && blockElements.includes(node.name);\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/replacetabswithinprewithspaces\n */ /**\n * Replaces tab characters with spaces in text nodes that are inside elements styled with `white-space: pre-wrap`.\n *\n * This is a workaround for incorrect detection of pre-like formatting in the DOM converter for pasted Google Docs documents.\n * When an element uses `white-space: pre-wrap`, the editor reduces tab characters to a single space, causing\n * inconsistent spacing in pasted content. This function replaces tabs with spaces to ensure visual consistency.\n * This is intended as a temporary solution.\n *\n * See: https://github.com/ckeditor/ckeditor5/issues/18995\n *\n * @param documentFragment The `data.content` element obtained from the clipboard.\n * @param writer The upcast writer used to manipulate the view structure.\n * @param tabWidth The number of spaces to replace each tab with. Defaults to 8.\n * @internal\n */ function replaceTabsWithinPreWithSpaces(documentFragment, writer, tabWidth) {\n // Collect all text nodes with tabs that are inside pre-wrap elements.\n const textNodesToReplace = new Set();\n for (const child of writer.createRangeIn(documentFragment).getItems()){\n if (!child.is('view:$textProxy') || !child.data.includes('\\t')) {\n continue;\n }\n // Check if any parent has `white-space: pre-wrap`.\n if (hasPreWrapParent(child.parent)) {\n textNodesToReplace.add(child.textNode);\n }\n }\n // Replace tabs in each collected text node.\n for (const textNode of textNodesToReplace){\n replaceTabsInTextNode(textNode, writer, tabWidth);\n }\n}\n/**\n * Checks if element or any of its parents has `white-space: pre-wrap` style.\n */ function hasPreWrapParent(element) {\n let parent = element;\n while(parent){\n if (parent.is('element')) {\n const whiteSpace = parent.getStyle?.('white-space');\n if (whiteSpace === 'pre-wrap') {\n return true;\n }\n }\n parent = parent.parent;\n }\n return false;\n}\n/**\n * Replaces all tabs with spaces in the given text node.\n */ function replaceTabsInTextNode(textNode, writer, tabWidth) {\n const { parent, data } = textNode;\n const replacedData = data.replaceAll('\\t', ' '.repeat(tabWidth));\n const index = parent.getChildIndex(textNode);\n // Remove old node and insert new one with replaced tabs.\n writer.remove(textNode);\n writer.insertChild(index, writer.createText(replacedData), parent);\n}\n\nconst googleDocsMatch = /id=(\"|')docs-internal-guid-[-0-9a-f]+(\"|')/i;\n/**\n * Normalizer for the content pasted from Google Docs.\n *\n * @internal\n */ class GoogleDocsNormalizer {\n document;\n /**\n\t * Creates a new `GoogleDocsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */ constructor(document){\n this.document = document;\n }\n /**\n\t * @inheritDoc\n\t */ isActive(htmlString) {\n return googleDocsMatch.test(htmlString);\n }\n /**\n\t * @inheritDoc\n\t */ execute(data) {\n const writer = new ViewUpcastWriter(this.document);\n const { body: documentFragment } = data._parsedData;\n removeBoldWrapper(documentFragment, writer);\n unwrapParagraphInListItem(documentFragment, writer);\n transformBlockBrsToParagraphs(documentFragment, writer);\n replaceTabsWithinPreWithSpaces(documentFragment, writer, 8);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removexmlns\n */ /**\n * Removes the `xmlns` attribute from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeXmlns(documentFragment, writer) {\n for (const child of documentFragment.getChildren()){\n if (child.is('element', 'table') && child.hasAttribute('xmlns')) {\n writer.removeAttribute('xmlns', child);\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removegooglesheetstag\n */ /**\n * Removes the `<google-sheets-html-origin>` tag wrapper added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeGoogleSheetsTag(documentFragment, writer) {\n for (const child of documentFragment.getChildren()){\n if (child.is('element', 'google-sheets-html-origin')) {\n const childIndex = documentFragment.getChildIndex(child);\n writer.remove(child);\n writer.insertChild(childIndex, child.getChildren(), documentFragment);\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/removestyleblock\n */ /**\n * Removes `<style>` block added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */ function removeStyleBlock(documentFragment, writer) {\n for (const child of Array.from(documentFragment.getChildren())){\n if (child.is('element', 'style')) {\n writer.remove(child);\n }\n }\n}\n\nconst googleSheetsMatch = /<google-sheets-html-origin/i;\n/**\n * Normalizer for the content pasted from Google Sheets.\n *\n * @internal\n */ class GoogleSheetsNormalizer {\n document;\n /**\n\t * Creates a new `GoogleSheetsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */ constructor(document){\n this.document = document;\n }\n /**\n\t * @inheritDoc\n\t */ isActive(htmlString) {\n return googleSheetsMatch.test(htmlString);\n }\n /**\n\t * @inheritDoc\n\t */ execute(data) {\n const writer = new ViewUpcastWriter(this.document);\n const { body: documentFragment } = data._parsedData;\n removeGoogleSheetsTag(documentFragment, writer);\n removeXmlns(documentFragment, writer);\n removeInvalidTableWidth(documentFragment, writer);\n removeStyleBlock(documentFragment, writer);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 * @module paste-from-office/filters/space\n */ /**\n * Replaces last space preceding elements closing tag with `&nbsp;`. Such operation prevents spaces from being removed\n * during further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n * This method also takes into account Word specific `<o:p></o:p>` empty tags.\n * Additionally multiline sequences of spaces and new lines between tags are removed (see #39 and #40).\n *\n * @param htmlString HTML string in which spacing should be normalized.\n * @returns Input HTML with spaces normalized.\n * @internal\n */ function normalizeSpacing(htmlString) {\n // Run normalizeSafariSpaceSpans() two times to cover nested spans.\n return normalizeSafariSpaceSpans(normalizeSafariSpaceSpans(htmlString))// Remove all \\r\\n from \"spacerun spans\" so the last replace line doesn't strip all whitespaces.\n .replace(/(<span\\s+style=['\"]mso-spacerun:yes['\"]>[^\\S\\r\\n]*?)[\\r\\n]+([^\\S\\r\\n]*<\\/span>)/g, '$1$2').replace(/<span\\s+style=['\"]mso-spacerun:yes['\"]><\\/span>/g, '').replace(/(<span\\s+style=['\"]letter-spacing:[^'\"]+?['\"]>)[\\r\\n]+(<\\/span>)/g, '$1 $2').replace(/ <\\//g, '\\u00A0</').replace(/ <o:p><\\/o:p>/g, '\\u00A0<o:p></o:p>')// Remove <o:p> block filler from empty paragraph. Safari uses \\u00A0 instead of &nbsp;.\n .replace(/<o:p>(&nbsp;|\\u00A0)<\\/o:p>/g, '')// Remove all whitespaces when they contain any \\r or \\n.\n .replace(/>([^\\S\\r\\n]*[\\r\\n]\\s*)</g, '><');\n}\n/**\n * Normalizes spacing in special Word `spacerun spans` (`<span style='mso-spacerun:yes'>\\s+</span>`) by replacing\n * all spaces with `&nbsp; ` pairs. This prevents spaces from being removed during further DOM/View processing\n * (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n *\n * @param htmlDocument Native `Document` object in which spacing should be normalized.\n * @internal\n */ function normalizeSpacerunSpans(htmlDocument) {\n htmlDocument.querySelectorAll('span[style*=spacerun]').forEach((el)=>{\n const htmlElement = el;\n const innerTextLength = htmlElement.innerText.length || 0;\n htmlElement.innerText = Array(innerTextLength + 1).join('\\u00A0 ').substr(0, innerTextLength);\n });\n}\n/**\n * Normalizes specific spacing generated by Safari when content pasted from Word (`<span class=\"Apple-converted-space\"> </span>`)\n * by replacing all spaces sequences longer than 1 space with `&nbsp; ` pairs. This prevents spaces from being removed during\n * further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDataFromDomText}).\n *\n * This function is similar to {@link module:clipboard/utils/normalizeclipboarddata normalizeClipboardData util} but uses\n * regular spaces / &nbsp; sequence for replacement.\n *\n * @param htmlString HTML string in which spacing should be normalized\n * @returns Input HTML with spaces normalized.\n * @internal\n */ function normalizeSafariSpaceSpans(htmlString) {\n return htmlString.replace(/<span(?: class=\"Apple-converted-space\"|)>(\\s+)<\\/span>/g, (fullMatch, spaces)=>{\n return spaces.length === 1 ? ' ' : Array(spaces.length + 1).join('\\u00A0 ').substr(0, spaces.length);\n });\n}\n\n/**\n * Parses the provided HTML extracting contents of `<body>` and `<style>` tags.\n *\n * @param htmlString HTML string to be parsed.\n */ function parsePasteOfficeHtml(htmlString, stylesProcessor) {\n const domParser = new DOMParser();\n // Remove Word specific \"if comments\" so content inside is not omitted by the parser.\n htmlString = htmlString.replace(/<!--\\[if gte vml 1]>/g, '');\n // Clean the <head> section of MS Windows specific tags. See https://github.com/ckeditor/ckeditor5/issues/15333.\n // The regular expression matches the <o:SmartTagType> tag with optional attributes (with or without values).\n htmlString = htmlString.replace(/<o:SmartTagType(?:\\s+[^\\s>=]+(?:=\"[^\"]*\")?)*\\s*\\/?>/gi, '');\n const normalizedHtml = normalizeSpacing(cleanContentAfterBody(htmlString));\n // Parse htmlString as native Document object.\n const htmlDocument = domParser.parseFromString(normalizedHtml, 'text/html');\n normalizeSpacerunSpans(htmlDocument);\n // Get `innerHTML` first as transforming to View modifies the source document.\n const bodyString = htmlDocument.body.innerHTML;\n // Transform document.body to View.\n const bodyView = documentToView(htmlDocument, stylesProcessor);\n // Extract stylesheets.\n const stylesObject = extractStyles(htmlDocument);\n return {\n body: bodyView,\n bodyString,\n styles: stylesObject.styles,\n stylesString: stylesObject.stylesString\n };\n}\n/**\n * Transforms native `Document` object into {@link module:engine/view/documentfragment~ViewDocumentFragment}. Comments are skipped.\n *\n * @param htmlDocument Native `Document` object to be transformed.\n */ function documentToView(htmlDocument, stylesProcessor) {\n const viewDocument = new ViewDocument(stylesProcessor);\n const domConverter = new ViewDomConverter(viewDocument, {\n renderingMode: 'data'\n });\n const fragment = htmlDocument.createDocumentFragment();\n const nodes = htmlDocument.body.childNodes;\n while(nodes.length > 0){\n fragment.appendChild(nodes[0]);\n }\n return domConverter.domToView(fragment, {\n skipComments: true\n });\n}\n/**\n * Extracts both `CSSStyleSheet` and string representation from all `style` elements available in a provided `htmlDocument`.\n *\n * @param htmlDocument Native `Document` object from which styles will be extracted.\n */ function extractStyles(htmlDocument) {\n const styles = [];\n const stylesString = [];\n const styleTags = Array.from(htmlDocument.getElementsByTagName('style'));\n for (const style of styleTags){\n if (style.sheet && style.sheet.cssRules && style.sheet.cssRules.length) {\n styles.push(style.sheet);\n stylesString.push(style.innerHTML);\n }\n }\n return {\n styles,\n stylesString: stylesString.join(' ')\n };\n}\n/**\n * Removes leftover content from between closing </body> and closing </html> tag:\n *\n * ```html\n * <html><body><p>Foo Bar</p></body><span>Fo</span></html> -> <html><body><p>Foo Bar</p></body></html>\n * ```\n *\n * This function is used as specific browsers (Edge) add some random content after `body` tag when pasting from Word.\n * @param htmlString The HTML string to be cleaned.\n * @returns The HTML string with leftover content removed.\n */ function cleanContentAfterBody(htmlString) {\n const bodyCloseTag = '</body>';\n const htmlCloseTag = '</html>';\n const bodyCloseIndex = htmlString.indexOf(bodyCloseTag);\n if (bodyCloseIndex < 0) {\n return htmlString;\n }\n const htmlCloseIndex = htmlString.indexOf(htmlCloseTag, bodyCloseIndex + bodyCloseTag.length);\n return htmlString.substring(0, bodyCloseIndex + bodyCloseTag.length) + (htmlCloseIndex >= 0 ? htmlString.substring(htmlCloseIndex) : '');\n}\n\n/**\n * The Paste from Office plugin.\n *\n * This plugin handles content pasted from Office apps and transforms it (if necessary)\n * to a valid structure which can then be understood by the editor features.\n *\n * Transformation is made by a set of predefined {@link module:paste-from-office/normalizer~PasteFromOfficeNormalizer normalizers}.\n * This plugin includes following normalizers:\n * * {@link module:paste-from-office/normalizers/mswordnormalizer~PasteFromOfficeMSWordNormalizer Microsoft Word normalizer}\n * * {@link module:paste-from-office/normalizers/googledocsnormalizer~GoogleDocsNormalizer Google Docs normalizer}\n *\n * For more information about this feature check the {@glink api/paste-from-office package page}.\n */ class PasteFromOffice extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'PasteFromOffice';\n }\n /**\n\t * @inheritDoc\n\t * @internal\n\t */ static get licenseFeatureCode() {\n return 'PFO';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get isPremiumPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ClipboardPipeline\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const clipboardPipeline = editor.plugins.get('ClipboardPipeline');\n const viewDocument = editor.editing.view.document;\n const normalizers = [];\n const hasMultiLevelListPlugin = this.editor.plugins.has('MultiLevelList');\n const hasTablePropertiesPlugin = this.editor.plugins.has('TableProperties');\n const hasExtendedTableBlockAlignment = !!this.editor.config.get('experimentalFlags.useExtendedTableBlockAlignment');\n normalizers.push(new PasteFromOfficeMSWordNormalizer(viewDocument, hasMultiLevelListPlugin, hasTablePropertiesPlugin, hasExtendedTableBlockAlignment));\n normalizers.push(new GoogleDocsNormalizer(viewDocument));\n normalizers.push(new GoogleSheetsNormalizer(viewDocument));\n clipboardPipeline.on('inputTransformation', (evt, data)=>{\n if (data._isTransformedWithPasteFromOffice) {\n return;\n }\n const codeBlock = editor.model.document.selection.getFirstPosition().parent;\n if (codeBlock.is('element', 'codeBlock')) {\n return;\n }\n const htmlString = data.dataTransfer.getData('text/html');\n const activeNormalizer = normalizers.find((normalizer)=>normalizer.isActive(htmlString));\n if (activeNormalizer) {\n if (!data._parsedData) {\n data._parsedData = parsePasteOfficeHtml(htmlString, viewDocument.stylesProcessor);\n }\n activeNormalizer.execute(data);\n data._isTransformedWithPasteFromOffice = true;\n }\n }, {\n priority: 'high'\n });\n }\n}\n\nexport { PasteFromOffice, GoogleDocsNormalizer as PasteFromOfficeGoogleDocsNormalizer, GoogleSheetsNormalizer as PasteFromOfficeGoogleSheetsNormalizer, PasteFromOfficeMSWordNormalizer, _convertHexToBase64, convertCssLengthToPx as _convertPasteOfficeCssLengthToPx, isPx as _isPasteOfficePxValue, normalizeSpacerunSpans as _normalizePasteOfficeSpaceRunSpans, normalizeSpacing as _normalizePasteOfficeSpacing, removeGoogleSheetsTag as _removePasteGoogleOfficeSheetsTag, removeMSAttributes as _removePasteMSOfficeAttributes, removeBoldWrapper as _removePasteOfficeBoldWrapper, removeInvalidTableWidth as _removePasteOfficeInvalidTableWidths, removeStyleBlock as _removePasteOfficeStyleBlock, removeXmlns as _removePasteOfficeXmlnsAttributes, replaceImagesSourceWithBase64 as _replacePasteOfficeImagesSourceWithBase64, toPx as _toPasteOfficePxValue, transformBlockBrsToParagraphs as _transformPasteOfficeBlockBrsToParagraphs, transformBookmarks as _transformPasteOfficeBookmarks, transformListItemLikeElementsIntoLists as _transformPasteOfficeListItemLikeElementsIntoLists, transformTables as _transformPasteOfficeTables, unwrapParagraphInListItem as _unwrapPasteOfficeParagraphInListItem, parsePasteOfficeHtml };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/bookmark\n */\n\nimport {\n\ttype ViewUpcastWriter,\n\ttype ViewDocumentFragment\n} from 'ckeditor5/src/engine.js';\n\n/**\n * Transforms `<a>` elements which are bookmarks by moving their children after the element.\n *\n * @internal\n */\nexport function transformBookmarks(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tconst elementsToChange = [];\n\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif (\n\t\t\telement.is( 'element', 'a' ) &&\n\t\t\t!element.hasAttribute( 'href' ) &&\n\t\t\t( element.hasAttribute( 'id' ) || element.hasAttribute( 'name' ) ) )\n\t\t{\n\t\t\telementsToChange.push( element );\n\t\t}\n\t}\n\n\tfor ( const element of elementsToChange ) {\n\t\tconst index = element.parent!.getChildIndex( element ) + 1;\n\t\tconst children = element.getChildren();\n\n\t\twriter.insertChild( index, children, element.parent! );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/utils\n */\n\n/**\n * Normalizes CSS length value to 'px'.\n *\n * @internal\n */\nexport function convertCssLengthToPx( value: string ): string {\n\tconst numericValue = parseFloat( value );\n\n\tif ( value.endsWith( 'pt' ) ) {\n\t\t// 1pt = 1in / 72\n\t\treturn toPx( numericValue * 96 / 72 );\n\t}\n\telse if ( value.endsWith( 'pc' ) ) {\n\t\t// 1pc = 12pt = 1in / 6.\n\t\treturn toPx( numericValue * 12 * 96 / 72 );\n\t}\n\telse if ( value.endsWith( 'in' ) ) {\n\t\t// 1in = 2.54cm = 96px\n\t\treturn toPx( numericValue * 96 );\n\t}\n\telse if ( value.endsWith( 'cm' ) ) {\n\t\t// 1cm = 96px / 2.54\n\t\treturn toPx( numericValue * 96 / 2.54 );\n\t}\n\telse if ( value.endsWith( 'mm' ) ) {\n\t\t// 1mm = 1cm / 10\n\t\treturn toPx( numericValue / 10 * 96 / 2.54 );\n\t}\n\n\treturn value;\n}\n\n/**\n * Returns true for value with 'px' unit.\n *\n * @internal\n */\nexport function isPx( value?: string ): value is string {\n\treturn value !== undefined && value.endsWith( 'px' );\n}\n\n/**\n * Returns a rounded 'px' value.\n *\n * @internal\n */\nexport function toPx( value: number ): string {\n\treturn Math.round( value ) + 'px';\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/list\n */\n\nimport {\n\tMatcher,\n\tViewUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode,\n\ttype ViewText\n} from 'ckeditor5/src/engine.js';\n\nimport {\n\tconvertCssLengthToPx,\n\tisPx,\n\ttoPx\n} from './utils.js';\n\n/**\n * Transforms Word specific list-like elements to the semantic HTML lists.\n *\n * Lists in Word are represented by block elements with special attributes like:\n *\n * ```xml\n * <p class=MsoListParagraphCxSpFirst style='mso-list:l1 level1 lfo1'>...</p> // Paragraph based list.\n * <h1 style='mso-list:l0 level1 lfo1'>...</h1> // Heading 1 based list.\n * ```\n *\n * @param documentFragment The view structure to be transformed.\n * @param stylesString Styles from which list-like elements styling will be extracted.\n * @internal\n */\nexport function transformListItemLikeElementsIntoLists(\n\tdocumentFragment: ViewDocumentFragment,\n\tstylesString: string,\n\thasMultiLevelListPlugin: boolean\n): void {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst writer = new ViewUpcastWriter( documentFragment.document );\n\tconst itemLikeElements = findAllItemLikeElements( documentFragment, writer );\n\n\tif ( !itemLikeElements.length ) {\n\t\treturn;\n\t}\n\n\tconst encounteredLists: Record<string, number> = {};\n\n\tconst stack: Array<ListLikeElement & {\n\t\tlistElement: ViewElement;\n\t\tlistItemElements: Array<ViewElement>;\n\t}> = [];\n\n\tfor ( const itemLikeElement of itemLikeElements ) {\n\t\tif ( itemLikeElement.indent !== undefined ) {\n\t\t\tif ( !isListContinuation( itemLikeElement ) ) {\n\t\t\t\tstack.length = 0;\n\t\t\t}\n\n\t\t\t// Combined list ID for addressing encounter lists counters.\n\t\t\tconst originalListId = `${ itemLikeElement.id }:${ itemLikeElement.indent }`;\n\n\t\t\t// Normalized list item indentation.\n\t\t\tconst indent = Math.min( itemLikeElement.indent - 1, stack.length );\n\n\t\t\t// Trimming of the list stack on list ID change.\n\t\t\tif ( indent < stack.length && stack[ indent ].id !== itemLikeElement.id ) {\n\t\t\t\tstack.length = indent;\n\t\t\t}\n\n\t\t\t// Trimming of the list stack on lower indent list encountered.\n\t\t\tif ( indent < stack.length - 1 ) {\n\t\t\t\tstack.length = indent + 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst listStyle = detectListStyle( itemLikeElement, stylesString );\n\n\t\t\t\t// Create a new OL/UL if required (greater indent or different list type).\n\t\t\t\tif ( indent > stack.length - 1 || stack[ indent ].listElement.name != listStyle.type ) {\n\t\t\t\t\t// Check if there is some start index to set from a previous list.\n\t\t\t\t\tif (\n\t\t\t\t\t\tindent == 0 &&\n\t\t\t\t\t\tlistStyle.type == 'ol' &&\n\t\t\t\t\t\titemLikeElement.id !== undefined &&\n\t\t\t\t\t\tencounteredLists[ originalListId ]\n\t\t\t\t\t) {\n\t\t\t\t\t\tlistStyle.startIndex = encounteredLists[ originalListId ];\n\t\t\t\t\t}\n\n\t\t\t\t\tconst listElement = createNewEmptyList( listStyle, writer, hasMultiLevelListPlugin );\n\n\t\t\t\t\t// Apply list padding only if we have margins for the item and the parent item.\n\t\t\t\t\tif (\n\t\t\t\t\t\tisPx( itemLikeElement.marginLeft ) &&\n\t\t\t\t\t\t( indent == 0 || isPx( stack[ indent - 1 ].marginLeft ) )\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet marginLeft = itemLikeElement.marginLeft;\n\n\t\t\t\t\t\tif ( indent > 0 ) {\n\t\t\t\t\t\t\t// Convert the padding from absolute to relative.\n\t\t\t\t\t\t\tmarginLeft = toPx( parseFloat( marginLeft ) - parseFloat( stack[ indent - 1 ].marginLeft! ) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twriter.setStyle( 'padding-left', marginLeft, listElement );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Insert the new OL/UL.\n\t\t\t\t\tif ( stack.length == 0 ) {\n\t\t\t\t\t\tconst parent = itemLikeElement.element.parent!;\n\t\t\t\t\t\tconst index = parent.getChildIndex( itemLikeElement.element ) + 1;\n\n\t\t\t\t\t\twriter.insertChild( index, listElement, parent );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst parentListItems = stack[ indent - 1 ].listItemElements;\n\n\t\t\t\t\t\twriter.appendChild( listElement, parentListItems[ parentListItems.length - 1 ] );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update the list stack for other items to reference.\n\t\t\t\t\tstack[ indent ] = {\n\t\t\t\t\t\t...itemLikeElement,\n\t\t\t\t\t\tlistElement,\n\t\t\t\t\t\tlistItemElements: []\n\t\t\t\t\t};\n\n\t\t\t\t\t// Prepare list counter for start index.\n\t\t\t\t\tif ( indent == 0 && itemLikeElement.id !== undefined ) {\n\t\t\t\t\t\tencounteredLists[ originalListId ] = listStyle.startIndex || 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Use LI if it is already it or create a new LI element.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/15964\n\t\t\tconst listItem = itemLikeElement.element.name == 'li' ? itemLikeElement.element : writer.createElement( 'li' );\n\n\t\t\t// Append the LI to OL/UL.\n\t\t\twriter.appendChild( listItem, stack[ indent ].listElement );\n\t\t\tstack[ indent ].listItemElements.push( listItem );\n\n\t\t\t// Increment list counter.\n\t\t\tif ( indent == 0 && itemLikeElement.id !== undefined ) {\n\t\t\t\tencounteredLists[ originalListId ]++;\n\t\t\t}\n\n\t\t\t// Append list block to LI.\n\t\t\tif ( itemLikeElement.element != listItem ) {\n\t\t\t\twriter.appendChild( itemLikeElement.element, listItem );\n\t\t\t}\n\n\t\t\t// Clean list block.\n\t\t\tremoveBulletElement( itemLikeElement.element, writer );\n\t\t\twriter.removeStyle( 'text-indent', itemLikeElement.element ); // #12361\n\t\t\twriter.removeStyle( 'margin-left', itemLikeElement.element );\n\t\t}\n\t\telse {\n\t\t\t// Other blocks in a list item.\n\t\t\tconst stackItem = stack.find( stackItem => stackItem.marginLeft == itemLikeElement.marginLeft );\n\n\t\t\t// This might be a paragraph that has known margin, but it is not a real list block.\n\t\t\tif ( stackItem ) {\n\t\t\t\tconst listItems = stackItem.listItemElements;\n\n\t\t\t\t// Append block to LI.\n\t\t\t\twriter.appendChild( itemLikeElement.element, listItems[ listItems.length - 1 ] );\n\t\t\t\twriter.removeStyle( 'margin-left', itemLikeElement.element );\n\t\t\t} else {\n\t\t\t\tstack.length = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Removes paragraph wrapping content inside a list item.\n *\n * @internal\n */\nexport function unwrapParagraphInListItem(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif ( element.is( 'element', 'li' ) ) {\n\t\t\t// Google Docs allows for single paragraph inside LI.\n\t\t\tconst firstChild = element.getChild( 0 );\n\n\t\t\tif ( firstChild && firstChild.is( 'element', 'p' ) ) {\n\t\t\t\twriter.unwrapElement( firstChild );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Finds all list-like elements in a given document fragment.\n *\n * @param documentFragment Document fragment in which to look for list-like nodes.\n * @returns Array of found list-like items. Each item is an object containing\n * @internal\n */\nfunction findAllItemLikeElements(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): Array<ListLikeElement> {\n\tconst range = writer.createRangeIn( documentFragment );\n\tconst itemLikeElements: Array<ListLikeElement> = [];\n\tconst foundMargins = new Set<string>();\n\n\tfor ( const item of range.getItems() ) {\n\t\t// https://github.com/ckeditor/ckeditor5/issues/15964\n\t\tif ( !item.is( 'element' ) || !item.name.match( /^(p|h\\d+|li|div)$/ ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Try to rely on margin-left style to find paragraphs visually aligned with previously encountered list item.\n\t\tlet marginLeft = getMarginLeftNormalized( item );\n\n\t\t// Ignore margin-left 0 style if there is no MsoList... class.\n\t\tif (\n\t\t\tmarginLeft !== undefined &&\n\t\t\tparseFloat( marginLeft ) == 0 &&\n\t\t\t!Array.from( item.getClassNames() ).find( className => className.startsWith( 'MsoList' ) )\n\t\t) {\n\t\t\tmarginLeft = undefined;\n\t\t}\n\n\t\t// List item or a following list item block.\n\t\tif (\n\t\t\t( item.hasStyle( 'mso-list' ) && item.getStyle( 'mso-list' ) !== 'none' ) ||\n\t\t\t( marginLeft !== undefined && foundMargins.has( marginLeft ) )\n\t\t) {\n\t\t\tconst itemData = getListItemData( item );\n\n\t\t\titemLikeElements.push( {\n\t\t\t\telement: item,\n\t\t\t\tid: itemData.id,\n\t\t\t\torder: itemData.order,\n\t\t\t\tindent: itemData.indent,\n\t\t\t\tmarginLeft\n\t\t\t} );\n\n\t\t\tif ( marginLeft !== undefined ) {\n\t\t\t\tfoundMargins.add( marginLeft );\n\t\t\t}\n\t\t}\n\t\t// Clear found margins as we found block after a list.\n\t\telse {\n\t\t\tfoundMargins.clear();\n\t\t}\n\t}\n\n\treturn itemLikeElements;\n}\n\n/**\n * Whether the given element is possibly a list continuation. Previous element was wrapped into a list\n * or the current element already is inside a list.\n */\nfunction isListContinuation( currentItem: ListLikeElement ) {\n\tconst previousSibling = currentItem.element.previousSibling;\n\n\tif ( !previousSibling ) {\n\t\tconst parent = currentItem.element.parent as ViewElement;\n\n\t\t// If it's a li inside ul or ol like in here: https://github.com/ckeditor/ckeditor5/issues/15964.\n\t\t// If the parent has previous sibling, which is not a list, then it is not a continuation.\n\t\treturn isList( parent ) && ( !parent.previousSibling || isList( parent.previousSibling ) );\n\t}\n\n\t// Even with the same id the list does not have to be continuous (#43).\n\treturn isList( previousSibling );\n}\n\nfunction isList( element: ViewNode ) {\n\treturn element.is( 'element', 'ol' ) || element.is( 'element', 'ul' );\n}\n\n/**\n * Extracts list item style from the provided CSS.\n *\n * List item style is extracted from the CSS stylesheet. Each list with its specific style attribute\n * value (`mso-list:l1 level1 lfo1`) has its dedicated properties in a CSS stylesheet defined with a selector like:\n *\n * ```css\n * @list l1:level1 { ... }\n * ```\n *\n * It contains `mso-level-number-format` property which defines list numbering/bullet style. If this property\n * is not defined it means default `decimal` numbering.\n *\n * Here CSS string representation is used as `mso-level-number-format` property is an invalid CSS property\n * and will be removed during CSS parsing.\n *\n * @param listLikeItem List-like item for which list style will be searched for. Usually\n * a result of `findAllItemLikeElements()` function.\n * @param stylesString CSS stylesheet.\n * @returns An object with properties:\n *\n * * type - List type, could be `ul` or `ol`.\n * * startIndex - List start index, valid only for ordered lists.\n * * style - List style, for example: `decimal`, `lower-roman`, etc. It is extracted\n * directly from Word stylesheet and adjusted to represent proper values for the CSS `list-style-type` property.\n * If it cannot be adjusted, the `null` value is returned.\n */\nfunction detectListStyle( listLikeItem: ListLikeElement, stylesString: string ) {\n\tconst listStyleRegexp = new RegExp( `@list l${ listLikeItem.id }:level${ listLikeItem.indent }\\\\s*({[^}]*)`, 'gi' );\n\tconst listStyleTypeRegex = /mso-level-number-format:([^;]{0,100});/gi;\n\tconst listStartIndexRegex = /mso-level-start-at:\\s{0,100}([0-9]{0,10})\\s{0,100};/gi;\n\tconst legalStyleListRegex = new RegExp( `@list\\\\s+l${ listLikeItem.id }:level\\\\d\\\\s*{[^{]*mso-level-text:\"%\\\\d\\\\\\\\.`, 'gi' );\n\tconst multiLevelNumberFormatTypeRegex = new RegExp( `@list l${ listLikeItem.id }:level\\\\d\\\\s*{[^{]*mso-level-number-format:`, 'gi' );\n\n\tconst legalStyleListMatch = legalStyleListRegex.exec( stylesString );\n\tconst multiLevelNumberFormatMatch = multiLevelNumberFormatTypeRegex.exec( stylesString );\n\n\t// Multi level lists in Word have mso-level-number-format attribute except legal lists,\n\t// so we used that. If list has legal list match and doesn't has mso-level-number-format\n\t// then this is legal-list.\n\tconst islegalStyleList = legalStyleListMatch && !multiLevelNumberFormatMatch;\n\n\tconst listStyleMatch = listStyleRegexp.exec( stylesString );\n\n\tlet listStyleType = 'decimal'; // Decimal is default one.\n\tlet type = 'ol'; // <ol> is default list.\n\tlet startIndex = null;\n\n\tif ( listStyleMatch && listStyleMatch[ 1 ] ) {\n\t\tconst listStyleTypeMatch = listStyleTypeRegex.exec( listStyleMatch[ 1 ] );\n\n\t\tif ( listStyleTypeMatch && listStyleTypeMatch[ 1 ] ) {\n\t\t\tlistStyleType = listStyleTypeMatch[ 1 ].trim();\n\t\t\ttype = listStyleType !== 'bullet' && listStyleType !== 'image' ? 'ol' : 'ul';\n\t\t}\n\n\t\t// Styles for the numbered lists are always defined in the Word CSS stylesheet.\n\t\t// Unordered lists MAY contain a value for the Word CSS definition `mso-level-text` but sometimes\n\t\t// this tag is missing. And because of that, we cannot depend on that. We need to predict the list style value\n\t\t// based on the list style marker element.\n\t\tif ( listStyleType === 'bullet' ) {\n\t\t\tconst bulletedStyle = findBulletedListStyle( listLikeItem.element );\n\n\t\t\tif ( bulletedStyle ) {\n\t\t\t\tlistStyleType = bulletedStyle;\n\t\t\t}\n\t\t} else {\n\t\t\tconst listStartIndexMatch = listStartIndexRegex.exec( listStyleMatch[ 1 ] );\n\n\t\t\tif ( listStartIndexMatch && listStartIndexMatch[ 1 ] ) {\n\t\t\t\tstartIndex = parseInt( listStartIndexMatch[ 1 ] );\n\t\t\t}\n\t\t}\n\n\t\tif ( islegalStyleList ) {\n\t\t\ttype = 'ol';\n\t\t}\n\t}\n\n\treturn {\n\t\ttype,\n\t\tstartIndex,\n\t\tstyle: mapListStyleDefinition( listStyleType ),\n\t\tisLegalStyleList: islegalStyleList\n\t};\n}\n\n/**\n * Tries to extract the `list-style-type` value based on the marker element for bulleted list.\n */\nfunction findBulletedListStyle( element: ViewElement ) {\n\t// https://github.com/ckeditor/ckeditor5/issues/15964\n\tif ( element.name == 'li' && element.parent!.name == 'ul' && element.parent!.hasAttribute( 'type' ) ) {\n\t\treturn element.parent!.getAttribute( 'type' );\n\t}\n\n\tconst listMarkerElement = findListMarkerNode( element );\n\n\tif ( !listMarkerElement ) {\n\t\treturn null;\n\t}\n\n\tconst listMarker = listMarkerElement._data;\n\n\tif ( listMarker === 'o' ) {\n\t\treturn 'circle';\n\t} else if ( listMarker === '·' ) {\n\t\treturn 'disc';\n\t}\n\t// Word returns '§' instead of '■' for the square list style.\n\telse if ( listMarker === '§' ) {\n\t\treturn 'square';\n\t}\n\n\treturn null;\n}\n\n/**\n * Tries to find a text node that represents the marker element (list-style-type).\n */\nfunction findListMarkerNode( element: ViewElement ): ViewText | null {\n\t// If the first child is a text node, it is the data for the element.\n\t// The list-style marker is not present here.\n\tif ( element.getChild( 0 )!.is( '$text' ) ) {\n\t\treturn null;\n\t}\n\n\tfor ( const childNode of element.getChildren() ) {\n\t\t// The list-style marker will be inside the `<span>` element. Let's ignore all non-span elements.\n\t\t// It may happen that the `<a>` element is added as the first child. Most probably, it's an anchor element.\n\t\tif ( !childNode.is( 'element', 'span' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst textNodeOrElement = childNode.getChild( 0 );\n\n\t\tif ( !textNodeOrElement ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If already found the marker element, use it.\n\t\tif ( textNodeOrElement.is( '$text' ) ) {\n\t\t\treturn textNodeOrElement;\n\t\t}\n\n\t\treturn ( textNodeOrElement as any ).getChild( 0 );\n\t}\n\n\t/* istanbul ignore next -- @preserve */\n\treturn null;\n}\n\n/**\n * Parses the `list-style-type` value extracted directly from the Word CSS stylesheet and returns proper CSS definition.\n */\nfunction mapListStyleDefinition( value: string ) {\n\tif ( value.startsWith( 'arabic-leading-zero' ) ) {\n\t\treturn 'decimal-leading-zero';\n\t}\n\n\tswitch ( value ) {\n\t\tcase 'alpha-upper':\n\t\t\treturn 'upper-alpha';\n\t\tcase 'alpha-lower':\n\t\t\treturn 'lower-alpha';\n\t\tcase 'roman-upper':\n\t\t\treturn 'upper-roman';\n\t\tcase 'roman-lower':\n\t\t\treturn 'lower-roman';\n\t\tcase 'circle':\n\t\tcase 'disc':\n\t\tcase 'square':\n\t\t\treturn value;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Creates a new list OL/UL element.\n */\nfunction createNewEmptyList(\n\tlistStyle: ReturnType<typeof detectListStyle>,\n\twriter: ViewUpcastWriter,\n\thasMultiLevelListPlugin: boolean\n) {\n\tconst list = writer.createElement( listStyle.type );\n\n\t// We do not support modifying the marker for a particular list item.\n\t// Set the value for the `list-style-type` property directly to the list container.\n\tif ( listStyle.style ) {\n\t\twriter.setStyle( 'list-style-type', listStyle.style, list );\n\t}\n\n\tif ( listStyle.startIndex && listStyle.startIndex > 1 ) {\n\t\twriter.setAttribute( 'start', listStyle.startIndex, list );\n\t}\n\n\tif ( listStyle.isLegalStyleList && hasMultiLevelListPlugin ) {\n\t\twriter.addClass( 'legal-list', list );\n\t}\n\n\treturn list;\n}\n\n/**\n * Extracts list item information from Word specific list-like element style:\n *\n * ```\n * `style=\"mso-list:l1 level1 lfo1\"`\n * ```\n *\n * where:\n *\n * ```\n * * `l1` is a list id (however it does not mean this is a continuous list - see #43),\n * * `level1` is a list item indentation level,\n * * `lfo1` is a list insertion order in a document.\n * ```\n *\n * @param element Element from which style data is extracted.\n */\nfunction getListItemData( element: ViewElement ): ListItemData {\n\tconst listStyle = element.getStyle( 'mso-list' );\n\n\tif ( listStyle === undefined ) {\n\t\treturn {};\n\t}\n\n\tconst idMatch = listStyle.match( /(^|\\s{1,100})l(\\d+)/i );\n\tconst orderMatch = listStyle.match( /\\s{0,100}lfo(\\d+)/i );\n\tconst indentMatch = listStyle.match( /\\s{0,100}level(\\d+)/i );\n\n\tif ( idMatch && orderMatch && indentMatch ) {\n\t\treturn {\n\t\t\tid: idMatch[ 2 ],\n\t\t\torder: orderMatch[ 1 ],\n\t\t\tindent: parseInt( indentMatch[ 1 ] )\n\t\t};\n\t}\n\n\treturn {\n\t\tindent: 1 // Handle empty mso-list style as a marked for default list item.\n\t};\n}\n\n/**\n * Removes span with a numbering/bullet from a given element.\n */\nfunction removeBulletElement( element: ViewElement, writer: ViewUpcastWriter ) {\n\t// Matcher for finding `span` elements holding lists numbering/bullets.\n\tconst bulletMatcher = new Matcher( {\n\t\tname: 'span',\n\t\tstyles: {\n\t\t\t'mso-list': 'Ignore'\n\t\t}\n\t} );\n\n\tconst range = writer.createRangeIn( element );\n\n\tfor ( const value of range ) {\n\t\tif ( value.type === 'elementStart' && bulletMatcher.match( value.item as ViewElement ) ) {\n\t\t\twriter.remove( value.item as ViewElement );\n\t\t}\n\t}\n}\n\n/**\n * Returns element left margin normalized to 'px' if possible.\n */\nfunction getMarginLeftNormalized( element: ViewElement ): string | undefined {\n\tconst value = element.getStyle( 'margin-left' );\n\n\tif ( value === undefined || value.endsWith( 'px' ) ) {\n\t\treturn value;\n\t}\n\n\treturn convertCssLengthToPx( value );\n}\n\ninterface ListItemData {\n\n\t/**\n\t * Parent list id.\n\t */\n\tid?: string;\n\n\t/**\n\t * List item creation order.\n\t */\n\torder?: string;\n\n\t/**\n\t * List item indentation level.\n\t */\n\tindent?: number;\n}\n\ninterface ListLikeElement extends ListItemData {\n\n\t/**\n\t * List-like element.\n\t */\n\telement: ViewElement;\n\n\t/**\n\t * The margin-left normalized to 'px' if possible.\n\t */\n\tmarginLeft?: string;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/image\n */\n\nimport {\n\tMatcher,\n\tViewUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode\n} from 'ckeditor5/src/engine.js';\n\n/**\n * Replaces source attribute of all `<img>` elements representing regular\n * images (not the Word shapes) with inlined base64 image representation extracted from RTF or Blob data.\n *\n * @param documentFragment Document fragment on which transform images.\n * @param rtfData The RTF data from which images representation will be used.\n * @internal\n */\nexport function replaceImagesSourceWithBase64( documentFragment: ViewDocumentFragment, rtfData: string ): void {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst upcastWriter = new ViewUpcastWriter( documentFragment.document );\n\tconst shapesIds = findAllShapesIds( documentFragment, upcastWriter );\n\n\tremoveAllImgElementsRepresentingShapes( shapesIds, documentFragment, upcastWriter );\n\tinsertMissingImgs( shapesIds, documentFragment, upcastWriter );\n\tremoveAllShapeElements( documentFragment, upcastWriter );\n\n\tconst images = findAllImageElementsWithLocalSource( documentFragment, upcastWriter );\n\n\tif ( images.length ) {\n\t\treplaceImagesFileSourceWithInlineRepresentation( images, extractImageDataFromRtf( rtfData ), upcastWriter );\n\t}\n}\n\n/**\n * Converts given HEX string to base64 representation.\n *\n * @internal\n * @param hexString The HEX string to be converted.\n * @returns Base64 representation of a given HEX string.\n */\nexport function _convertHexToBase64( hexString: string ): string {\n\treturn btoa( hexString.match( /\\w{2}/g )!.map( char => {\n\t\treturn String.fromCharCode( parseInt( char, 16 ) );\n\t} ).join( '' ) );\n}\n\n/**\n * Finds all shapes (`<v:*>...</v:*>`) ids. Shapes can represent images (canvas)\n * or Word shapes (which does not have RTF or Blob representation).\n *\n * @param documentFragment Document fragment from which to extract shape ids.\n * @returns Array of shape ids.\n */\nfunction findAllShapesIds( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): Array<string> {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapeElementsMatcher = new Matcher( {\n\t\tname: /v:(.+)/\n\t} );\n\n\tconst shapesIds = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type != 'elementStart' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst el = value.item as ViewElement;\n\t\tconst previousSibling = el.previousSibling;\n\t\tconst prevSiblingName = previousSibling && previousSibling.is( 'element' ) ? previousSibling.name : null;\n\t\t// List of ids which should not be considered as shapes.\n\t\t// https://github.com/ckeditor/ckeditor5/pull/15847#issuecomment-1941543983\n\t\tconst exceptionIds = [ 'Chart' ];\n\n\t\tconst isElementAShape = shapeElementsMatcher.match( el );\n\t\tconst hasElementGfxdataAttribute = el.getAttribute( 'o:gfxdata' );\n\t\tconst isPreviousSiblingAShapeType = prevSiblingName === 'v:shapetype';\n\t\tconst isElementIdInExceptionsArray = hasElementGfxdataAttribute &&\n\t\t\texceptionIds.some( item => el.getAttribute( 'id' )!.includes( item ) );\n\n\t\t// If shape element has 'o:gfxdata' attribute and is not directly before\n\t\t// `<v:shapetype>` element it means that it represents a Word shape.\n\t\tif (\n\t\t\tisElementAShape &&\n\t\t\thasElementGfxdataAttribute &&\n\t\t\t!isPreviousSiblingAShapeType &&\n\t\t\t!isElementIdInExceptionsArray\n\t\t) {\n\t\t\tshapesIds.push( ( value.item as ViewElement ).getAttribute( 'id' )! );\n\t\t}\n\t}\n\n\treturn shapesIds;\n}\n\n/**\n * Removes all `<img>` elements which represents Word shapes and not regular images.\n *\n * @param shapesIds Shape ids which will be checked against `<img>` elements.\n * @param documentFragment Document fragment from which to remove `<img>` elements.\n */\nfunction removeAllImgElementsRepresentingShapes(\n\tshapesIds: Array<string>,\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst imageElementsMatcher = new Matcher( {\n\t\tname: 'img'\n\t} );\n\n\tconst imgs = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.item.is( 'element' ) && imageElementsMatcher.match( value.item ) ) {\n\t\t\tconst el = value.item;\n\t\t\tconst shapes = el.getAttribute( 'v:shapes' ) ? el.getAttribute( 'v:shapes' )!.split( ' ' ) : [];\n\n\t\t\tif ( shapes.length && shapes.every( shape => shapesIds.indexOf( shape ) > -1 ) ) {\n\t\t\t\timgs.push( el );\n\t\t\t// Shapes may also have empty source while content is paste in some browsers (Safari).\n\t\t\t} else if ( !el.getAttribute( 'src' ) ) {\n\t\t\t\timgs.push( el );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const img of imgs ) {\n\t\twriter.remove( img );\n\t}\n}\n\n/**\n * Removes all shape elements (`<v:*>...</v:*>`) so they do not pollute the output structure.\n *\n * @param documentFragment Document fragment from which to remove shape elements.\n */\nfunction removeAllShapeElements( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ) {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapeElementsMatcher = new Matcher( {\n\t\tname: /v:(.+)/\n\t} );\n\n\tconst shapes = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type == 'elementStart' && shapeElementsMatcher.match( value.item as ViewElement ) ) {\n\t\t\tshapes.push( value.item as ViewElement );\n\t\t}\n\t}\n\n\tfor ( const shape of shapes ) {\n\t\twriter.remove( shape );\n\t}\n}\n\n/**\n * Inserts `img` tags if there is none after a shape.\n */\nfunction insertMissingImgs( shapeIds: Array<string>, documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ) {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapes: Array<ViewElement> = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type == 'elementStart' && value.item.is( 'element', 'v:shape' ) ) {\n\t\t\tconst id = value.item.getAttribute( 'id' )!;\n\n\t\t\tif ( shapeIds.includes( id ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !containsMatchingImg( value.item.parent!.getChildren(), id ) ) {\n\t\t\t\tshapes.push( value.item );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const shape of shapes ) {\n\t\tconst attrs: Record<string, unknown> = {\n\t\t\tsrc: findSrc( shape )\n\t\t};\n\n\t\tif ( shape.hasAttribute( 'alt' ) ) {\n\t\t\tattrs.alt = shape.getAttribute( 'alt' );\n\t\t}\n\n\t\tconst img = writer.createElement( 'img', attrs );\n\n\t\twriter.insertChild( shape.index! + 1, img, shape.parent! );\n\t}\n\n\tfunction containsMatchingImg( nodes: Iterable<ViewNode>, id: string ): boolean {\n\t\tfor ( const node of nodes ) {\n\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\tif ( node.is( 'element' ) ) {\n\t\t\t\tif ( node.name == 'img' && node.getAttribute( 'v:shapes' ) == id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( containsMatchingImg( node.getChildren(), id ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction findSrc( shape: ViewElement ) {\n\t\tfor ( const child of shape.getChildren() ) {\n\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\tif ( child.is( 'element' ) && child.getAttribute( 'src' ) ) {\n\t\t\t\treturn child.getAttribute( 'src' );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Finds all `<img>` elements in a given document fragment which have source pointing to local `file://` resource.\n * This function also tracks the index position of each image in the document, which is essential for\n * precise matching with hexadecimal representations in RTF data.\n *\n * @param documentFragment Document fragment in which to look for `<img>` elements.\n * @returns Array of found images along with their position index in the document.\n */\nfunction findAllImageElementsWithLocalSource(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): Array<ImageWithIndex> {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst imageElementsMatcher = new Matcher( {\n\t\tname: 'img'\n\t} );\n\n\tconst imgs: Array<ImageWithIndex> = [];\n\tlet currentImageIndex = 0;\n\n\tfor ( const value of range ) {\n\t\tif ( value.item.is( 'element' ) && imageElementsMatcher.match( value.item ) ) {\n\t\t\tif ( value.item.getAttribute( 'src' )!.startsWith( 'file://' ) ) {\n\t\t\t\timgs.push( {\n\t\t\t\t\telement: value.item,\n\t\t\t\t\timageIndex: currentImageIndex\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tcurrentImageIndex++;\n\t\t}\n\t}\n\n\treturn imgs;\n}\n\n/**\n * Represents an image element with its index position in the document.\n * This index is crucial for correctly matching images with their\n * corresponding hexadecimal representations in RTF data.\n */\ntype ImageWithIndex = {\n\n\t/**\n * The position index of the image in the document.\n * Used to map the image to its corresponding hexadecimal representation in RTF data.\n * RTF data contains hexadecimal representations of ALL images in the document,\n * not just those with file:// URLs.\n */\n\timageIndex: number;\n\n\t/**\n * The image element.\n */\n\telement: ViewElement;\n};\n\n/**\n * Extracts all images HEX representations from a given RTF data.\n *\n * @param rtfData The RTF data from which to extract images HEX representation.\n * @returns Array of found HEX representations. Each array item is an object containing:\n *\n * * hex Image representation in HEX format.\n * * type Type of image, `image/png` or `image/jpeg`.\n */\nfunction extractImageDataFromRtf( rtfData: string ): Array<{ hex: string; type: string }> {\n\tif ( !rtfData ) {\n\t\treturn [];\n\t}\n\n\tconst regexPictureHeader = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/;\n\tconst regexPicture = new RegExp( '(?:(' + regexPictureHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g' );\n\tconst images = rtfData.match( regexPicture );\n\tconst result = [];\n\n\tif ( images ) {\n\t\tfor ( const image of images ) {\n\t\t\tlet imageType: string | false = false;\n\n\t\t\tif ( image.includes( '\\\\pngblip' ) ) {\n\t\t\t\timageType = 'image/png';\n\t\t\t} else if ( image.includes( '\\\\jpegblip' ) ) {\n\t\t\t\timageType = 'image/jpeg';\n\t\t\t}\n\n\t\t\tif ( imageType ) {\n\t\t\t\tresult.push( {\n\t\t\t\t\thex: image.replace( regexPictureHeader, '' ).replace( /[^\\da-fA-F]/g, '' ),\n\t\t\t\t\ttype: imageType\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Replaces `src` attribute value of all given images with the corresponding base64 image representation.\n * Uses the image index to precisely match with the correct hexadecimal representation from RTF data.\n *\n * @param imageElements Array of image elements along with their indices which will have their sources replaced.\n * @param imagesHexSources Array of images hex sources (usually the result of `extractImageDataFromRtf()` function).\n * Contains hexadecimal representations of ALL images in the document, not just those with `file://` URLs.\n * In XML documents, the same image might be defined both as base64 in HTML and as hexadecimal in RTF data.\n */\nfunction replaceImagesFileSourceWithInlineRepresentation(\n\timageElements: Array<ImageWithIndex>,\n\timagesHexSources: ReturnType<typeof extractImageDataFromRtf>,\n\twriter: ViewUpcastWriter\n) {\n\tfor ( let i = 0; i < imageElements.length; i++ ) {\n\t\tconst { element, imageIndex } = imageElements[ i ];\n\t\tconst rtfHexSource = imagesHexSources[ imageIndex ];\n\n\t\tif ( rtfHexSource ) {\n\t\t\tconst newSrc = `data:${ rtfHexSource.type };base64,${ _convertHexToBase64( rtfHexSource.hex ) }`;\n\t\t\twriter.setAttribute( 'src', newSrc, element );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removemsattributes\n */\n\nimport { ViewUpcastWriter, type ViewDocumentFragment, type ViewElement } from 'ckeditor5/src/engine.js';\n\n/**\n * Cleanup MS attributes like styles, attributes and elements.\n *\n * @param documentFragment element `data.content` obtained from clipboard.\n * @internal\n */\nexport function removeMSAttributes( documentFragment: ViewDocumentFragment ): void {\n\tconst elementsToUnwrap: Array<ViewElement> = [];\n\n\tconst writer = new ViewUpcastWriter( documentFragment.document );\n\n\tfor ( const { item } of writer.createRangeIn( documentFragment ) ) {\n\t\tif ( !item.is( 'element' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor ( const className of item.getClassNames() ) {\n\t\t\tif ( /\\bmso/gi.exec( className ) ) {\n\t\t\t\twriter.removeClass( className, item );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const styleName of item.getStyleNames() ) {\n\t\t\tif ( /\\bmso/gi.exec( styleName ) ) {\n\t\t\t\twriter.removeStyle( styleName, item );\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\titem.is( 'element', 'w:sdt' ) ||\n\t\t\titem.is( 'element', 'w:sdtpr' ) && item.isEmpty ||\n\t\t\titem.is( 'element', 'o:p' ) && item.isEmpty\n\t\t) {\n\t\t\telementsToUnwrap.push( item );\n\t\t}\n\t}\n\n\tfor ( const item of elementsToUnwrap ) {\n\t\tconst itemParent = item.parent!;\n\t\tconst childIndex = itemParent.getChildIndex( item );\n\n\t\twriter.insertChild( childIndex, item.getChildren(), itemParent );\n\t\twriter.remove( item );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/table\n */\n\nimport {\n\ttype ViewUpcastWriter,\n\ttype ViewDocumentFragment\n} from 'ckeditor5/src/engine.js';\n\nimport { convertCssLengthToPx } from './utils.js';\n\n/**\n * Applies border none for table and cells without a border specified.\n * Normalizes style length units to px.\n * Handles left block table alignment.\n *\n * @internal\n */\nexport function transformTables(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter,\n\thasTablePropertiesPlugin: boolean = false,\n\thasExtendedTableBlockAlignment: boolean = false\n): void {\n\tfor ( const item of writer.createRangeIn( documentFragment ).getItems() ) {\n\t\tif (\n\t\t\t!item.is( 'element', 'table' ) &&\n\t\t\t!item.is( 'element', 'td' ) &&\n\t\t\t!item.is( 'element', 'th' )\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// In MS Word, left-aligned tables (default) have no align attribute on the `<table>` and are not wrapped in a `<div>`.\n\t\t// In such cases, we need to set `margin-left: 0` and `margin-right: auto` to indicate to the editor that\n\t\t// the table is block-aligned to the left.\n\t\t//\n\t\t// Center- and right-aligned tables in MS Word are wrapped in a `<div>` with the `align` attribute set to\n\t\t// `center` or `right`, respectively with no align attribute on the `<table>` itself.\n\t\t//\n\t\t// Additionally, the structure may change when pasting content from MS Word.\n\t\t// Some browsers (e.g., Safari) may insert extra elements around the table (e.g., a <span>),\n\t\t// so the surrounding `<div>` with the `align` attribute may end up being the table's grandparent.\n\n\t\tif ( hasTablePropertiesPlugin && hasExtendedTableBlockAlignment && item.is( 'element', 'table' ) ) {\n\t\t\tconst directParent = item.parent?.is( 'element', 'div' ) ? item.parent : null;\n\t\t\tconst grandParent = item.parent?.parent?.is( 'element', 'div' ) ? item.parent.parent : null;\n\t\t\tconst divParent = directParent ?? grandParent;\n\n\t\t\t// Center block table alignment.\n\t\t\tif ( divParent && divParent.getAttribute( 'align' ) === 'center' && !item.getAttribute( 'align' ) ) {\n\t\t\t\twriter.setStyle( 'margin-left', 'auto', item );\n\t\t\t\twriter.setStyle( 'margin-right', 'auto', item );\n\t\t\t}\n\t\t\t// Right block table alignment.\n\t\t\telse if ( divParent && divParent.getAttribute( 'align' ) === 'right' && !item.getAttribute( 'align' ) ) {\n\t\t\t\twriter.setStyle( 'margin-left', 'auto', item );\n\t\t\t\twriter.setStyle( 'margin-right', '0', item );\n\t\t\t}\n\t\t\t// Left block table alignment.\n\t\t\telse if ( !divParent && !item.getAttribute( 'align' ) ) {\n\t\t\t\twriter.setStyle( 'margin-left', '0', item );\n\t\t\t\twriter.setStyle( 'margin-right', 'auto', item );\n\t\t\t}\n\t\t}\n\n\t\tconst sides = [ 'left', 'top', 'right', 'bottom' ];\n\n\t\t// As this is a pasted table, we do not want default table styles to apply here\n\t\t// so we set border node for sides that does not have any border style.\n\t\t// It is enough to verify border style as border color and border width properties have default values in DOM.\n\t\tif ( sides.every( side => !item.hasStyle( `border-${ side }-style` ) ) ) {\n\t\t\twriter.setStyle( 'border-style', 'none', item );\n\t\t} else {\n\t\t\tfor ( const side of sides ) {\n\t\t\t\tif ( !item.hasStyle( `border-${ side }-style` ) ) {\n\t\t\t\t\twriter.setStyle( `border-${ side }-style`, 'none', item );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Translate style length units to px.\n\t\tconst props = [\n\t\t\t'width',\n\t\t\t'height',\n\t\t\t...sides.map( side => `border-${ side }-width` ),\n\t\t\t...sides.map( side => `padding-${ side }` )\n\t\t];\n\n\t\tfor ( const prop of props ) {\n\t\t\tif ( item.hasStyle( prop ) ) {\n\t\t\t\twriter.setStyle( prop, convertCssLengthToPx( item.getStyle( prop )! ), item );\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removeinvalidtablewidth\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `width:0px` style from table pasted from Google Sheets and `width=\"0\"` attribute from Word tables.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeInvalidTableWidth( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of writer.createRangeIn( documentFragment ).getItems() ) {\n\t\tif ( child.is( 'element', 'table' ) ) {\n\t\t\t// Remove invalid width style (Google Sheets: width:0px).\n\t\t\tif ( child.getStyle( 'width' ) === '0px' ) {\n\t\t\t\twriter.removeStyle( 'width', child );\n\t\t\t}\n\n\t\t\t// Remove invalid width attribute (Word: width=\"0\").\n\t\t\tif ( child.getAttribute( 'width' ) === '0' ) {\n\t\t\t\twriter.removeAttribute( 'width', child );\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/replacemsfootnotes\n */\n\nimport type { ViewDocumentFragment, ViewElement, ViewText, ViewUpcastWriter } from 'ckeditor5/src/engine.js';\n\n/**\n * Replaces MS Word specific footnotes references and definitions with proper elements.\n *\n * Things to know about MS Word footnotes:\n *\n * * Footnote references in Word are marked with `mso-footnote-id` style.\n * * Word does not support nested footnotes, so references within definitions are ignored.\n * * Word appends extra spaces after footnote references within definitions, which are trimmed.\n * * Footnote definitions list is marked with `mso-element: footnote-list` style it contain `mso-element: footnote` elements.\n * * Footnote definition might contain tables, lists and other elements, not only text. They are placed directly within `li` element,\n * without any wrapper (in opposition to text content of the definition, which is placed within `MsoFootnoteText` element).\n *\n * Example pseudo document showing MS Word footnote structure:\n *\n * ```html\n * <p>Text with footnote<a style='mso-footnote-id:ftn1'>[1]</a> reference.</p>\n *\n * <div style='mso-element:footnote-list'>\n * \t<div style='mso-element:footnote' id=ftn1>\n * \t\t<p class=MsoFootnoteText><a style='mso-footnote-id:ftn1'>[1]</a> Footnote content</p>\n * \t\t<table class=\"MsoTableGrid\">...</table>\n * \t</div>\n * </div>\n * ```\n *\n * Will be transformed into:\n *\n * ```html\n * <p>Text with footnote<sup class=\"footnote\"><a id=\"ref-footnote-ftn1\" href=\"#footnote-ftn1\">1</a></sup> reference.</p>\n *\n * <ol class=\"footnotes\">\n * \t<li class=\"footnote-definition\" id=\"footnote-ftn1\">\n * \t\t<a href=\"#ref-footnote-ftn1\" class=\"footnote-backlink\">^</a>\n * \t\t<div class=\"footnote-content\">\n * \t\t\t<p>Footnote content</p>\n * \t\t\t<table>...</table>\n * \t\t</div>\n * \t</li>\n * </ol>\n * ```\n *\n * @param documentFragment `data.content` obtained from clipboard.\n * @param writer The view writer instance.\n * @internal\n */\nexport function replaceMSFootnotes( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tconst msFootnotesRefs = new Map<string, ViewElement>();\n\tconst msFootnotesDefs = new Map<string, ViewElement>();\n\tlet msFootnotesDefinitionsList: ViewElement | null = null;\n\n\t// Phase 1: Collect all footnotes references and definitions. Find the footnotes definitions list element.\n\tfor ( const { item } of writer.createRangeIn( documentFragment ) ) {\n\t\tif ( !item.is( 'element' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If spot a footnotes definitions element, let's store it. It'll be replaced later.\n\t\t// There should be only one such element in the document.\n\t\tif ( item.getStyle( 'mso-element' ) === 'footnote-list' ) {\n\t\t\tmsFootnotesDefinitionsList = item;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If spot a footnote reference or definition, store it in the corresponding map.\n\t\tif ( item.hasStyle( 'mso-footnote-id' ) ) {\n\t\t\tconst msFootnoteDef = item.findAncestor( 'element', el => el.getStyle( 'mso-element' ) === 'footnote' );\n\n\t\t\tif ( msFootnoteDef ) {\n\t\t\t\t// If it's a reference within a definition, ignore it and track only the definition.\n\t\t\t\t// MS Word do not support nested footnotes, so it's safe to assume that all references within\n\t\t\t\t// a definition point to the same definition.\n\t\t\t\tconst msFootnoteDefId = msFootnoteDef.getAttribute( 'id' )!;\n\n\t\t\t\tmsFootnotesDefs.set( msFootnoteDefId, msFootnoteDef );\n\t\t\t} else {\n\t\t\t\t// If it's a reference outside of a definition, track it as a reference.\n\t\t\t\tconst msFootnoteRefId = item.getStyle( 'mso-footnote-id' )!;\n\n\t\t\t\tmsFootnotesRefs.set( msFootnoteRefId, item );\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\t// If there are no footnotes references or definitions, or no definitions list, there's nothing to normalize.\n\tif ( !msFootnotesRefs.size || !msFootnotesDefinitionsList ) {\n\t\treturn;\n\t}\n\n\t// Phase 2: Replace footnotes definitions list with proper element.\n\tconst footnotesDefinitionsList = createFootnotesListViewElement( writer );\n\n\twriter.replace( msFootnotesDefinitionsList, footnotesDefinitionsList );\n\n\t// Phase 3: Replace all footnotes references and add matching definitions to the definitions list.\n\tfor ( const [ footnoteId, msFootnoteRef ] of msFootnotesRefs ) {\n\t\tconst msFootnoteDef = msFootnotesDefs.get( footnoteId );\n\n\t\tif ( !msFootnoteDef ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Replace footnote reference.\n\t\twriter.replace( msFootnoteRef, createFootnoteRefViewElement( writer, footnoteId ) );\n\n\t\t// Append found matching definition to the definitions list.\n\t\t// Order doesn't matter here, as it'll be fixed in the post-fixer.\n\t\tconst defElements = createFootnoteDefViewElement( writer, footnoteId );\n\n\t\tremoveMSReferences( writer, msFootnoteDef );\n\n\t\t// Insert content within the `MsoFootnoteText` element. It's usually a definition text content.\n\t\tfor ( const child of msFootnoteDef.getChildren() ) {\n\t\t\tlet clonedChild = child;\n\n\t\t\tif ( child.is( 'element' ) ) {\n\t\t\t\tclonedChild = writer.clone( child, true );\n\t\t\t}\n\n\t\t\twriter.appendChild( clonedChild, defElements.content );\n\t\t}\n\n\t\twriter.appendChild( defElements.listItem, footnotesDefinitionsList );\n\t}\n}\n\n/**\n * Removes all MS Office specific references from the given element.\n *\n * It also removes leading space from text nodes following the references, as MS Word adds\n * them to separate the reference from the rest of the text.\n *\n * @param writer The view writer.\n * @param element The element to trim.\n * @returns The trimmed element.\n */\nfunction removeMSReferences( writer: ViewUpcastWriter, element: ViewElement ): ViewElement {\n\tconst elementsToRemove: Array<ViewElement> = [];\n\tconst textNodesToTrim: Array<ViewText> = [];\n\n\tfor ( const { item } of writer.createRangeIn( element ) ) {\n\t\tif ( item.is( 'element' ) && item.getStyle( 'mso-footnote-id' ) ) {\n\t\t\telementsToRemove.unshift( item );\n\n\t\t\t// MS Word used to add spaces after footnote references within definitions. Let's check if there's a space after\n\t\t\t// the footnote reference and mark it for trimming.\n\t\t\tconst { nextSibling } = item;\n\n\t\t\tif ( nextSibling?.is( '$text' ) && nextSibling.data.startsWith( ' ' ) ) {\n\t\t\t\ttextNodesToTrim.unshift( nextSibling );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const element of elementsToRemove ) {\n\t\twriter.remove( element );\n\t}\n\n\t// Remove only the leading space from text nodes following reference within definition, preserve the rest of the text.\n\tfor ( const textNode of textNodesToTrim ) {\n\t\tconst trimmedData = textNode.data.substring( 1 );\n\n\t\tif ( trimmedData.length > 0 ) {\n\t\t\t// Create a new text node and replace the old one.\n\t\t\tconst parent = textNode.parent!;\n\t\t\tconst index = parent.getChildIndex( textNode );\n\t\t\tconst newTextNode = writer.createText( trimmedData );\n\n\t\t\twriter.remove( textNode );\n\t\t\twriter.insertChild( index, newTextNode, parent );\n\t\t} else {\n\t\t\t// If the text node contained only a space, remove it entirely.\n\t\t\twriter.remove( textNode );\n\t\t}\n\t}\n\n\treturn element;\n}\n\n/**\n * Creates a footnotes list view element.\n *\n * @param writer The view writer instance.\n * @returns The footnotes list view element.\n */\nfunction createFootnotesListViewElement( writer: ViewUpcastWriter ): ViewElement {\n\treturn writer.createElement( 'ol', { class: 'footnotes' } );\n}\n\n/**\n * Creates a footnote reference view element.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns The footnote reference view element.\n */\nfunction createFootnoteRefViewElement( writer: ViewUpcastWriter, footnoteId: string ): ViewElement {\n\tconst sup = writer.createElement( 'sup', { class: 'footnote' } );\n\tconst link = writer.createElement( 'a', {\n\t\tid: `ref-${ footnoteId }`,\n\t\thref: `#${ footnoteId }`\n\t} );\n\n\twriter.appendChild( link, sup );\n\n\treturn sup;\n}\n\n/**\n * Creates a footnote definition view element with a backlink and a content container.\n *\n * @param writer The view writer instance.\n * @param footnoteId The footnote ID.\n * @returns An object containing the list item element, backlink and content container.\n */\nfunction createFootnoteDefViewElement( writer: ViewUpcastWriter, footnoteId: string ): {\n\tlistItem: ViewElement;\n\tcontent: ViewElement;\n} {\n\tconst listItem = writer.createElement( 'li', {\n\t\tid: footnoteId,\n\t\tclass: 'footnote-definition'\n\t} );\n\n\tconst backLink = writer.createElement( 'a', {\n\t\thref: `#ref-${ footnoteId }`,\n\t\tclass: 'footnote-backlink'\n\t} );\n\n\tconst content = writer.createElement( 'div', {\n\t\tclass: 'footnote-content'\n\t} );\n\n\twriter.appendChild( writer.createText( '^' ), backLink );\n\twriter.appendChild( backLink, listItem );\n\twriter.appendChild( content, listItem );\n\n\treturn {\n\t\tlistItem,\n\t\tcontent\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/normalizers/mswordnormalizer\n */\n\nimport { transformBookmarks } from '../filters/bookmark.js';\nimport { transformListItemLikeElementsIntoLists } from '../filters/list.js';\nimport { replaceImagesSourceWithBase64 } from '../filters/image.js';\nimport { removeMSAttributes } from '../filters/removemsattributes.js';\nimport { transformTables } from '../filters/table.js';\nimport { removeInvalidTableWidth } from '../filters/removeinvalidtablewidth.js';\nimport { replaceMSFootnotes } from '../filters/replacemsfootnotes.js';\nimport { ViewUpcastWriter, type ViewDocument } from 'ckeditor5/src/engine.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../normalizer.js';\n\nconst msWordMatch1 = /<meta\\s*name=\"?generator\"?\\s*content=\"?microsoft\\s*word\\s*\\d+\"?\\/?>/i;\nconst msWordMatch2 = /xmlns:o=\"urn:schemas-microsoft-com/i;\n\n/**\n * Normalizer for the content pasted from Microsoft Word.\n */\nexport class PasteFromOfficeMSWordNormalizer implements PasteFromOfficeNormalizer {\n\tpublic readonly document: ViewDocument;\n\n\tpublic readonly hasMultiLevelListPlugin: boolean;\n\n\tpublic readonly hasTablePropertiesPlugin: boolean;\n\n\tpublic readonly hasExtendedTableBlockAlignment: boolean;\n\n\t/**\n\t * Creates a new `PasteFromOfficeMSWordNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor(\n\t\tdocument: ViewDocument,\n\t\thasMultiLevelListPlugin: boolean = false,\n\t\thasTablePropertiesPlugin: boolean = false,\n\t\thasExtendedTableBlockAlignment: boolean = false\n\t) {\n\t\tthis.document = document;\n\t\tthis.hasMultiLevelListPlugin = hasMultiLevelListPlugin;\n\t\tthis.hasTablePropertiesPlugin = hasTablePropertiesPlugin;\n\t\tthis.hasExtendedTableBlockAlignment = hasExtendedTableBlockAlignment;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn msWordMatch1.test( htmlString ) || msWordMatch2.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: PasteFromOfficeNormalizerData ): void {\n\t\tconst writer = new ViewUpcastWriter( this.document );\n\t\tconst { body: documentFragment, stylesString } = data._parsedData;\n\n\t\ttransformBookmarks( documentFragment, writer );\n\t\ttransformListItemLikeElementsIntoLists( documentFragment, stylesString, this.hasMultiLevelListPlugin );\n\t\treplaceImagesSourceWithBase64( documentFragment, data.dataTransfer.getData( 'text/rtf' ) );\n\t\ttransformTables( documentFragment, writer, this.hasTablePropertiesPlugin, this.hasExtendedTableBlockAlignment );\n\t\tremoveInvalidTableWidth( documentFragment, writer );\n\t\treplaceMSFootnotes( documentFragment, writer );\n\t\tremoveMSAttributes( documentFragment );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removeboldwrapper\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `<b>` tag wrapper added by Google Docs to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeBoldWrapper( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'b' ) && child.getStyle( 'font-weight' ) === 'normal' ) {\n\t\t\tconst childIndex = documentFragment.getChildIndex( child );\n\n\t\t\twriter.remove( child );\n\t\t\twriter.insertChild( childIndex, child.getChildren(), documentFragment );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/br\n */\n\nimport {\n\tViewDomConverter,\n\tViewDocument,\n\ttype ViewUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode\n} from 'ckeditor5/src/engine.js';\n\n/**\n * Transforms `<br>` elements that are siblings to some block element into a paragraphs.\n *\n * @param documentFragment The view structure to be transformed.\n * @internal\n */\nexport function transformBlockBrsToParagraphs(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter\n): void {\n\tconst viewDocument = new ViewDocument( writer.document.stylesProcessor );\n\tconst domConverter = new ViewDomConverter( viewDocument, { renderingMode: 'data' } );\n\n\tconst blockElements = domConverter.blockElements;\n\tconst inlineObjectElements = domConverter.inlineObjectElements;\n\n\tconst elementsToReplace = [];\n\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif ( element.is( 'element', 'br' ) ) {\n\t\t\tconst nextSibling = findSibling( element, 'forward', writer, { blockElements, inlineObjectElements } );\n\t\t\tconst previousSibling = findSibling( element, 'backward', writer, { blockElements, inlineObjectElements } );\n\n\t\t\tconst nextSiblingIsBlock = isBlockViewElement( nextSibling, blockElements );\n\t\t\tconst previousSiblingIsBlock = isBlockViewElement( previousSibling, blockElements );\n\n\t\t\t// If the <br> is surrounded by blocks then convert it to a paragraph:\n\t\t\t// * <p>foo</p>[<br>]<p>bar</p> -> <p>foo</p>[<p></p>]<p>bar</p>\n\t\t\t// * <p>foo</p>[<br>] -> <p>foo</p>[<p></p>]\n\t\t\t// * [<br>]<p>foo</p> -> [<p></p>]<p>foo</p>\n\t\t\tif ( previousSiblingIsBlock || nextSiblingIsBlock ) {\n\t\t\t\telementsToReplace.push( element );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const element of elementsToReplace ) {\n\t\tif ( element.hasClass( 'Apple-interchange-newline' ) ) {\n\t\t\twriter.remove( element );\n\t\t} else {\n\t\t\twriter.replace( element, writer.createElement( 'p' ) );\n\t\t}\n\t}\n}\n\n/**\n * Returns sibling node, threats inline elements as transparent (but should stop on an inline objects).\n */\nfunction findSibling(\n\tviewElement: ViewElement,\n\tdirection: 'forward' | 'backward',\n\twriter: ViewUpcastWriter,\n\t{ blockElements, inlineObjectElements }: { blockElements: Array<string>; inlineObjectElements: Array<string> }\n) {\n\tlet position = writer.createPositionAt( viewElement, direction == 'forward' ? 'after' : 'before' );\n\n\t// Find first position that is just before a first:\n\t// * text node,\n\t// * block element,\n\t// * inline object element.\n\t// It's ignoring any inline (non-object) elements like span, strong, etc.\n\tposition = position.getLastMatchingPosition( ( { item } ) => (\n\t\titem.is( 'element' ) &&\n\t\t!blockElements.includes( item.name ) &&\n\t\t!inlineObjectElements.includes( item.name )\n\t), { direction } );\n\n\treturn direction == 'forward' ? position.nodeAfter : position.nodeBefore;\n}\n\n/**\n * Returns true for view elements that are listed as block view elements.\n */\nfunction isBlockViewElement( node: ViewNode | null, blockElements: Array<string> ) {\n\treturn !!node && node.is( 'element' ) && blockElements.includes( node.name );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/replacetabswithinprewithspaces\n */\n\nimport type { ViewDocumentFragment, ViewUpcastWriter, ViewText, ViewElement } from 'ckeditor5/src/engine.js';\n\n/**\n * Replaces tab characters with spaces in text nodes that are inside elements styled with `white-space: pre-wrap`.\n *\n * This is a workaround for incorrect detection of pre-like formatting in the DOM converter for pasted Google Docs documents.\n * When an element uses `white-space: pre-wrap`, the editor reduces tab characters to a single space, causing\n * inconsistent spacing in pasted content. This function replaces tabs with spaces to ensure visual consistency.\n * This is intended as a temporary solution.\n *\n * See: https://github.com/ckeditor/ckeditor5/issues/18995\n *\n * @param documentFragment The `data.content` element obtained from the clipboard.\n * @param writer The upcast writer used to manipulate the view structure.\n * @param tabWidth The number of spaces to replace each tab with. Defaults to 8.\n * @internal\n */\nexport function replaceTabsWithinPreWithSpaces(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: ViewUpcastWriter,\n\ttabWidth: number\n): void {\n\t// Collect all text nodes with tabs that are inside pre-wrap elements.\n\tconst textNodesToReplace: Set<ViewText> = new Set();\n\n\tfor ( const child of writer.createRangeIn( documentFragment ).getItems() ) {\n\t\tif ( !child.is( 'view:$textProxy' ) || !child.data.includes( '\\t' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if any parent has `white-space: pre-wrap`.\n\t\tif ( hasPreWrapParent( child.parent ) ) {\n\t\t\ttextNodesToReplace.add( child.textNode );\n\t\t}\n\t}\n\n\t// Replace tabs in each collected text node.\n\tfor ( const textNode of textNodesToReplace ) {\n\t\treplaceTabsInTextNode( textNode, writer, tabWidth );\n\t}\n}\n\n/**\n * Checks if element or any of its parents has `white-space: pre-wrap` style.\n */\nfunction hasPreWrapParent( element: ViewDocumentFragment | ViewElement | null ): boolean {\n\tlet parent = element;\n\n\twhile ( parent ) {\n\t\tif ( parent.is( 'element' ) ) {\n\t\t\tconst whiteSpace = parent.getStyle?.( 'white-space' );\n\n\t\t\tif ( whiteSpace === 'pre-wrap' ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\treturn false;\n}\n\n/**\n * Replaces all tabs with spaces in the given text node.\n */\nfunction replaceTabsInTextNode( textNode: ViewText, writer: ViewUpcastWriter, tabWidth: number ): void {\n\tconst { parent, data } = textNode;\n\n\tconst replacedData = data.replaceAll( '\\t', ' '.repeat( tabWidth ) );\n\tconst index = parent!.getChildIndex( textNode );\n\n\t// Remove old node and insert new one with replaced tabs.\n\twriter.remove( textNode );\n\twriter.insertChild( index, writer.createText( replacedData ), parent! );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/normalizers/googledocsnormalizer\n */\n\nimport { ViewUpcastWriter, type ViewDocument } from 'ckeditor5/src/engine.js';\n\nimport { removeBoldWrapper } from '../filters/removeboldwrapper.js';\nimport { transformBlockBrsToParagraphs } from '../filters/br.js';\nimport { unwrapParagraphInListItem } from '../filters/list.js';\nimport { replaceTabsWithinPreWithSpaces } from '../filters/replacetabswithinprewithspaces.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../normalizer.js';\n\nconst googleDocsMatch = /id=(\"|')docs-internal-guid-[-0-9a-f]+(\"|')/i;\n\n/**\n * Normalizer for the content pasted from Google Docs.\n *\n * @internal\n */\nexport class GoogleDocsNormalizer implements PasteFromOfficeNormalizer {\n\tpublic readonly document: ViewDocument;\n\n\t/**\n\t * Creates a new `GoogleDocsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn googleDocsMatch.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: PasteFromOfficeNormalizerData ): void {\n\t\tconst writer = new ViewUpcastWriter( this.document );\n\t\tconst { body: documentFragment } = data._parsedData;\n\n\t\tremoveBoldWrapper( documentFragment, writer );\n\t\tunwrapParagraphInListItem( documentFragment, writer );\n\t\ttransformBlockBrsToParagraphs( documentFragment, writer );\n\t\treplaceTabsWithinPreWithSpaces( documentFragment, writer, 8 );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removexmlns\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `xmlns` attribute from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeXmlns( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'table' ) && child.hasAttribute( 'xmlns' ) ) {\n\t\t\twriter.removeAttribute( 'xmlns', child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removegooglesheetstag\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `<google-sheets-html-origin>` tag wrapper added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeGoogleSheetsTag( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'google-sheets-html-origin' ) ) {\n\t\t\tconst childIndex = documentFragment.getChildIndex( child );\n\n\t\t\twriter.remove( child );\n\t\t\twriter.insertChild( childIndex, child.getChildren(), documentFragment );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/removestyleblock\n */\n\nimport type { ViewUpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes `<style>` block added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n * @internal\n */\nexport function removeStyleBlock( documentFragment: ViewDocumentFragment, writer: ViewUpcastWriter ): void {\n\tfor ( const child of Array.from( documentFragment.getChildren() ) ) {\n\t\tif ( child.is( 'element', 'style' ) ) {\n\t\t\twriter.remove( child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/normalizers/googlesheetsnormalizer\n */\n\nimport { ViewUpcastWriter, type ViewDocument } from 'ckeditor5/src/engine.js';\n\nimport { removeXmlns } from '../filters/removexmlns.js';\nimport { removeGoogleSheetsTag } from '../filters/removegooglesheetstag.js';\nimport { removeInvalidTableWidth } from '../filters/removeinvalidtablewidth.js';\nimport { removeStyleBlock } from '../filters/removestyleblock.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from '../normalizer.js';\n\nconst googleSheetsMatch = /<google-sheets-html-origin/i;\n\n/**\n * Normalizer for the content pasted from Google Sheets.\n *\n * @internal\n */\nexport class GoogleSheetsNormalizer implements PasteFromOfficeNormalizer {\n\tpublic readonly document: ViewDocument;\n\n\t/**\n\t * Creates a new `GoogleSheetsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn googleSheetsMatch.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: PasteFromOfficeNormalizerData ): void {\n\t\tconst writer = new ViewUpcastWriter( this.document );\n\t\tconst { body: documentFragment } = data._parsedData;\n\n\t\tremoveGoogleSheetsTag( documentFragment, writer );\n\t\tremoveXmlns( documentFragment, writer );\n\t\tremoveInvalidTableWidth( documentFragment, writer );\n\t\tremoveStyleBlock( documentFragment, writer );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/space\n */\n\n/**\n * Replaces last space preceding elements closing tag with `&nbsp;`. Such operation prevents spaces from being removed\n * during further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n * This method also takes into account Word specific `<o:p></o:p>` empty tags.\n * Additionally multiline sequences of spaces and new lines between tags are removed (see #39 and #40).\n *\n * @param htmlString HTML string in which spacing should be normalized.\n * @returns Input HTML with spaces normalized.\n * @internal\n */\nexport function normalizeSpacing( htmlString: string ): string {\n\t// Run normalizeSafariSpaceSpans() two times to cover nested spans.\n\treturn normalizeSafariSpaceSpans( normalizeSafariSpaceSpans( htmlString ) )\n\t\t// Remove all \\r\\n from \"spacerun spans\" so the last replace line doesn't strip all whitespaces.\n\t\t.replace( /(<span\\s+style=['\"]mso-spacerun:yes['\"]>[^\\S\\r\\n]*?)[\\r\\n]+([^\\S\\r\\n]*<\\/span>)/g, '$1$2' )\n\t\t.replace( /<span\\s+style=['\"]mso-spacerun:yes['\"]><\\/span>/g, '' )\n\t\t.replace( /(<span\\s+style=['\"]letter-spacing:[^'\"]+?['\"]>)[\\r\\n]+(<\\/span>)/g, '$1 $2' )\n\t\t.replace( / <\\//g, '\\u00A0</' )\n\t\t.replace( / <o:p><\\/o:p>/g, '\\u00A0<o:p></o:p>' )\n\t\t// Remove <o:p> block filler from empty paragraph. Safari uses \\u00A0 instead of &nbsp;.\n\t\t.replace( /<o:p>(&nbsp;|\\u00A0)<\\/o:p>/g, '' )\n\t\t// Remove all whitespaces when they contain any \\r or \\n.\n\t\t.replace( />([^\\S\\r\\n]*[\\r\\n]\\s*)</g, '><' );\n}\n\n/**\n * Normalizes spacing in special Word `spacerun spans` (`<span style='mso-spacerun:yes'>\\s+</span>`) by replacing\n * all spaces with `&nbsp; ` pairs. This prevents spaces from being removed during further DOM/View processing\n * (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDomInlineNodes}).\n *\n * @param htmlDocument Native `Document` object in which spacing should be normalized.\n * @internal\n */\nexport function normalizeSpacerunSpans( htmlDocument: Document ): void {\n\thtmlDocument.querySelectorAll( 'span[style*=spacerun]' ).forEach( el => {\n\t\tconst htmlElement = el as HTMLElement;\n\t\tconst innerTextLength = htmlElement.innerText.length || 0;\n\n\t\thtmlElement.innerText = Array( innerTextLength + 1 ).join( '\\u00A0 ' ).substr( 0, innerTextLength );\n\t} );\n}\n\n/**\n * Normalizes specific spacing generated by Safari when content pasted from Word (`<span class=\"Apple-converted-space\"> </span>`)\n * by replacing all spaces sequences longer than 1 space with `&nbsp; ` pairs. This prevents spaces from being removed during\n * further DOM/View processing (see especially {@link module:engine/view/domconverter~ViewDomConverter#_processDataFromDomText}).\n *\n * This function is similar to {@link module:clipboard/utils/normalizeclipboarddata normalizeClipboardData util} but uses\n * regular spaces / &nbsp; sequence for replacement.\n *\n * @param htmlString HTML string in which spacing should be normalized\n * @returns Input HTML with spaces normalized.\n * @internal\n */\nfunction normalizeSafariSpaceSpans( htmlString: string ) {\n\treturn htmlString.replace( /<span(?: class=\"Apple-converted-space\"|)>(\\s+)<\\/span>/g, ( fullMatch, spaces ) => {\n\t\treturn spaces.length === 1 ? ' ' : Array( spaces.length + 1 ).join( '\\u00A0 ' ).substr( 0, spaces.length );\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/filters/parse\n */\n\nimport {\n\tViewDomConverter,\n\tViewDocument,\n\ttype StylesProcessor,\n\ttype ViewDocumentFragment\n} from 'ckeditor5/src/engine.js';\n\nimport { normalizeSpacing, normalizeSpacerunSpans } from './space.js';\n\n/**\n * Parses the provided HTML extracting contents of `<body>` and `<style>` tags.\n *\n * @param htmlString HTML string to be parsed.\n */\nexport function parsePasteOfficeHtml( htmlString: string, stylesProcessor: StylesProcessor ): PasteOfficeHtmlParseResult {\n\tconst domParser = new DOMParser();\n\n\t// Remove Word specific \"if comments\" so content inside is not omitted by the parser.\n\thtmlString = htmlString.replace( /<!--\\[if gte vml 1]>/g, '' );\n\n\t// Clean the <head> section of MS Windows specific tags. See https://github.com/ckeditor/ckeditor5/issues/15333.\n\t// The regular expression matches the <o:SmartTagType> tag with optional attributes (with or without values).\n\thtmlString = htmlString.replace( /<o:SmartTagType(?:\\s+[^\\s>=]+(?:=\"[^\"]*\")?)*\\s*\\/?>/gi, '' );\n\n\tconst normalizedHtml = normalizeSpacing( cleanContentAfterBody( htmlString ) );\n\n\t// Parse htmlString as native Document object.\n\tconst htmlDocument = domParser.parseFromString( normalizedHtml, 'text/html' );\n\n\tnormalizeSpacerunSpans( htmlDocument );\n\n\t// Get `innerHTML` first as transforming to View modifies the source document.\n\tconst bodyString = htmlDocument.body.innerHTML;\n\n\t// Transform document.body to View.\n\tconst bodyView = documentToView( htmlDocument, stylesProcessor );\n\n\t// Extract stylesheets.\n\tconst stylesObject = extractStyles( htmlDocument );\n\n\treturn {\n\t\tbody: bodyView,\n\t\tbodyString,\n\t\tstyles: stylesObject.styles,\n\t\tstylesString: stylesObject.stylesString\n\t};\n}\n\n/**\n * The result of {@link ~parsePasteOfficeHtml}.\n */\nexport interface PasteOfficeHtmlParseResult {\n\n\t/**\n\t * Parsed body content as a traversable structure.\n\t */\n\tbody: ViewDocumentFragment;\n\n\t/**\n\t * Entire body content as a string.\n\t */\n\tbodyString: string;\n\n\t/**\n\t * Array of native `CSSStyleSheet` objects, each representing separate `style` tag from the source HTML.\n\t */\n\tstyles: Array<CSSStyleSheet>;\n\n\t/**\n\t * All `style` tags contents combined in the order of occurrence into one string.\n\t */\n\tstylesString: string;\n}\n\n/**\n * Transforms native `Document` object into {@link module:engine/view/documentfragment~ViewDocumentFragment}. Comments are skipped.\n *\n * @param htmlDocument Native `Document` object to be transformed.\n */\nfunction documentToView( htmlDocument: Document, stylesProcessor: StylesProcessor ) {\n\tconst viewDocument = new ViewDocument( stylesProcessor );\n\tconst domConverter = new ViewDomConverter( viewDocument, { renderingMode: 'data' } );\n\tconst fragment = htmlDocument.createDocumentFragment();\n\tconst nodes = htmlDocument.body.childNodes;\n\n\twhile ( nodes.length > 0 ) {\n\t\tfragment.appendChild( nodes[ 0 ] );\n\t}\n\n\treturn domConverter.domToView( fragment, { skipComments: true } ) as ViewDocumentFragment;\n}\n\n/**\n * Extracts both `CSSStyleSheet` and string representation from all `style` elements available in a provided `htmlDocument`.\n *\n * @param htmlDocument Native `Document` object from which styles will be extracted.\n */\nfunction extractStyles( htmlDocument: Document ): { styles: Array<CSSStyleSheet>; stylesString: string } {\n\tconst styles = [];\n\tconst stylesString = [];\n\tconst styleTags = Array.from( htmlDocument.getElementsByTagName( 'style' ) );\n\n\tfor ( const style of styleTags ) {\n\t\tif ( style.sheet && style.sheet.cssRules && style.sheet.cssRules.length ) {\n\t\t\tstyles.push( style.sheet );\n\t\t\tstylesString.push( style.innerHTML );\n\t\t}\n\t}\n\n\treturn {\n\t\tstyles,\n\t\tstylesString: stylesString.join( ' ' )\n\t};\n}\n\n/**\n * Removes leftover content from between closing </body> and closing </html> tag:\n *\n * ```html\n * <html><body><p>Foo Bar</p></body><span>Fo</span></html> -> <html><body><p>Foo Bar</p></body></html>\n * ```\n *\n * This function is used as specific browsers (Edge) add some random content after `body` tag when pasting from Word.\n * @param htmlString The HTML string to be cleaned.\n * @returns The HTML string with leftover content removed.\n */\nfunction cleanContentAfterBody( htmlString: string ) {\n\tconst bodyCloseTag = '</body>';\n\tconst htmlCloseTag = '</html>';\n\n\tconst bodyCloseIndex = htmlString.indexOf( bodyCloseTag );\n\n\tif ( bodyCloseIndex < 0 ) {\n\t\treturn htmlString;\n\t}\n\n\tconst htmlCloseIndex = htmlString.indexOf( htmlCloseTag, bodyCloseIndex + bodyCloseTag.length );\n\n\treturn htmlString.substring( 0, bodyCloseIndex + bodyCloseTag.length ) +\n\t\t( htmlCloseIndex >= 0 ? htmlString.substring( htmlCloseIndex ) : '' );\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 paste-from-office/pastefromoffice\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport { ClipboardPipeline } from 'ckeditor5/src/clipboard.js';\n\nimport { PasteFromOfficeMSWordNormalizer } from './normalizers/mswordnormalizer.js';\nimport { GoogleDocsNormalizer } from './normalizers/googledocsnormalizer.js';\nimport { GoogleSheetsNormalizer } from './normalizers/googlesheetsnormalizer.js';\n\nimport { parsePasteOfficeHtml } from './filters/parse.js';\nimport type { PasteFromOfficeNormalizer, PasteFromOfficeNormalizerData } from './normalizer.js';\n\n/**\n * The Paste from Office plugin.\n *\n * This plugin handles content pasted from Office apps and transforms it (if necessary)\n * to a valid structure which can then be understood by the editor features.\n *\n * Transformation is made by a set of predefined {@link module:paste-from-office/normalizer~PasteFromOfficeNormalizer normalizers}.\n * This plugin includes following normalizers:\n * * {@link module:paste-from-office/normalizers/mswordnormalizer~PasteFromOfficeMSWordNormalizer Microsoft Word normalizer}\n * * {@link module:paste-from-office/normalizers/googledocsnormalizer~GoogleDocsNormalizer Google Docs normalizer}\n *\n * For more information about this feature check the {@glink api/paste-from-office package page}.\n */\nexport class PasteFromOffice extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PasteFromOffice' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic static get licenseFeatureCode(): string {\n\t\treturn 'PFO';\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\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\t\tconst viewDocument = editor.editing.view.document;\n\t\tconst normalizers: Array<PasteFromOfficeNormalizer> = [];\n\t\tconst hasMultiLevelListPlugin = this.editor.plugins.has( 'MultiLevelList' );\n\t\tconst hasTablePropertiesPlugin = this.editor.plugins.has( 'TableProperties' );\n\t\tconst hasExtendedTableBlockAlignment = !!this.editor.config.get( 'experimentalFlags.useExtendedTableBlockAlignment' );\n\n\t\tnormalizers.push(\n\t\t\tnew PasteFromOfficeMSWordNormalizer(\n\t\t\t\tviewDocument,\n\t\t\t\thasMultiLevelListPlugin,\n\t\t\t\thasTablePropertiesPlugin,\n\t\t\t\thasExtendedTableBlockAlignment\n\t\t\t)\n\t\t);\n\t\tnormalizers.push( new GoogleDocsNormalizer( viewDocument ) );\n\t\tnormalizers.push( new GoogleSheetsNormalizer( viewDocument ) );\n\n\t\tclipboardPipeline.on(\n\t\t\t'inputTransformation',\n\t\t\t( evt, data: PasteFromOfficeNormalizerData ) => {\n\t\t\t\tif ( data._isTransformedWithPasteFromOffice ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst codeBlock = editor.model.document.selection.getFirstPosition()!.parent;\n\n\t\t\t\tif ( codeBlock.is( 'element', 'codeBlock' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst htmlString = data.dataTransfer.getData( 'text/html' );\n\t\t\t\tconst activeNormalizer = normalizers.find( normalizer => normalizer.isActive( htmlString ) );\n\n\t\t\t\tif ( activeNormalizer ) {\n\t\t\t\t\tif ( !data._parsedData ) {\n\t\t\t\t\t\tdata._parsedData = parsePasteOfficeHtml( htmlString, viewDocument.stylesProcessor );\n\t\t\t\t\t}\n\n\t\t\t\t\tactiveNormalizer.execute( data );\n\n\t\t\t\t\tdata._isTransformedWithPasteFromOffice = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: 'high' }\n\t\t);\n\t}\n}\n"]}