Releases: microsoft/roosterjs
Releases · microsoft/roosterjs
RoosterJs 8.59.1 and RoosterJs Content Model 0.21.1
Versioning change
From this version, RoosterJs packages can have different versions for each package.
Currently the latest versions are:
- roosterjs: 8.59.0
- roosterjs-editor-types: 8.59.0
- roosterjs-editor-dom: 8.59.0
- roosterjs-editor-core: 8.59.1
- roosterjs-editor-api: 8.59.0
- roosterjs-editor-plugins: 8.59.1
Bug fixes
- Fix Delimiter Nested Entity Scenario (#2207)
- Only select image on click (#2224)
- Auto format hyphen (#2227)
- Improve table format when apply/remove table header (#2225)
Content Model improvement
- Remove public enum from Content Model (#2204)
- Remove dependency to EditorCore (#2208)
- Support keyboard input (#2221, #2240)
- Keep image port if exist (#2226)
- Fix #2230: Delete selection should keep format (#2231)
- Keep default format when paste into empty editor (#2232)
- Start to create a standalone Content Model editor
- Decouple
ContentModelEditor
fromroosterjs-editor-core
(#2201) - Content Model editor integrate Standalone editor directly (#2206)
- Remove legacy plugin: PendingFormatStatePlugin (#2209)
- Merge DOMEventPlugin and MouseUpPlugin (#2210)
- Create a function to allow creating
StandaloneEditorCore
(#2218) - Port LifecyclePlugin (#2219, #2239)
- Port EntityPlugin (#2223)
- Add a SelectionPlugin (#2236)
- Decouple
Engineering improvement
- Allow each package has its own version when publish (#2233)
RoosterJs 8.59.0 and RoosterJs Content Model 0.20.0
New feature
- When create a list, do not add margins before and after the list (#2150)
Improvement
- Do not set focus when exit shadow edit (#2163)
- Add undo snapshot and trigger ContentChangedEvent when delete node from PickerPlugin (#2173)
- Fix Mouseout behavior to hide table editors (#2181)
- Add image size checkmarks to context menu (#2168)
- Ensure image parent node exist, before select it (#2194)
Content Model improvement
- Use Content Model to handle Delete/Backspace key in more cases (#2162)
- Fix bug in API
setSelection
(#2164) - Properly format new table after edit table (#2165)
- Fix selection issue with entity (#2166)
- Keep original format after paste (#2167)
- Rearrange parameters of iterateSelections (#2180)
- Correctly apply pending format on Android (#2172)
- Fix apply Table Inside borders operation and Demo site (#2184)
- Move formatWithContentModel to be a core API (#2185)
- Allow clear cache from formatContentModel (#2186)
- Potential perf improvement in getFormatState (#2187)
- Move pending format into editor core (#2188)
- Convert DeleteResult from const enum to string literal type (#2191)
- Code reorganization (#2192, #2195, #2196, #2198, #2199, #2200)
Engineering improvement
- Adding module entry to package.json (#2197)
Interface changes
- New member function of class VList
- removeMargins: Remove margin before and after a list
- New parameter of function isResizedTo
- maxError Maximum difference of pixels to still be considered the same size
- New member function of interface ContextMenuItem
- getSelectedId: A callback function to verify which subitem ID should have a checkmark
RoosterJs 8.58.0 and RoosterJs Content Model 0.18.0
New feature
Improvement
- Remove some unnecessary code for Firefox and IE (#2145)
Bug fix
- Improve keyboard event handling for image selection (#2156)
- Remove max-height when paste image (#2158)
Content Model improvement
- Standalone editor preparations (#2136, #2137, #2139, #2144, #2149, #2151, #2152, #2153, #2155)
- Fix Table Cell Border not set after paste a table (#2154)
- Support changing table border (#2146, #2157)
Engineering improvement
- Enable eslint rule: prefer-const, no-var
- Update readme file (#2141, #2142)
- Dependencies version bump (#2134, #2148)
- Other minor fix (#2147)
Interface changes
- New member of interface StyleBasedFormatState and FormatState:
- fontWeight: Font weight of current style
- New member of type TableCellMetadataFormat
- borderOverride: Indicate current cell border has been changed by user's action
- New member of interface ImageEditOptions
- applyChangesOnMouseUp: When pass true, image edit changes will be applied when mouse up. Otherwise it will only be applied when click away.
RoosterJs 8.57.0 and Roosterjs Content Model 0.17.0
New feature
Bug fix
- Fix PickerPlugin to allow handling delete operation other than A tag (#2116)
- Fix typing issue on image selection (#2118, #2131)
- Remove max height of image when edit (#2122)
- Catch error and continue when dispose editor (#2129)
Content Model improvement
- Bug fix: List number fix for table block (#2095)
- Advanced cache implementation (#2083, #2114, #2128)
- Fix link underline on images (#2100)
- Standalone editor - Remove dependencies to original editor code (#2106, #2103, #2115, #2107, #2123, #2127)
- Improve image selection on shadow edit (#2110)
- Move default format logic into ContentModelFormatPlugin (#2099)
- Move copy entity related code to copyPastePlugin (#2111)
- Fix Excel Border issue when pasting (#2121)
- Paste/Insert Image according to the visible viewport (#2126)
- Do not focus to editor when formatWithContentModel (#2130)
Graduate features
Engineering improvement
Interface changes
- New public methods, enums and types for announcing:
- function convertDecimalsToAlpha: Convert decimal numbers into english alphabet letters
- function convertDecimalsToRoman: Convert decimal numbers into roman numbers
- const enum KnownAnnounceStrings: Known announce strings
- interface AnnounceData: Represents data, that can be used to announce text to screen reader
- New member function getAnnounceData() in interface ContentChangedData to get announcing data from event
- type AnnounceFeatureKey: Announce feature keys
- interface AnnounceFeature: Represents a Announce feature used in Announce Plugin
- New editor options and EditorCore member
- disposeErrorHandler: A callback to be invoked when any exception is thrown during disposing editor
RoosterJs 8.56.0 and RoosterJs Content Model 0.16.0
Improvement
- Fix image rotator handle height (#2071)
- Select new row/column after insertion (#2094)
- Do not restore cached selection when call select (#2075)
Bug fix
- Fix null check bug in emoji picker (#2089)
Content Model improvement
- Fix line space when reduce font size (#2059)
- Improve customization API (#2068, #2054, #2064)
- Remove Segment format from the pasted content when the format merge option is equal to none (#2073)
- Remove empty link when normalize model (#2077)
- Improve cache (#2066)
- Fix table whole cell alignment (#2082)
- Pass out segment nodes from segment handlers (#2079)
- Content Model: Improve adjustWordSelection (#2087)
- Do not consider Bold, Italic and Underline from ContentModelDocument when retrieving the FormatState (#2081)
- Add model into ContentChangedEvent (#2076)
- Fix text color in in cells with shade. (#2091)
- Clear table selection fix (#2086)
- Remove "contenteditable" when copy (#2092)
Feature graduation
- Graduate feature AutoFormatList (#2062)
Engineering improvement
- Improve error message of check depenedency (#2085)
Interface change
- New proprty of interface DOMEventPluginState
- skipReselectOnFocus: When set to true, onFocus event will not trigger reselect cached range
RoosterJs 8.55.0 and RoosterJs Content Model 0.15.0
Improvement
- Keep image selection when editing (#2049)
Content Model improvement
- Remove deprecated colors from borders, text and background (#2045)
- Improve insertEntity (#2047)
- Fix selection of entity (#2051)
- Always return size in pt when getFormatState (#2052)
- Trigger ShadowEdit events (#2053, #2058)
- Add solid paragraph in new table cell (#2055)
- Do color transform for entity when copy/paste (#2056)
- Paste plain text applies current format (#2057)
Interface changes
- New parameter of editor API transformToDarkColor
- direction: Define the color transformation direction
RoosterJs 8.54.0 and RoosterJs Content Model 0.14.0
Improvement
- Do not allow dragging on readonly content (#2010)
- Skip Trigger plugin event on plain text paste (#2011)
- Image edit: Improve rotate handle calculation (#2017)
- Rename "header" to "heading" (#2020)
- Fix tripple clicking behavior (#2024)
- Replace content of first selected table cell when type (#2030)
Bug fix
- Fix image crop handle bug (#2019)
- Fix missing table cell issue (#2027)
- Fix flipped image issue (#2028)
- Fix regression when creating the BeforePasteEvent (#2039)
Content Model improvement
- Improve cache behavior (#1999)
- Support more unit type of font size (#2012)
- Improve image tag fidelity (#2013)
- Refactor API
formatWithContentModel
(#2001, #2002) - Improve pasting table behavior (#2016, #2022)
- New API:
insertEntity
based on Content Model (#1800) - Rename a test file (#2029)
- Remove "display: flex" when paste (#2031)
- Cut content should also remove list bullet (#2035)
- Improve table fidelity (#2036)
- Delete empty container when delete table (#2037)
- Simplify the domToModel call in paste.ts (#2040)
- Support vertical-align for image (#2041)
Engineering improvement
- Fix insert link button in Content Model ribbon (#2018)
Interface changes
- Rename "header" to "heading" and keep the old types/interfaces for compatibility
- Rename API
toggleHeader
tosetHeadingLevel
- Rename
ElementBasedFormatState.headerLevel
toElementBasedFormatState.headingLevel
- Rename
KnonwnRibbonButtonKey.Header
toKnonwnRibbonButtonKey.Heading
(roosterjs-react) - Rename type
HeaderButtonStringKey
toHeadingButtonStringKey
and all its child type names (roosterjs-react)
- Rename API
- Export new function for roosterjs-react
- New API
showInputDialog
- New interface
DialogItem
- New API
RoosterJs 8.53.0 and RoosterJs Content Model 0.13.0
Bug fix
- Fix table resize UI when editor is put on a high-zIndex container (#1984, #2005, #2007)
- Do not do table or image selection in entity (#1995)
- Fix rotator and side resize handles visibility for image edit (#2008)
Content Model improvement
- Allow customizing merge model behavior when paste (#1993)
- Graduate experimental features:
- ReusableContentModel
- EditWithContentModel
Engineering improvement
- Fix test cases for Firefox 116 (#1996)
Interface changes
- New parameter of TableResize constructor
- anchorContainerSelector: An optional selector string to specify the container to host the plugin
RoosterJs 8.52.0 and RoosterJs Content Model 0.12.0
Bug fix
- [Table] Inserted row/column disappear after make changes for the table (#1957)
- Image edit: Remove style width/height (#1961, #1978)
Improvement
- Make cell vertical alignment 'top' as default. (#1944)
- Remove image alternative text when change picture (#1983)
Content Model improvement
- Paste: Do not inherit styles in Sanitizer, and instead let Content Model Handle the style merge (#1955)
- Fix #1953 Content Model: Delete the only character loses format under implicit paragraph (#1956_
- [Table] Aligning whole table not working correctly (#1958)
- [Format]Switching between bullets and numbering need to click the button twice (#1960)
- Remove SegmentFormat when merging Heading (#1959)
- Couple of fixes for Word Online Paste (#1965)
- Content Model code improvement 3: Refactor List (#1936, #1974)
- Merge Table on Paste only if the document contains a single element and it is a table (#1968)
- Add more classNames to the WacElement detection (#1967)
- Allow custom merge behavior when paste (#1963)
- Reorganize some code (#1973)
- Handle key down events in content model only if was not handled by EditFeature (#1972)
- Bug fix: The inline picture will be also highlighted if text is highlighted (#1979)
- Bug fix: Highlighting text should remove selection (#1980)
- Bug fix: Cannot delete multiple entities at once (#1986)
- Bug fix: [Table]The cursor goes to the end after delete table (#1982)
Engineering improvement
- Fix line number of test cases (#1962)
- Demo site improvement for Content Model (#1966)
- Demo site improvement: Rename FormatPainterPlugin (#1969)
- Improve test process (#1977)
- Use Yarn workspace (#1987)
- Move createFragmentFromClipboardData back to core package (#1989)
- Try fix test code build issue (#1991)
Interface change
- New parameter of API extractClipboardItems and interface ClipboartData
- pasteNativeEvent: Whether the paste event is triggered from native paste event
- New parameter of API removeMetadata
- metadataKey: Key of the metadata to remove. If not passed, remove whole metadata object
- New base interface of interface PluginKeyDownEvent
- PluginKeyDownEventData: Data of PluginkeyDownEvent
- New member of interface TableFormat
- verticalAlign: Vertical align of each cell
- New member of interface TableCellMetadataFormat
- vAlignOverride: Whether override the vertical alignment of this cell and do not respect the value of table metadata
- Removed API (breaking change)
- createdFragmentFromClipboardData