Skip to content

Releases: microsoft/roosterjs

RoosterJs 8.40.2

22 Jan 07:58
962fb77

Choose a tag to compare

Bug fix

  • Fix Cut/Copy page scroll issue (#1496)
  • Fix image plugin z-index calc (#1500)
  • Remove image edit wrapper when content change (#1508)
  • Fix for image selection not dismiss issue when TableSelection related plugin is not added to editor (#1510)
  • Fix #1509: Make insert table pane better shown when there is global CSS for box-sizing (#1511)

RoosterJs 8.40.0

10 Jan 17:26
a279b70

Choose a tag to compare

New features

  • Support Alt+Shift+Left/Right to outdent/indent list (#1444)

Improvement

  • Image edit improvement:
    • Calculate zIndex for image editing (#1462)
    • Keep image wrapper under scroll container (#1466)
    • Remove id from cloned image (#1480)
  • Remove link to local file when paste (#1463)

Bug fix

  • Improve the format-on-span behavior and fix a bug in TypeInContainerPlugin (#1455, #1469, #1471, #1474, #1482)
  • Fix a bug in splitBalancedNodeRange (#1470)
  • Fix a bug when paste header from Word (#1473)

Experimental features

  • Graduate PendingStyleBasedFormat (#1381)
  • Graduate NormalizeList (#1381)
  • Graduate ConvertSingleImageBody

Engineering improvement

  • Fix heap overflow issue when build (#1488)

Interface changes

  • New parameter of function getSelectedBlockElementsInRegion
    • shouldApplyFormatToSpan
  • New member of enum KnownCreateElementDataIndex
    • EmptyLineFormatInSpan
  • New parameter of constructor of Paste plugin
    • convertSingleImageBody

RoosterJs 8.39.1

02 Dec 23:34
20e3a02

Choose a tag to compare

Improvement

  • Improve handling of quotes inside lists (#1438)
  • Show image edit pane with correct zIndex (#1437)
  • Allow styled table header cells to be clear formatted (#1447)

Bug fix

  • Fix issue when cell resizing with merged cells (#1445)
  • Fix Unhandled Rejection: Error: Editor is already disposed (#1449)
  • Fix markdown text replacement (#1432)
  • Add check for last typed character (#1452)

RoosterJs 8.38.0

29 Nov 17:44
b36201b

Choose a tag to compare

Bug fix

  • Restore Ctrl+Click behavior on Firefox (#1406)
  • Fix cursor jump bug for auto list format (#1426)
  • Fix dark mode list color lost issue (#1428)
  • Fix numbered list triggering issue (#1425)

Improvement

  • Improve shadow edit behavior where there is entity in editor (#1408)
  • Support customizing default behavior of image edit when image is selected (#1405)
  • Improve clear format behavior (#1415)
  • Support add hyperlink on image (#1427)
  • When paste a table into a table, paste cell style as well (#1431)

Engineering improvement

  • Add test case to HyperLink plugin (#1329)

Interface change

  • New parameter of utility setListItemStyle
    • isCssStyle: True means the given styles are CSS style names, false means they are HTML attributes
  • New entity related API
    • createEntityPlaceholder: Create a placeholder comment node for entity
    • moveContentWithEntityPlaceholders: Move content from a container into a new Document fragment, and try keep entities to be reusable by creating placeholder
    • restoreContentWithEntityPlaceholder: Restore HTML content from a document fragment that may contain entity placeholders
  • New property for interface LifecyclePluginState
    • shadowEditEntities: Cached entity pairs for original content
  • New property for interface ImageEditOptions
    • onSelectState: Which operations will be executed when image is selected

RoosterJs 8.36.0

12 Nov 05:57
6e9d1c2

Choose a tag to compare

Improvement

  • Remove empty div Between list when backspacing. (#1365)
  • Allow applying default format on SPAN instead of DIV (Experimental feature: DefaultFormatInSpan) (#1380, #1399)
  • Image selection and editing: Edit image on top of editor DIV to avoid impacting editing DOM structure (#1377, #1383)
  • Move Image Selection plugin into EditorCore

Bug fix

  • Fix a code bug in list metadata hanlding (#1379)
  • Fix changing font size doesn't work for empty selections on Safari (#1384)

Graduate features

  • TableAlignment: Align table elements to left, center and right using setAlignment API
  • AdaptiveHandlesResizer: Provide a circular resize handles that adaptive the number od handles to the size of the image
  • ImageSelection: When a html image is selected, the selected image data will be stored by editor core.

Engineering improvement

  • Change the order of karma plugins to generate more accurate code discover report (#1371)

Interface changes

  • New style API
    • setGlobalCssStyles: Add global css styles
    • removeGlobalCssStyle: Remove a css rule style from a style sheet
  • New parameter of color API getDarkColor
    • baseLValue: The Light value for base dark color in LAB format. Default value is the Light value for #333333
  • New experimental feature
    • DefaultFormatInSpan: When apply default format when initialize or user type, apply the format on a SPAN element rather than the block element (In most case, the DIV element) so keep the block element clean
  • New core plugin
    • imageSelection: Image selection Plugin detects image selection and help highlight the image
  • New parameter of core API EnsureTypeInContainer
    • applyFormatToSpan: When set to true, default format (if any) will be applied to a SPAN element inside the block element instead of the block element itself.
  • New Content Edit Feature
    • mergeListOnBackspaceAfterList: MergeListOnBackspaceAfterList edit feature, provides the ability to merge list on backspace on block after a list

RoosterJs 8.35.1

31 Oct 19:43
587670f

Choose a tag to compare

Bug fix

  • List trigger fix (#1328)
  • Fix list style for arrow and square marker (#1342)
  • Fix null range issue in entityFeatures (#1344)
  • Fix copy/paste issue for markdown plugin (#1326)
  • Fix set list chain after set numbering list (#1352)
  • Fix issue of resizing a cropped image (#1354)
  • Stop propagation for HOME and other keys (#1366)
  • Fix code error in typed key check (#1372)
  • Auto detect clear mode when clear format in roosterjs-react Ribbon (#1363)

Improvement

  • Handle CSS variable when sanitize (#1339)
  • Import talbe selection and image selection (#1347, #1357, #1355)
  • Officially support image selection (#1345)
  • Remove empty div Between list when backspacing (#1365)

Engineering improvement

  • Improve building speed (#1338)
  • Update README.md (#1341)
  • Enable strict mode for roosterjs-color-utils (#1319)
  • Add test cases for PickerPlugin (#1361)
  • Change the order of karma plugins to better show test coverage (#1371)

Interface change

  • New override of IEditor.select(), now it supports select using a SelectionRangeEx object directly
  • New parameter of getDarkColor()
    • baseLValue: The light value for base dark color in LAB format. Default is the light value for #333333
  • New interface ImageContentMetadata to support storing image selection in undo snapshot
  • New content edit feature
    • mergeListOnBackspaceAfterList: merge list when press BackSpace between lists in a block

RoosterJs 8.34.0

18 Oct 16:25
e71c96b

Choose a tag to compare

Bug fix

  • Image selection: Trigger selection event when click

Improvement

  • Allow insert entity on region root (#1316)

Engineering improvement

  • Finish strict mode change for core package (#1318)
  • Enable strict mode on "roosterjs-editor-plugins" - Phase 1 (#1289)

Interface change

  • New exported API
    • isNodeAfter: Checks if node1 is after node2
  • New parameter of API insertEntity
    • insertToRegionRoot: When pass true, insert the entity at the root level of current region. Parent nodes will be split if need
  • New field of interface InsertOptionBase
    • insertToRegionRoot: Boolean flag for inserting the content onto root node of current region. If current position is not at root of region, break parent node until insert can happen at root of region. This option only takes effect when insertOnNewLine is true, otherwise it will be ignored.

RoosterJs 8.33.1

05 Oct 20:23
fd08bb5

Choose a tag to compare

Bug fix

  • Fix #1310 Context Menu in roosterjs-react is not working (#1309)

RoosterJs 8.33.0

03 Oct 15:47
ba2124e

Choose a tag to compare

New feature

  • Image Selection Part 3 - Selection Event (#1288)
  • Allow remove existing Content Edit features from editor (#1301)

Improvement

  • Keep list chain even after space (#1297, #1302)
  • Improve table pasting behavior to merge pasted table with current table if any (#1265)

Bug fix

  • Comment Removal, remove style attribute instead of removing whole element (#1300)

Interface change

  • New DOM Utility
    • removeImportantStyleRule(): Removes the css important rule from some css properties
  • New method of IEditor and Editor:
    • removeContentEditFeature(): Remove a Content Edit feature.
  • New Event
    • PluginEventType.SelectionChanged: Editor changed the selection. (EXPERIMENTAL FEATURE)
    • SelectionChangedEvent: The event object interface
    • SelectionChangedEventData: Data object for SelectionChangedEvent

RoosterJs 8.32.0

26 Sep 16:30
5a87d17

Choose a tag to compare

New Feature

  • Image selection (still in progress) (#1284, #1286)

Improvement

  • Move normalizeBlockquote from normalizePlugin to Format API (#1250)
  • Add getVisibleViewport function and hide TableSelector when is not inside of the Visible Rect (#1254)
  • Remove Table Selection on Delete Row/Columns (#1260)
  • New experimental feature: Use elements from list stack even if they don't match (#1275)

Bug Fix

  • Fixing a bug where list style type was applied to inner lists even when the type was toggled (#1258)
  • Fix Cell Shade metadata issue for content model table (#1263)
  • Fix maintain list chain (#1267)
  • Remove 'caret-color' css rule when paste (#1283)

Engineering Improvement

  • Try fix Unstable test by fixing clean up after each test (#1277, #1280)
  • Add debug unit test commands to launch.json file (#1278)
  • Add unit test for markdownFeatures (#1272)
  • Enable strict mode for "packages-ui" (#1285)

Interface change

  • New DOM Utility
    • getIntersectedRect: Get the intersected Rect of elements provided
    • saveTableCellMetadata: Add metadata to a table cell
  • New parameter of VList.writeBack(), VListItem.writeBack(), VListChain.commit()
    • shouldReuseAllAncestorListElements: Whether ignore ancestor list types when try to reuse list element for a list
  • New method of IEditor and Editor
    • getVisibleViewport(): Retrieves the rect of the visible viewport of the editor.
  • New property of LifecyclePluginState
    • shadowEditImageSelectionPath: Cached image selection path for original content
  • New experimental features
    • ImageSelection: When a html image is selected, the selected image data will be stored by editor core.
    • ReuseAllAncestorListElements: With this feature enabled, when writing back a list item we will re-use all ancestor list elements
  • New value of SelectionRangeTypes
    • ImageSelection: Selection made in a image.
  • New value of BulletListType
    • Circle: Bullet type circle
  • New interface
    • TableCellMetadataFormat: Format of table cell that stored as metadata
    • ImageSelectionRange: Represents a selected image
  • New Core API and Core API type
    • selectImage: Select a image and save data of the selected range
  • New properties of EditorOptions
    • getVisibleViewport: Retrieves the visible viewport of the Editor. The default viewport is the Rect of the scrollContainer
    • imageSelectionBorderColor: Color of the border of a selectedImage. Default color: '#DB626C'
  • New Plugin
    • ImageSelection: Detect image selection and help highlight the image