Skip to content

Conversation

@BryanValverdeU
Copy link
Contributor

In this PR we remove the <!-- and --> comment tags from the Styles element inside of the HEAD elements from the clipboard content, as they cause that the content being pasted from Word Desktop or Excel Desktop lose format.

Additionally, re-apply a change from #3010, so we dont need to re-parse the content from head with DOM Creator and instead use string handling. As the head of the clipboard is not provided to the fragment in the BeforePasteEvent.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR removes the dependency on DOM parsing for processing style metadata by eliminating the use of an injected domCreator and instead using string-based manipulation to remove HTML comment tags from style elements in the clipboard content. It also cleans up tests and updates the paste functionality accordingly.

  • Removed injected DOM parsing from processPastedContentFromWordDesktop and related tests.
  • Updated the extraction of style tags and comment cleaning logic to use string handling.
  • Removed obsolete debug output from the pruneUnselectedModel test.

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/roosterjs-content-model-plugins/test/paste/word/processPastedContentFromWordDesktopTest.ts Removed unused domCreator dependency in test calls.
packages/roosterjs-content-model-plugins/test/paste/utils/getStyleMetadataTest.ts Updated test to reflect removal of domCreator from getStyleMetadata.
packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts Removed domCreator dependency and updated style metadata handling.
packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts Replaced DOM parsing with a string-based extraction of style tag content.
packages/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts Updated function call to processPastedContentFromWordDesktop to remove domCreator parameter.
packages/roosterjs-content-model-core/test/corePlugin/copyPaste/utils/pruneUnselectedModelTest.ts Removed obsolete debug output.
packages/roosterjs-content-model-core/test/command/paste/cleanHtmlCommentsTest.ts Added tests for validating the removal of HTML comment tags within style elements.
packages/roosterjs-content-model-core/lib/command/paste/paste.ts Integrated cleanHtmlComments processing before creating DOM from HTML.
packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts Introduced string based cleaning functions to remove HTML comment markers within style tags.

BryanValverdeU and others added 3 commits May 6, 2025 15:41
@BryanValverdeU BryanValverdeU requested review from Copilot May 6, 2025 21:43
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR removes the DOMCreator dependency from several functions and refactors the handling of head styles by applying string handling for cleaning HTML comments. Additionally, it cleans up tests and ensures that pasted content from Word Desktop is processed without unnecessary re-parsing via the DOM.

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/roosterjs-content-model-plugins/test/paste/word/processPastedContentFromWordDesktopTest.ts Removed the domCreator parameter from the test and function call.
packages/roosterjs-content-model-plugins/test/paste/utils/getStyleMetadataTest.ts Updated test to no longer pass a DOMCreator parameter.
packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts Refactored the function signature, removing the unused DOMCreator parameter.
packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts Replaced DOM parsing with string extraction for style tags.
packages/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts Updated call to processPastedContentFromWordDesktop to reflect the new signature.
packages/roosterjs-content-model-core/test/corePlugin/copyPaste/utils/pruneUnselectedModelTest.ts Removed a test line that was writing to the clipboard.
packages/roosterjs-content-model-core/test/command/paste/cleanHtmlCommentsTest.ts Added tests for the new cleanHtmlComments behavior.
packages/roosterjs-content-model-core/lib/command/paste/paste.ts Updated createDOMFromHtml to use cleanHtmlComments before DOM creation.
packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts Introduced functionality to remove HTML comments within style tags.
Comments suppressed due to low confidence (2)

packages/roosterjs-content-model-core/test/corePlugin/copyPaste/utils/pruneUnselectedModelTest.ts:1399

  • [nitpick] Consider removing debugging or extraneous code from the tests to keep the test outputs clean.
navigator.clipboard.writeText(JSON.stringify(doc));

packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts:2

  • [nitpick] Consider renaming 'HtmlCommentStart2' to 'alternateHtmlCommentStart' for improved clarity.
const HtmlCommentStart2 = '<!--';

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

const HtmlCommentStart2 = '<!--';
const HtmlCommentEnd = '-->';
const styleTag = '<style';
const styleTag = '<style>';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we still need to allow any attributes in this tag, so we just need to improve the original check, for example

const styleTag = '<style'
...
const index = ...
const nextChar = html.substring(index + styleTag.length, 1);

if (/\W/.test(nextChar)) { ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added this in latest commit.

@BryanValverdeU BryanValverdeU changed the title Remove comments <!-- and --> from head styles and re apply fix for Word Desktop Pasting Remove comments <!-- and --> from styles and re apply fix for Word Desktop Pasting May 8, 2025
@BryanValverdeU BryanValverdeU enabled auto-merge (squash) May 8, 2025 17:36
@BryanValverdeU BryanValverdeU changed the title Remove comments <!-- and --> from styles and re apply fix for Word Desktop Pasting Remove comments <!-- and --> from styles and re apply fix for Word Desktop Pasting May 8, 2025
@BryanValverdeU BryanValverdeU disabled auto-merge May 8, 2025 17:45
@BryanValverdeU BryanValverdeU merged commit d7760c1 into master May 8, 2025
7 checks passed
BryanValverdeU added a commit that referenced this pull request May 8, 2025
* Use FormatContainer to represent DIV with id (#3003)

* Fix #3005 (#3007)

* Fix a cache issue (#3006)

* Refactor getStyleMetadata to not rely on DomCreator and only use String handling (#3010)

* Refactor paste plugin to remove unused DOMCreator parameter and enhance style extraction logic

* fix test

* Change search string to lowercase

* Clean image edit when undo (#3015)

* undo image

* undo image

* undo image

* Add 'CustomCopyCut' experimental feature to fix some copy cut bugs (#3000)

* Add 'CustomCopyCut' experimental feature to enhance copy/cut behavior

* Implement pruneUnselectedModel utility for optimizing copy/paste behavior

* Try fix iuld

* Address comment and fix broken tests

* Revert unneeded change

* Refactor pruneUnselectedModel

---------

Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Demo site: Add preset content for undeleteable anchor (#3014)

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Revert "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 5bbab35.

* Add API playground for createModelFromHTML (#3019)

* Add API playground for createModelFromHTML

* imporve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Do not copy div ID on Enter (#3011)

* wip

* insertCustom

* refactor

* formatKeys

* Add image hidden marker (#3021)

Instead of using a dataset to store the isEditing property, a hidden property is now used. To support this, get/set functions and the ImageMarkerFormat were introduced. The imageMarker property can now be accessed through the format property of the image.
This change eliminates the need to manually remove the dataset from the image element when extracting content from the DOM.

* Include ImageMetadata in FormatState (#3023)

* Support List Pasting from PowerPoint Desktop (#3012)

* Refactor paste parsers: add removeNegativeTextIndentParser and deprecatedBorderColorParser; update imports and constants for bullet list types

* Update packages/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Refactor bullet list constants and improve format parser signatures

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove comments `<!--` and `-->` from styles and re apply fix for Word Desktop Pasting  (#3024)

* Update dependencies and enhance paste functionality by cleaning HTML comments in style tags

* Reapply "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 32f47bf.

* Enhance cleanHtmlComments to handle both HTML comment formats in style tags

* Set original DOMPurify

* Update packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Ensure headEndIndex is valid

* address comment

* Address comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Bump main version to 9.27.0 in versions.json

* insert link in the image (#3027)

When the image is selected, do not replace the image with the link, add the link to image segment.

* square (#3029)

Instead of using a square character, this change updates the square style to use the 'square' style.

* Normalize default format (#3028)

* Normalize default format

* improve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* auto link (#3026)

* Add margin-inline-start to watermark styles for improved positioning (#3031)

---------

Co-authored-by: Jiuqing Song <jisong@microsoft.com>
Co-authored-by: Julia Roldi <87443959+juliaroldi@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
ianeli1 added a commit that referenced this pull request May 24, 2025
* Use FormatContainer to represent DIV with id (#3003)

* Fix #3005 (#3007)

* Fix a cache issue (#3006)

* Refactor getStyleMetadata to not rely on DomCreator and only use String handling (#3010)

* Refactor paste plugin to remove unused DOMCreator parameter and enhance style extraction logic

* fix test

* Change search string to lowercase

* Clean image edit when undo (#3015)

* undo image

* undo image

* undo image

* Add 'CustomCopyCut' experimental feature to fix some copy cut bugs (#3000)

* Add 'CustomCopyCut' experimental feature to enhance copy/cut behavior

* Implement pruneUnselectedModel utility for optimizing copy/paste behavior

* Try fix iuld

* Address comment and fix broken tests

* Revert unneeded change

* Refactor pruneUnselectedModel

---------

Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Demo site: Add preset content for undeleteable anchor (#3014)

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Revert "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 5bbab35.

* Add API playground for createModelFromHTML (#3019)

* Add API playground for createModelFromHTML

* imporve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Do not copy div ID on Enter (#3011)

* wip

* insertCustom

* refactor

* formatKeys

* Add image hidden marker (#3021)

Instead of using a dataset to store the isEditing property, a hidden property is now used. To support this, get/set functions and the ImageMarkerFormat were introduced. The imageMarker property can now be accessed through the format property of the image.
This change eliminates the need to manually remove the dataset from the image element when extracting content from the DOM.

* Include ImageMetadata in FormatState (#3023)

* Support List Pasting from PowerPoint Desktop (#3012)

* Refactor paste parsers: add removeNegativeTextIndentParser and deprecatedBorderColorParser; update imports and constants for bullet list types

* Update packages/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Refactor bullet list constants and improve format parser signatures

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove comments `<!--` and `-->` from styles and re apply fix for Word Desktop Pasting  (#3024)

* Update dependencies and enhance paste functionality by cleaning HTML comments in style tags

* Reapply "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 32f47bf.

* Enhance cleanHtmlComments to handle both HTML comment formats in style tags

* Set original DOMPurify

* Update packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Ensure headEndIndex is valid

* address comment

* Address comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* insert link in the image (#3027)

When the image is selected, do not replace the image with the link, add the link to image segment.

* square (#3029)

Instead of using a square character, this change updates the square style to use the 'square' style.

* Normalize default format (#3028)

* Normalize default format

* improve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* auto link (#3026)

* Add margin-inline-start to watermark styles for improved positioning (#3031)

* Allow queryContentModelBlocks to query blocks in entities (#3032)

* Allow queryContentModelBlocks to search children of entity

* Expect EditorContext instead

* Break out createEditorContextForEntity function into separate file and add tests

* Fix 353323: Keep indentation when start a list, and refactor (#3033)

* 353323

* fix build, add test

* improve

* Edit plugin Options (#3036)

* options

* add test

* Do not indent on TAB (#3039)

* keyboard tab

* remove import

* Fix 354663 (#3038)

* Fix 354663

* export the new function

* Fix Word Desktop paste case (#3034)

Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Add height property to table rows in paste tests and processor (#3045)

* Add height property to table rows in paste tests and processor

* Fix build

* Remove local change

* Fix A11y bug with table selection (#3041)

* Fix A11y bug with table selection

* Add comment

* Fix 341291 (#3046)

* Fix Word Desktop pasting when using Safari (#3047)

* Enhance paste functionality: support additional document types and extract HTML head content

* Fix paste source validations for Safari: update environment handling and improve document detection logic

* Add environment param back

* Prevent multiple event attachments for mousemove in SelectionPlugin (#3049)

* Prevent multiple event attachments for mousemove in SelectionPlugin

* Update packages/roosterjs-content-model-core/test/corePlugin/selection/SelectionPluginTest.ts

* Refactor mouse event handling in SelectionPlugin to ensure proper cleanup and re-attachment on mouseDown events

* Only paste text content of button (#3050)

* Enhance paste functionality: Update setProcessor call counts in tests and add pasteButtonProcessor unit tests

* Refactor pasteButtonProcessor: Enhance button element processing and add comprehensive unit tests

* Support table edit with logical root (#3048)

* Support table edit with logical root

* fix build and test

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Bump to 9.29.0

* Fix broken code

---------

Co-authored-by: Jiuqing Song <jisong@microsoft.com>
Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>
Co-authored-by: Julia Roldi <87443959+juliaroldi@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: florian-msft <87671048+florian-msft@users.noreply.github.com>
JiuqingSong added a commit that referenced this pull request May 27, 2025
* Use FormatContainer to represent DIV with id (#3003)

* Fix #3005 (#3007)

* Fix a cache issue (#3006)

* Refactor getStyleMetadata to not rely on DomCreator and only use String handling (#3010)

* Refactor paste plugin to remove unused DOMCreator parameter and enhance style extraction logic

* fix test

* Change search string to lowercase

* Clean image edit when undo (#3015)

* undo image

* undo image

* undo image

* Add 'CustomCopyCut' experimental feature to fix some copy cut bugs (#3000)

* Add 'CustomCopyCut' experimental feature to enhance copy/cut behavior

* Implement pruneUnselectedModel utility for optimizing copy/paste behavior

* Try fix iuld

* Address comment and fix broken tests

* Revert unneeded change

* Refactor pruneUnselectedModel

---------

Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Demo site: Add preset content for undeleteable anchor (#3014)

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Revert "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 5bbab35.

* Add API playground for createModelFromHTML (#3019)

* Add API playground for createModelFromHTML

* imporve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Do not copy div ID on Enter (#3011)

* wip

* insertCustom

* refactor

* formatKeys

* Add image hidden marker (#3021)

Instead of using a dataset to store the isEditing property, a hidden property is now used. To support this, get/set functions and the ImageMarkerFormat were introduced. The imageMarker property can now be accessed through the format property of the image.
This change eliminates the need to manually remove the dataset from the image element when extracting content from the DOM.

* Include ImageMetadata in FormatState (#3023)

* Support List Pasting from PowerPoint Desktop (#3012)

* Refactor paste parsers: add removeNegativeTextIndentParser and deprecatedBorderColorParser; update imports and constants for bullet list types

* Update packages/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Refactor bullet list constants and improve format parser signatures

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove comments `<!--` and `-->` from styles and re apply fix for Word Desktop Pasting  (#3024)

* Update dependencies and enhance paste functionality by cleaning HTML comments in style tags

* Reapply "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 32f47bf.

* Enhance cleanHtmlComments to handle both HTML comment formats in style tags

* Set original DOMPurify

* Update packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Ensure headEndIndex is valid

* address comment

* Address comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* insert link in the image (#3027)

When the image is selected, do not replace the image with the link, add the link to image segment.

* square (#3029)

Instead of using a square character, this change updates the square style to use the 'square' style.

* Normalize default format (#3028)

* Normalize default format

* improve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* auto link (#3026)

* Add margin-inline-start to watermark styles for improved positioning (#3031)

* Allow queryContentModelBlocks to query blocks in entities (#3032)

* Allow queryContentModelBlocks to search children of entity

* Expect EditorContext instead

* Break out createEditorContextForEntity function into separate file and add tests

* Fix 353323: Keep indentation when start a list, and refactor (#3033)

* 353323

* fix build, add test

* improve

* Edit plugin Options (#3036)

* options

* add test

* Do not indent on TAB (#3039)

* keyboard tab

* remove import

* Fix 354663 (#3038)

* Fix 354663

* export the new function

* Fix Word Desktop paste case (#3034)

Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Add height property to table rows in paste tests and processor (#3045)

* Add height property to table rows in paste tests and processor

* Fix build

* Remove local change

* Fix A11y bug with table selection (#3041)

* Fix A11y bug with table selection

* Add comment

* Fix 341291 (#3046)

* Fix Word Desktop pasting when using Safari (#3047)

* Enhance paste functionality: support additional document types and extract HTML head content

* Fix paste source validations for Safari: update environment handling and improve document detection logic

* Add environment param back

* Prevent multiple event attachments for mousemove in SelectionPlugin (#3049)

* Prevent multiple event attachments for mousemove in SelectionPlugin

* Update packages/roosterjs-content-model-core/test/corePlugin/selection/SelectionPluginTest.ts

* Refactor mouse event handling in SelectionPlugin to ensure proper cleanup and re-attachment on mouseDown events

* Only paste text content of button (#3050)

* Enhance paste functionality: Update setProcessor call counts in tests and add pasteButtonProcessor unit tests

* Refactor pasteButtonProcessor: Enhance button element processing and add comprehensive unit tests

* Support table edit with logical root (#3048)

* Support table edit with logical root

* fix build and test

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* If font family already has single quote, keep it (#3055)

* 9.29.1

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>
Co-authored-by: Julia Roldi <87443959+juliaroldi@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: florian-msft <87671048+florian-msft@users.noreply.github.com>
BryanValverdeU added a commit that referenced this pull request May 28, 2025
* Use FormatContainer to represent DIV with id (#3003)

* Fix #3005 (#3007)

* Fix a cache issue (#3006)

* Refactor getStyleMetadata to not rely on DomCreator and only use String handling (#3010)

* Refactor paste plugin to remove unused DOMCreator parameter and enhance style extraction logic

* fix test

* Change search string to lowercase

* Clean image edit when undo (#3015)

* undo image

* undo image

* undo image

* Add 'CustomCopyCut' experimental feature to fix some copy cut bugs (#3000)

* Add 'CustomCopyCut' experimental feature to enhance copy/cut behavior

* Implement pruneUnselectedModel utility for optimizing copy/paste behavior

* Try fix iuld

* Address comment and fix broken tests

* Revert unneeded change

* Refactor pruneUnselectedModel

---------

Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Demo site: Add preset content for undeleteable anchor (#3014)

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Revert "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 5bbab35.

* Add API playground for createModelFromHTML (#3019)

* Add API playground for createModelFromHTML

* imporve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* Do not copy div ID on Enter (#3011)

* wip

* insertCustom

* refactor

* formatKeys

* Add image hidden marker (#3021)

Instead of using a dataset to store the isEditing property, a hidden property is now used. To support this, get/set functions and the ImageMarkerFormat were introduced. The imageMarker property can now be accessed through the format property of the image.
This change eliminates the need to manually remove the dataset from the image element when extracting content from the DOM.

* Include ImageMetadata in FormatState (#3023)

* Support List Pasting from PowerPoint Desktop (#3012)

* Refactor paste parsers: add removeNegativeTextIndentParser and deprecatedBorderColorParser; update imports and constants for bullet list types

* Update packages/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Refactor bullet list constants and improve format parser signatures

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove comments `<!--` and `-->` from styles and re apply fix for Word Desktop Pasting  (#3024)

* Update dependencies and enhance paste functionality by cleaning HTML comments in style tags

* Reapply "Refactor getStyleMetadata to not rely on DomCreator and only use Stri…" (#3020)

This reverts commit 32f47bf.

* Enhance cleanHtmlComments to handle both HTML comment formats in style tags

* Set original DOMPurify

* Update packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/getStyleMetadata.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Ensure headEndIndex is valid

* address comment

* Address comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* insert link in the image (#3027)

When the image is selected, do not replace the image with the link, add the link to image segment.

* square (#3029)

Instead of using a square character, this change updates the square style to use the 'square' style.

* Normalize default format (#3028)

* Normalize default format

* improve

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* auto link (#3026)

* Add margin-inline-start to watermark styles for improved positioning (#3031)

* Allow queryContentModelBlocks to query blocks in entities (#3032)

* Allow queryContentModelBlocks to search children of entity

* Expect EditorContext instead

* Break out createEditorContextForEntity function into separate file and add tests

* Fix 353323: Keep indentation when start a list, and refactor (#3033)

* 353323

* fix build, add test

* improve

* Edit plugin Options (#3036)

* options

* add test

* Do not indent on TAB (#3039)

* keyboard tab

* remove import

* Fix 354663 (#3038)

* Fix 354663

* export the new function

* Fix Word Desktop paste case (#3034)

Co-authored-by: Jiuqing Song <jisong@microsoft.com>

* Add height property to table rows in paste tests and processor (#3045)

* Add height property to table rows in paste tests and processor

* Fix build

* Remove local change

* Fix A11y bug with table selection (#3041)

* Fix A11y bug with table selection

* Add comment

* Fix 341291 (#3046)

* Fix Word Desktop pasting when using Safari (#3047)

* Enhance paste functionality: support additional document types and extract HTML head content

* Fix paste source validations for Safari: update environment handling and improve document detection logic

* Add environment param back

* Prevent multiple event attachments for mousemove in SelectionPlugin (#3049)

* Prevent multiple event attachments for mousemove in SelectionPlugin

* Update packages/roosterjs-content-model-core/test/corePlugin/selection/SelectionPluginTest.ts

* Refactor mouse event handling in SelectionPlugin to ensure proper cleanup and re-attachment on mouseDown events

* Only paste text content of button (#3050)

* Enhance paste functionality: Update setProcessor call counts in tests and add pasteButtonProcessor unit tests

* Refactor pasteButtonProcessor: Enhance button element processing and add comprehensive unit tests

* Support table edit with logical root (#3048)

* Support table edit with logical root

* fix build and test

---------

Co-authored-by: Bryan Valverde U <bvalverde@microsoft.com>

* If font family already has single quote, keep it (#3055)

* Fix announcing in lists (#3058)

* Fix announcing in lists

* fix tests in FF

* Add role="presentation" to generic role elements in list items for better screen reader support

* Bump roosterjs-content-model-dom version to 9.29.2

---------

Co-authored-by: Jiuqing Song <jisong@microsoft.com>
Co-authored-by: Julia Roldi <87443959+juliaroldi@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: florian-msft <87671048+florian-msft@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants