UNPKG

229 kBSource Map (JSON)View Raw
1{"version":3,"sources":["index.js","../src/filters/utils.ts","../src/filters/list.ts","../src/filters/image.ts","../src/filters/removemsattributes.ts","../src/normalizers/mswordnormalizer.ts","../src/filters/removeboldwrapper.ts","../src/filters/br.ts","../src/normalizers/googledocsnormalizer.ts","../src/filters/removexmlns.ts","../src/filters/removegooglesheetstag.ts","../src/filters/removeinvalidtablewidth.ts","../src/filters/removestyleblock.ts","../src/normalizers/googlesheetsnormalizer.ts","../src/filters/space.ts","../src/filters/parse.ts","../src/pastefromoffice.ts"],"names":["convertCssLengthToPx","value","numericValue","parseFloat","endsWith","toPx","isPx","undefined","toFixed","replace","transformListItemLikeElementsIntoLists","documentFragment","stylesString","hasMultiLevelListPlugin","childCount","writer","UpcastWriter","document","itemLikeElements","findAllItemLikeElements","length","encounteredLists","stack","itemLikeElement","indent","isListContinuation","originalListId","id","Math","min","listStyle","detectListStyle","listElement","name","type","startIndex","createNewEmptyList","marginLeft","setStyle","parent","element","index","getChildIndex","insertChild","parentListItems","listItemElements","appendChild","listItem","createElement","push","removeBulletElement","removeStyle","stackItem","find","listItems","unwrapParagraphInListItem","createRangeIn","item","is","firstChild","getChild","unwrapElement","range","foundMargins","Set","getItems","match","getMarginLeftNormalized","Array","from","getClassNames","className","startsWith","hasStyle","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","hasAttribute","getAttribute","listMarkerElement","findListMarkerNode","listMarker","_data","childNode","getChildren","textNodeOrElement","list","setAttribute","addClass","getStyle","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","regexPictureHeader","regexPicture","source","result","image","imageType","hex","imageElements","imagesHexSources","i","newSrc","removeMSAttributes","elementsToUnwrap","removeClass","styleName","getStyleNames","isEmpty","itemParent","childIndex","msWordMatch1","msWordMatch2","MSWordNormalizer","constructor","isActive","htmlString","test","execute","data","body","_parsedData","dataTransfer","getData","content","removeBoldWrapper","transformBlockBrsToParagraphs","viewDocument","ViewDocument","stylesProcessor","domConverter","DomConverter","renderingMode","blockElements","inlineObjectElements","elementsToReplace","nextSibling","findSibling","nextSiblingIsBlock","isBlockViewElement","previousSiblingIsBlock","hasClass","viewElement","direction","position","createPositionAt","getLastMatchingPosition","nodeAfter","nodeBefore","googleDocsMatch","GoogleDocsNormalizer","removeXmlns","removeAttribute","removeGoogleSheetsTag","removeInvalidTableWidth","removeStyleBlock","googleSheetsMatch","GoogleSheetsNormalizer","normalizeSpacing","normalizeSafariSpaceSpans","normalizeSpacerunSpans","htmlDocument","querySelectorAll","forEach","htmlElement","innerTextLength","innerText","substr","fullMatch","spaces","parseHtml","domParser","DOMParser","normalizedHtml","cleanContentAfterBody","parseFromString","bodyString","innerHTML","bodyView","documentToView","stylesObject","extractStyles","fragment","createDocumentFragment","childNodes","domToView","skipComments","styleTags","getElementsByTagName","sheet","cssRules","bodyCloseTag","htmlCloseTag","bodyCloseIndex","htmlCloseIndex","substring","PasteFromOffice","Plugin","pluginName","isOfficialPlugin","requires","ClipboardPipeline","editor","clipboardPipeline","plugins","get","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 { UpcastWriter, Matcher, ViewDocument, DomConverter } from '@ckeditor/ckeditor5-engine/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 value.toFixed(2).replace(/\\.?0+$/, '') + '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 */ function transformListItemLikeElementsIntoLists(documentFragment, stylesString, hasMultiLevelListPlugin) {\n if (!documentFragment.childCount) {\n return;\n }\n const writer = new UpcastWriter(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 */ 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 */ 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') || 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 // If it's a li inside ul or ol like in here: https://github.com/ckeditor/ckeditor5/issues/15964.\n return isList(currentItem.element.parent);\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 */ function replaceImagesSourceWithBase64(documentFragment, rtfData) {\n if (!documentFragment.childCount) {\n return;\n }\n const upcastWriter = new UpcastWriter(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 *\n * @param documentFragment Document fragment in which to look for `<img>` elements.\n * @returns result All found images grouped by source type.\n */ function findAllImageElementsWithLocalSource(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 if (value.item.getAttribute('src').startsWith('file://')) {\n imgs.push(value.item);\n }\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 *\n * @param imageElements Array of image elements which will have its source replaced.\n * @param imagesHexSources Array of images hex sources (usually the result of `extractImageDataFromRtf()` function).\n * The array should be the same length as `imageElements` parameter.\n */ function replaceImagesFileSourceWithInlineRepresentation(imageElements, imagesHexSources, writer) {\n // Assume there is an equal amount of image elements and images HEX sources so they can be matched accordingly based on existing order.\n if (imageElements.length === imagesHexSources.length) {\n for(let i = 0; i < imageElements.length; i++){\n const newSrc = `data:${imagesHexSources[i].type};base64,${_convertHexToBase64(imagesHexSources[i].hex)}`;\n writer.setAttribute('src', newSrc, imageElements[i]);\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 */ function removeMSAttributes(documentFragment) {\n const elementsToUnwrap = [];\n const writer = new UpcastWriter(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\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 MSWordNormalizer {\n document;\n hasMultiLevelListPlugin;\n /**\n\t * Creates a new `MSWordNormalizer` 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 { body: documentFragment, stylesString } = data._parsedData;\n transformListItemLikeElementsIntoLists(documentFragment, stylesString, this.hasMultiLevelListPlugin);\n replaceImagesSourceWithBase64(documentFragment, data.dataTransfer.getData('text/rtf'));\n removeMSAttributes(documentFragment);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 */ 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 */ function transformBlockBrsToParagraphs(documentFragment, writer) {\n const viewDocument = new ViewDocument(writer.document.stylesProcessor);\n const domConverter = new DomConverter(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\nconst googleDocsMatch = /id=(\"|')docs-internal-guid-[-0-9a-f]+(\"|')/i;\n/**\n * Normalizer for the content pasted from Google Docs.\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 UpcastWriter(this.document);\n const { body: documentFragment } = data._parsedData;\n removeBoldWrapper(documentFragment, writer);\n unwrapParagraphInListItem(documentFragment, writer);\n transformBlockBrsToParagraphs(documentFragment, writer);\n data.content = documentFragment;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 */ 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 */ 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */ /**\n * @module paste-from-office/filters/removeinvalidtablewidth\n */ /**\n * Removes the `width:0px` style from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n */ function removeInvalidTableWidth(documentFragment, writer) {\n for (const child of documentFragment.getChildren()){\n if (child.is('element', 'table') && child.getStyle('width') === '0px') {\n writer.removeStyle('width', child);\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 */ 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 */ 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 UpcastWriter(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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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~DomConverter#_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 */ 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~DomConverter#_processDomInlineNodes}).\n *\n * @param htmlDocument Native `Document` object in which spacing should be normalized.\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~DomConverter#_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 */ 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 parseHtml(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~DocumentFragment}. 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 DomConverter(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~Normalizer normalizers}.\n * This plugin includes following normalizers:\n * * {@link module:paste-from-office/normalizers/mswordnormalizer~MSWordNormalizer 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 */ static get isOfficialPlugin() {\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 MSWordNormalizer(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 = parseHtml(htmlString, viewDocument.stylesProcessor);\n }\n activeNormalizer.execute(data);\n data._isTransformedWithPasteFromOffice = true;\n }\n }, {\n priority: 'high'\n });\n }\n}\n\nexport { MSWordNormalizer, PasteFromOffice, parseHtml };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 value.toFixed( 2 ).replace( /\\.?0+$/, '' ) + 'px';\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/list\n */\n\nimport {\n\tMatcher,\n\tUpcastWriter,\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 */\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 UpcastWriter( 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 */\nexport function unwrapParagraphInListItem(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\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 */\nfunction findAllItemLikeElements(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\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 ( item.hasStyle( 'mso-list' ) || marginLeft !== undefined && foundMargins.has( marginLeft ) ) {\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\t// If it's a li inside ul or ol like in here: https://github.com/ckeditor/ckeditor5/issues/15964.\n\t\treturn isList( currentItem.element.parent as ViewElement );\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: UpcastWriter,\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: UpcastWriter ) {\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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/image\n */\n\n/* globals btoa */\n\nimport {\n\tMatcher,\n\tUpcastWriter,\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 */\nexport function replaceImagesSourceWithBase64( documentFragment: ViewDocumentFragment, rtfData: string ): void {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst upcastWriter = new UpcastWriter( 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: UpcastWriter ): 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: UpcastWriter\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: UpcastWriter ) {\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: UpcastWriter ) {\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 *\n * @param documentFragment Document fragment in which to look for `<img>` elements.\n * @returns result All found images grouped by source type.\n */\nfunction findAllImageElementsWithLocalSource(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\n): Array<ViewElement> {\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\tif ( value.item.getAttribute( 'src' )!.startsWith( 'file://' ) ) {\n\t\t\t\timgs.push( value.item );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn imgs;\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 *\n * @param imageElements Array of image elements which will have its source replaced.\n * @param imagesHexSources Array of images hex sources (usually the result of `extractImageDataFromRtf()` function).\n * The array should be the same length as `imageElements` parameter.\n */\nfunction replaceImagesFileSourceWithInlineRepresentation(\n\timageElements: Array<ViewElement>,\n\timagesHexSources: ReturnType<typeof extractImageDataFromRtf>,\n\twriter: UpcastWriter\n) {\n\t// Assume there is an equal amount of image elements and images HEX sources so they can be matched accordingly based on existing order.\n\tif ( imageElements.length === imagesHexSources.length ) {\n\t\tfor ( let i = 0; i < imageElements.length; i++ ) {\n\t\t\tconst newSrc = `data:${ imagesHexSources[ i ].type };base64,${ _convertHexToBase64( imagesHexSources[ i ].hex ) }`;\n\t\t\twriter.setAttribute( 'src', newSrc, imageElements[ i ] );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removemsattributes\n */\n\nimport { UpcastWriter, 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 */\nexport default function removeMSAttributes( documentFragment: ViewDocumentFragment ): void {\n\tconst elementsToUnwrap: Array<ViewElement> = [];\n\n\tconst writer = new UpcastWriter( 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/normalizers/mswordnormalizer\n */\n\nimport { transformListItemLikeElementsIntoLists } from '../filters/list.js';\nimport { replaceImagesSourceWithBase64 } from '../filters/image.js';\nimport removeMSAttributes from '../filters/removemsattributes.js';\nimport type { ViewDocument } from 'ckeditor5/src/engine.js';\nimport type { Normalizer, NormalizerData } 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 default class MSWordNormalizer implements Normalizer {\n\tpublic readonly document: ViewDocument;\n\n\tpublic readonly hasMultiLevelListPlugin: boolean;\n\n\t/**\n\t * Creates a new `MSWordNormalizer` 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: NormalizerData ): void {\n\t\tconst { body: documentFragment, stylesString } = data._parsedData;\n\n\t\ttransformListItemLikeElementsIntoLists( documentFragment, stylesString, this.hasMultiLevelListPlugin );\n\t\treplaceImagesSourceWithBase64( documentFragment, data.dataTransfer.getData( 'text/rtf' ) );\n\t\tremoveMSAttributes( documentFragment );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removeboldwrapper\n */\n\nimport type { UpcastWriter, 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 */\nexport default function removeBoldWrapper( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/br\n */\n\nimport {\n\tDomConverter,\n\tViewDocument,\n\ttype UpcastWriter,\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 */\nexport default function transformBlockBrsToParagraphs(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\n): void {\n\tconst viewDocument = new ViewDocument( writer.document.stylesProcessor );\n\tconst domConverter = new DomConverter( 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: UpcastWriter,\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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/normalizers/googledocsnormalizer\n */\n\nimport { UpcastWriter, 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 type { Normalizer, NormalizerData } 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 */\nexport default class GoogleDocsNormalizer implements Normalizer {\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: NormalizerData ): void {\n\t\tconst writer = new UpcastWriter( 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\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removexmlns\n */\n\nimport type { UpcastWriter, 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 */\nexport default function removeXmlns( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removegooglesheetstag\n */\n\nimport type { UpcastWriter, 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 */\nexport default function removeGoogleSheetsTag( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removeinvalidtablewidth\n */\n\nimport type { UpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine.js';\n\n/**\n * Removes the `width:0px` style from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n */\nexport default function removeInvalidTableWidth( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'table' ) && child.getStyle( 'width' ) === '0px' ) {\n\t\t\twriter.removeStyle( 'width', child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removestyleblock\n */\n\nimport type { UpcastWriter, 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 */\nexport default function removeStyleBlock( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/normalizers/googlesheetsnormalizer\n */\n\nimport { UpcastWriter, 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 { Normalizer, NormalizerData } from '../normalizer.js';\n\nconst googleSheetsMatch = /<google-sheets-html-origin/i;\n\n/**\n * Normalizer for the content pasted from Google Sheets.\n */\nexport default class GoogleSheetsNormalizer implements Normalizer {\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: NormalizerData ): void {\n\t\tconst writer = new UpcastWriter( 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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~DomConverter#_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 */\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~DomConverter#_processDomInlineNodes}).\n *\n * @param htmlDocument Native `Document` object in which spacing should be normalized.\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~DomConverter#_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 */\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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/parse\n */\n\n/* globals DOMParser */\n\nimport {\n\tDomConverter,\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 parseHtml( htmlString: string, stylesProcessor: StylesProcessor ): ParseHtmlResult {\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 ~parseHtml}.\n */\nexport interface ParseHtmlResult {\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~DocumentFragment}. 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 DomConverter( 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-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\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 MSWordNormalizer from './normalizers/mswordnormalizer.js';\nimport GoogleDocsNormalizer from './normalizers/googledocsnormalizer.js';\nimport GoogleSheetsNormalizer from './normalizers/googlesheetsnormalizer.js';\n\nimport { parseHtml } from './filters/parse.js';\nimport type { Normalizer, NormalizerData } 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~Normalizer normalizers}.\n * This plugin includes following normalizers:\n * * {@link module:paste-from-office/normalizers/mswordnormalizer~MSWordNormalizer 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 default 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 */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\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<Normalizer> = [];\n\t\tconst hasMultiLevelListPlugin = this.editor.plugins.has( 'MultiLevelList' );\n\n\t\tnormalizers.push( new MSWordNormalizer( 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: NormalizerData ) => {\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 = parseHtml( 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"]}
\No newline at end of file