tinymce
Version:
Web based JavaScript HTML WYSIWYG editor control.
599 lines (533 loc) • 209 kB
Markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
## 6.0.1 - 2022-03-23
### Fixed
- Fixed the dev ZIP missing the required `bin` scripts to build from the source #TINY-8542
- Fixed a regression whereby text patterns couldn't be updated at runtime #TINY-8540
- Fixed an issue where tables with colgroups could be copied incorrectly in some cases #TINY-8568
- Naked buttons better adapt to various background colors, improved text contrast in notifications #TINY-8533
- The autocompleter would not fire the `AutocompleterStart` event nor close the menu in some cases #TINY-8552
- It wasn't possible to select text right after an inline noneditable element #TINY-8567
- Fixed a double border showing for the `tinymce-5` skin when using `toolbar_location: 'bottom'` #TINY-8564
- Clipboard content was not generated correctly when cutting and copying `contenteditable="false"` elements #TINY-8563
- Fixed the box-shadow getting clipped in autocompletor popups #TINY-8573
- The `buttonType` property did not work for dialog footer buttons #TINY-8582
- Fix contrast ratio for error messages #TINY-8586
## 6.0.0 - 2022-03-03
### Added
- New `editor.options` API to replace the old `editor.settings` and `editor.getParam` APIs #TINY-8206
- New `editor.annotator.removeAll` API to remove all annotations by name #TINY-8195
- New `Resource.unload` API to make it possible to unload resources #TINY-8431
- New `FakeClipboard` API on the `tinymce` global #TINY-8353
- New `dispatch()` function to replace the now deprecated `fire()` function in various APIs #TINY-8102
- New `AutocompleterStart`, `AutocompleterUpdate` and `AutocompleterEnd` events #TINY-8279
- New `mceAutocompleterClose`, `mceAutocompleterReload` commands #TINY-8279
- New `mceInsertTableDialog` command to open the insert table dialog #TINY-8273
- New `slider` dialog component #TINY-8304
- New `imagepreview` dialog component, allowing preview and zoom of any image URL #TINY-8333
- New `buttonType` property on dialog button components, supporting `toolbar` style in addition to `primary` and `secondary` #TINY-8304
- The `tabindex` attribute is now copied from the target element to the iframe #TINY-8315
### Improved
- New default theme styling for TinyMCE 6 facelift with old skin available as `tinymce-5` and `tinymce-5-dark` #TINY-8373
- The default height of editor has been increased from `200px` to `400px` to improve the usability of the editor #TINY-6860
- The upload results returned from the `editor.uploadImages()` API now includes a `removed` flag, reflecting if the image was removed after a failed upload #TINY-7735
- The `ScriptLoader`, `StyleSheetLoader`, `AddOnManager`, `PluginManager` and `ThemeManager` APIs will now return a `Promise` when loading resources instead of using callbacks #TINY-8325
- A `ThemeLoadError` event is now fired if the theme fails to load #TINY-8325
- The `BeforeSetContent` event will now include the actual serialized content when passing in an `AstNode` to the `editor.setContent` API #TINY-7996
- Improved support for placing the caret before or after noneditable elements within the editor #TINY-8169
- Calls to `editor.selection.setRng` now update the caret position bookmark used when focus is returned to the editor #TINY-8450
- The `emoticon` plugin dialog, toolbar and menu item has been updated to use the more accurate `Emojis` term #TINY-7631
- The dialog `redial` API will now only rerender the changed components instead of the whole dialog #TINY-8334
- The dialog API `setData` method now uses a deep merge algorithm to support partial nested objects #TINY-8333
- The dialog spec `initialData` type is now `Partial<T>` to match the underlying implementation details #TINY-8334
- Notifications no longer require a timeout to disable the close button #TINY-6679
- The editor theme is now fetched in parallel with the icons, language pack and plugins #TINY-8453
### Changed
- TinyMCE is now MIT licensed #TINY-2316
- Moved the `paste` plugin's functionality to TinyMCE core #TINY-8310
- The `paste_data_images` option now defaults to `true` #TINY-8310
- Moved the `noneditable` plugin to TinyMCE core #TINY-8311
- Renamed the `noneditable_noneditable_class` option to `noneditable_class` #TINY-8311
- Renamed the `noneditable_editable_class` option to `editable_class` #TINY-8311
- Moved the `textpattern` plugin to TinyMCE core #TINY-8312
- Renamed the `textpattern_patterns` option to `text_patterns` #TINY-8312
- Moved the `hr` plugin's functionality to TinyMCE core #TINY-8313
- Moved the `print` plugin's functionality to TinyMCE core #TINY-8314
- Moved non-UI table functionality to core #TINY-8273
- The `DomParser` API no longer uses a custom parser internally and instead uses the native `DOMParser` API #TINY-4627
- The `editor.getContent()` API can provide custom content by preventing and overriding `content` in the `BeforeGetContent` event. This makes it consistent with the `editor.selection.getContent()` API #TINY-8018
- The `editor.setContent()` API can now be prevented using the `BeforeSetContent` event. This makes it consistent with the `editor.selection.setContent()` API #TINY-8018
- Add-ons such as plugins and themes are no longer constructed using the `new` operator #TINY-8256
- A number of APIs that were not proper classes, are no longer constructed using the `new` operator #TINY-8322
- The Editor commands APIs will no longer fallback to executing the browsers native command functionality #TINY-7829
- The Editor query command APIs will now return `false` or an empty string on removed editors #TINY-7829
- The `mceAddEditor` and `mceToggleEditor` commands now take an object as their value to specify the id and editor options #TINY-8138
- The `mceInsertTable` command can no longer open the insert table dialog. Use the `mceInsertTableDialog` command instead #TINY-8273
- The `plugins` option now returns a `string` array instead of a space separated string #TINY-8455
- The `media` plugin no longer treats `iframe`, `video`, `audio` or `object` elements as "special" and will validate the contents against the schema #TINY-8382
- The `images_upload_handler` option is no longer passed a `success` or `failure` callback and instead requires a `Promise` to be returned with the upload result #TINY-8325
- The `tinymce.settings` global property is no longer set upon initialization #TINY-7359
- The `change` event is no longer fired on first modification #TINY-6920
- The `GetContent` event will now always pass a `string` for the `content` property #TINY-7996
- Changed the default tag for the strikethrough format to the `s` tag when using a html 5 schema #TINY-8262
- The `strike` tag is automatically converted to the `s` tag when using a html 5 schema #TINY-8262
- Aligning a table to the left or right will now use margin styling instead of float styling #TINY-6558
- The `:` control character has been changed to `~` for the schema `valid_elements` and `extended_valid_elements` options #TINY-6726
- The `primary` property on dialog buttons has been deprecated. Use the new `buttonType` property instead #TINY-8304
- Changed the default statusbar element path delimiter from `»` to `›` #TINY-8372
- Replaced the `Powered by Tiny` branding text with the Tiny logo #TINY-8371
- The default minimum height of editor has been changed to 100px to prevent the UI disappearing while resizing #TINY-6860
- RGB colors are no longer converted to hex values when parsing or serializing content #TINY-8163
- Replaced the `isDisabled()` function with an `isEnabled()` function for various APIs #TINY-8101
- Replaced the `enable()` and `disable()` functions with a `setEnabled(state)` function in various APIs #TINY-8101
- Replaced the `disabled` property with an `enabled` property in various APIs #TINY-8101
- Replaced the `disable(name)` and `enable(name)` functions with a `setEnabled(name, state)` function in the Dialog APIs #TINY-8101
- Renamed the `tinymce.Env.os.isOSX` API to `tinymce.Env.os.isMacOS` #TINY-8175
- Renamed the `tinymce.Env.browser.isChrome` API to `tinymce.Env.browser.isChromium` to better reflect its functionality #TINY-8300
- Renamed the `getShortEndedElements` Schema API to `getVoidElements` #TINY-8344
- Renamed the `font_formats` option to `font_family_formats` #TINY-8328
- Renamed the `fontselect` toolbar button and `fontformats` menu item to `fontfamily` #TINY-8328
- Renamed the `fontsize_formats` option to `font_size_formats` #TINY-8328
- Renamed the `fontsizeselect` toolbar button and `fontsizes` menu item to `fontsize` #TINY-8328
- Renamed the `formatselect` toolbar button and `blockformats` menu item to `blocks` #TINY-8328
- Renamed the `styleselect` toolbar button and `formats` menu item to `styles` #TINY-8328
- Renamed the `lineheight_formats` option to `line_height_formats` #TINY-8328
- Renamed the `getWhiteSpaceElements()` function to `getWhitespaceElements()` in the `Schema` API #TINY-8102
- Renamed the `mceInsertClipboardContent` command `content` property to `html` to better reflect what data is passed #TINY-8310
- Renamed the `default_link_target` option to `link_default_target` for both `link` and `autolink` plugins #TINY-4603
- Renamed the `rel_list` option to `link_rel_list` for the `link` plugin #TINY-4603
- Renamed the `target_list` option to `link_target_list` for the `link` plugin #TINY-4603
- The default value for the `link_default_protocol` option has been changed to `https` instead of `http` #TINY-7824
- The default value for the `element_format` option has been changed to `html` #TINY-8263
- The default value for the `schema` option has been changed to `html5` #TINY-8261
- The default value for the `table_style_by_css` option has been changed to `true` #TINY-8259
- The default value for the `table_use_colgroups` option has been changed to `true` #TINY-8259
### Fixed
- The object returned from the `editor.fire()` API was incorrect if the editor had been removed #TINY-8018
- The `editor.selection.getContent()` API did not respect the `no_events` argument #TINY-8018
- The `editor.annotator.remove` API did not keep selection when removing the annotation #TINY-8195
- The `GetContent` event was not fired when getting `tree` or `text` formats using the `editor.selection.getContent()` API #TINY-8018
- The `beforeinput` and `input` events would sometimes not fire as expected when deleting content #TINY-8168 #TINY-8329
- The `table` plugin would sometimes not correctly handle headers in the `tfoot` section #TINY-8104
- The `silver` theme UI was incorrectly rendered before plugins had initialized #TINY-8288
- The aria labels for the color picker dialog were not translated #TINY-8381
- Fixed sub-menu items not read by screen readers. Patch contributed by westonkd #TINY-8417
- Dialog labels and other text-based UI properties did not escape HTML markup #TINY-7524
- Anchor elements would render incorrectly when using the `allow_html_in_named_anchor` option #TINY-3799
- The `AstNode` HTML serializer did not serialize `pre` or `textarea` elements correctly when they contained newlines #TINY-8446
- Fixed sub-menu items not read by screen readers. Patch contributed by westonkd #TINY-8417
- The Home or End keys would move out of a editable element contained within a noneditable element #TINY-8201
- Dialogs could not be opened in inline mode before the editor had been rendered #TINY-8397
- Clicking on menu items could cause an unexpected console warning if the `onAction` function caused the menu to close #TINY-8513
- Fixed various color and contrast issues for the dark skins #TINY-8527
### Removed
- Removed support for Microsoft Internet Explorer 11 #TINY-8194 #TINY-8241
- Removed support for Microsoft Word from the opensource paste functionality #TINY-7493
- Removed support for the `plugins` option allowing a mixture of a string array and of space separated strings #TINY-8399
- Removed support for the deprecated `false` value for the `forced_root_block` option #TINY-8260
- Removed the jQuery integration #TINY-4519
- Removed the `imagetools` plugin, which is now classified as a Premium plugin #TINY-8209
- Removed the `imagetools` dialog component #TINY-8333
- Removed the `toc` plugin, which is now classified as a Premium plugin #TINY-8250
- Removed the `tabfocus` plugin #TINY-8315
- Removed the `textpattern` plugin's API as part of moving it to core #TINY-8312
- Removed the `table` plugin's API #TINY-8273
- Removed the callback for the `EditorUpload` API #TINY-8325
- Removed the legacy browser detection properties from the `Env` API #TINY-8162
- Removed the `filterNode` method from the `DomParser` API #TINY-8249
- Removed the `SaxParser` API #TINY-8218
- Removed the `tinymce.utils.Promise` API #TINY-8241
- Removed the `toHex` function for the `DOMUtils` and `Styles` APIs #TINY-8163
- Removed the `execCommand` handler function from the plugin and theme interfaces #TINY-7829
- Removed the `editor.settings` property as it has been replaced by the new Options API #TINY-8236
- Removed the `shortEnded` and `fixed` properties on `tinymce.html.Node` class #TINY-8205
- Removed the `mceInsertRawHTML` command #TINY-8214
- Removed the style field from the `image` plugin dialog advanced tab #TINY-3422
- Removed the `paste_filter_drop` option as native drag and drop handling is no longer supported #TINY-8511
- Removed the legacy `mobile` theme #TINY-7832
- Removed the deprecated `$`, `Class`, `DomQuery` and `Sizzle` APIs #TINY-4520 #TINY-8326
- Removed the deprecated `Color`, `JSON`, `JSONP` and `JSONRequest` #TINY-8162
- Removed the deprecated `XHR` API #TINY-8164
- Removed the deprecated `setIconStroke` Split Toolbar Button API #TINY-8162
- Removed the deprecated `editors` property from `EditorManager` #TINY-8162
- Removed the deprecated `execCallback` and `setMode` APIs from `Editor` #TINY-8162
- Removed the deprecated `addComponents` and `dependencies` APIs from `AddOnManager` #TINY-8162
- Removed the deprecated `clearInterval`, `clearTimeout`, `debounce`, `requestAnimationFrame`, `setInterval`, `setTimeout` and `throttle` APIs from `Delay` #TINY-8162
- Removed the deprecated `Schema` options #TINY-7821
- Removed the deprecated `file_browser_callback_types`, `force_hex_style_colors` and `images_dataimg_filter` options #TINY-7823
- Removed the deprecated `filepicker_validator_handler`, `force_p_newlines`, `gecko_spellcheck`, `tab_focus`, `table_responsive_width` and `toolbar_drawer` options #TINY-7820
- Removed the deprecated `media_scripts` option in the `media` plugin #TINY-8421
- Removed the deprecated `editor_deselector`, `editor_selector`, `elements`, `mode` and `types` legacy TinyMCE init options #TINY-7822
- Removed the deprecated `content_editable_state` and `padd_empty_with_br` options #TINY-8400
- Removed the deprecated `autoresize_on_init` option from the `autoresize` plugin #TINY-8400
- Removed the deprecated `fullpage`, `spellchecker`, `bbcode`, `legacyoutput`, `colorpicker`, `contextmenu` and `textcolor` plugins #TINY-8192
- Removed the undocumented `editor.editorCommands.hasCustomCommand` API #TINY-7829
- Removed the undocumented `mceResetDesignMode`, `mceRepaint` and `mceBeginUndoLevel` commands #TINY-7829
### Deprecated
- The dialog button component's `primary` property has been deprecated and will be removed in the next major release. Use the new `buttonType` property instead #TINY-8304
- The `fire()` function of `tinymce.Editor`, `tinymce.dom.EventUtils`, `tinymce.dom.DOMUtils`, `tinymce.util.Observable` and `tinymce.util.EventDispatcher` has been deprecated and will be removed in the next major release. Use the `dispatch()` function instead #TINY-8102
- The `content` property on the `SetContent` event has been deprecated and will be removed in the next major release #TINY-8457
- The return value of the `editor.setContent` API has been deprecated and will be removed in the next major release #TINY-8457
## 5.10.3 - 2022-02-09
### Fixed
- Alignment would sometimes be removed on parent elements when changing alignment on certain inline nodes, such as images #TINY-8308
- The `fullscreen` plugin would reset the scroll position when exiting fullscreen mode #TINY-8418
## 5.10.2 - 2021-11-17
### Fixed
- Internal selectors were appearing in the style list when using the `importcss` plugin #TINY-8238
## 5.10.1 - 2021-11-03
### Fixed
- The iframe aria help text was not read by some screen readers #TINY-8171
- Clicking the `forecolor` or `backcolor` toolbar buttons would do nothing until selecting a color #TINY-7836
- Crop functionality did not work in the `imagetools` plugin when the editor was rendered in a shadow root #TINY-6387
- Fixed an exception thrown on Safari when closing the `searchreplace` plugin dialog #TINY-8166
- The `autolink` plugin did not convert URLs to links when starting with a bracket #TINY-8091
- The `autolink` plugin incorrectly created nested links in some cases #TINY-8091
- Tables could have an incorrect height set on rows when rendered outside of the editor #TINY-7699
- In certain circumstances, the table of contents plugin would incorrectly add an extra empty list item #TINY-4636
- The insert table grid menu displayed an incorrect size when re-opening the grid #TINY-6532
- The word count plugin was treating the zero width space character (`​`) as a word #TINY-7484
## 5.10.0 - 2021-10-11
### Added
- Added a new `URI.isDomSafe(uri)` API to check if a URI is considered safe to be inserted into the DOM #TINY-7998
- Added the `ESC` key code constant to the `VK` API #TINY-7917
- Added a new `deprecation_warnings` setting for turning off deprecation console warning messages #TINY-8049
### Improved
- The `element` argument of the `editor.selection.scrollIntoView()` API is now optional, and if it is not provided the current selection will be scrolled into view #TINY-7291
### Changed
- The deprecated `scope` attribute is no longer added to `td` cells when converting a row to a header row #TINY-7731
- The number of `col` elements is normalized to match the number of columns in a table after a table action #TINY-8011
### Fixed
- Fixed a regression that caused block wrapper formats to apply and remove incorrectly when using a collapsed selection with multiple words #TINY-8036
- Resizing table columns in some scenarios would resize the column to an incorrect position #TINY-7731
- Inserting a table where the parent element had padding would cause the table width to be incorrect #TINY-7991
- The resize backdrop element did not have the `data-mce-bogus="all"` attribute set to prevent it being included in output #TINY-7854
- Resize handles appeared on top of dialogs and menus when using an inline editor #TINY-3263
- Fixed the `autoresize` plugin incorrectly scrolling to the top of the editor content in some cases when changing content #TINY-7291
- Fixed the `editor.selection.scrollIntoView()` type signature, as it incorrectly required an `Element` instead of `HTMLElement` #TINY-7291
- Table cells that were both row and column headers did not retain the correct state when converting back to a regular row or column #TINY-7709
- Clicking beside a non-editable element could cause the editor to incorrectly scroll to the top of the content #TINY-7062
- Clicking in a table cell, with a non-editable element in an adjacent cell, incorrectly caused the non-editable element to be selected #TINY-7736
- Split toolbar buttons incorrectly had nested `tabindex="-1"` attributes #TINY-7879
- Fixed notifications rendering in the wrong place initially and when the page was scrolled #TINY-7894
- Fixed an exception getting thrown when the number of `col` elements didn't match the number of columns in a table #TINY-7041 #TINY-8011
- The table selection state could become incorrect after selecting a noneditable table cell #TINY-8053
- As of Mozilla Firefox 91, toggling fullscreen mode with `toolbar_sticky` enabled would cause the toolbar to disappear #TINY-7873
- Fixed URLs not cleaned correctly in some cases in the `link` and `image` plugins #TINY-7998
- Fixed the `image` and `media` toolbar buttons incorrectly appearing to be in an inactive state in some cases #TINY-3463
- Fixed the `editor.selection.selectorChanged` API not firing if the selector matched the current selection when registered in some cases #TINY-3463
- Inserting content into a `contenteditable="true"` element that was contained within a `contenteditable="false"` element would move the selection to an incorrect location #TINY-7842
- Dragging and dropping `contenteditable="false"` elements could result in the element being placed in an unexpected location #TINY-7917
- Pressing the Escape key would not cancel a drag action that started on a `contenteditable="false"` element within the editor #TINY-7917
- `video` and `audio` elements were unable to be played when the `media` plugin live embeds were enabled in some cases #TINY-7674
- Pasting images would throw an exception if the clipboard `items` were not files (for example, screenshots taken from gnome-software). Patch contributed by cedric-anne #TINY-8079
### Deprecated
- Several APIs have been deprecated. See the release notes section for information #TINY-8023 #TINY-8063
- Several Editor settings have been deprecated. See the release notes section for information #TINY-8086
- The Table of Contents and Image Tools plugins will be classified as Premium plugins in the next major release #TINY-8087
- Word support in the `paste` plugin has been deprecated and will be removed in the next major release #TINY-8087
## 5.9.2 - 2021-09-08
### Fixed
- Fixed an exception getting thrown when disabling events and setting content #TINY-7956
- Delete operations could behave incorrectly if the selection crossed a table boundary #TINY-7596
## 5.9.1 - 2021-08-27
### Fixed
- Published TinyMCE types failed to compile in strict mode #TINY-7915
- The `TableModified` event sometimes didn't fire when performing certain table actions #TINY-7916
## 5.9.0 - 2021-08-26
### Added
- Added a new `mceFocus` command that focuses the editor. Equivalent to using `editor.focus()` #TINY-7373
- Added a new `mceTableToggleClass` command which toggles the provided class on the currently selected table #TINY-7476
- Added a new `mceTableCellToggleClass` command which toggles the provided class on the currently selected table cells #TINY-7476
- Added a new `tablecellvalign` toolbar button and menu item for vertical table cell alignment #TINY-7477
- Added a new `tablecellborderwidth` toolbar button and menu item to change table cell border width #TINY-7478
- Added a new `tablecellborderstyle` toolbar button and menu item to change table cell border style #TINY-7478
- Added a new `tablecaption` toolbar button and menu item to toggle captions on tables #TINY-7479
- Added a new `mceTableToggleCaption` command that toggles captions on a selected table #TINY-7479
- Added a new `tablerowheader` toolbar button and menu item to toggle the header state of row cells #TINY-7478
- Added a new `tablecolheader` toolbar button and menu item to toggle the header state of column cells #TINY-7482
- Added a new `tablecellbordercolor` toolbar button and menu item to select table cell border colors, with an accompanying setting `table_border_color_map` to customize the available values #TINY-7480
- Added a new `tablecellbackgroundcolor` toolbar button and menu item to select table cell background colors, with an accompanying setting `table_background_color_map` to customize the available values #TINY-7480
- Added a new `language` menu item and toolbar button to add `lang` attributes to content, with an accompanying `content_langs` setting to specify the languages available #TINY-6149
- A new `lang` format is now available that can be used with `editor.formatter`, or applied with the `Lang` editor command #TINY-6149
- Added a new `language` icon for the `language` toolbar button #TINY-7670
- Added a new `table-row-numbering` icon #TINY-7327
- Added new plugin commands: `mceEmoticons` (Emoticons), `mceWordCount` (Word Count), and `mceTemplate` (Template) #TINY-7619
- Added a new `iframe_aria_text` setting to set the iframe title attribute #TINY-1264
- Added a new DomParser `Node.children()` API to return all the children of a `Node` #TINY-7756
### Improved
- Sticky toolbars can now be offset from the top of the page using the new `toolbar_sticky_offset` setting #TINY-7337
- Fancy menu items now accept an `initData` property to allow custom initialization data #TINY-7480
- Improved the load time of the `fullpage` plugin by using the existing editor schema rather than creating a new one #TINY-6504
- Improved the performance when UI components are rendered #TINY-7572
- The context toolbar no longer unnecessarily repositions to the top of large elements when scrolling #TINY-7545
- The context toolbar will now move out of the way when it overlaps with the selection, such as in table cells #TINY-7192
- The context toolbar now uses a short animation when transitioning between different locations #TINY-7740
- `Env.browser` now uses the User-Agent Client Hints API where it is available #TINY-7785
- Icons with a `-rtl` suffix in their name will now automatically be used when the UI is rendered in right-to-left mode #TINY-7782
- The `formatter.match` API now accepts an optional `similar` parameter to check if the format partially matches #TINY-7712
- The `formatter.formatChanged` API now supports providing format variables when listening for changes #TINY-7713
- The formatter will now fire `FormatApply` and `FormatRemove` events for the relevant actions #TINY-7713
- The `autolink` plugin link detection now permits custom protocols #TINY-7714
- The `autolink` plugin valid link detection has been improved #TINY-7714
### Changed
- Changed the load order so content CSS is loaded before the editor is populated with content #TINY-7249
- Changed the `emoticons`, `wordcount`, `code`, `codesample`, and `template` plugins to open dialogs using commands #TINY-7619
- The context toolbar will no longer show an arrow when it overlaps the content, such as in table cells #TINY-7665
- The context toolbar will no longer overlap the statusbar for toolbars using `node` or `selection` positions #TINY-7666
### Fixed
- The `editor.fire` API was incorrectly mutating the original `args` provided #TINY-3254
- Unbinding an event handler did not take effect immediately while the event was firing #TINY-7436
- Binding an event handler incorrectly took effect immediately while the event was firing #TINY-7436
- Unbinding a native event handler inside the `remove` event caused an exception that blocked editor removal #TINY-7730
- The `SetContent` event contained the incorrect `content` when using the `editor.selection.setContent()` API #TINY-3254
- The editor content could be edited after calling `setProgressState(true)` in iframe mode #TINY-7373
- Tabbing out of the editor after calling `setProgressState(true)` behaved inconsistently in iframe mode #TINY-7373
- Flash of unstyled content while loading the editor because the content CSS was loaded after the editor content was rendered #TINY-7249
- Partially transparent RGBA values provided in the `color_map` setting were given the wrong hex value #TINY-7163
- HTML comments with mismatched quotes were parsed incorrectly under certain circumstances #TINY-7589
- The editor could crash when inserting certain HTML content #TINY-7756
- Inserting certain HTML content into the editor could result in invalid HTML once parsed #TINY-7756
- Links in notification text did not show the correct mouse pointer #TINY-7661
- Using the Tab key to navigate into the editor on Microsoft Internet Explorer 11 would incorrectly focus the toolbar #TINY-3707
- The editor selection could be placed in an incorrect location when undoing or redoing changes in a document containing `contenteditable="false"` elements #TINY-7663
- Menus and context menus were not closed when clicking into a different editor #TINY-7399
- Context menus on Android were not displayed when more than one HTML element was selected #TINY-7688
- Disabled nested menu items could still be opened #TINY-7700
- The nested menu item chevron icon was not fading when the menu item was disabled #TINY-7700
- `imagetools` buttons were incorrectly enabled for remote images without `imagetools_proxy` set #TINY-7772
- Only table content would be deleted when partially selecting a table and content outside the table #TINY-6044
- The table cell selection handling was incorrect in some cases when dealing with nested tables #TINY-6298
- Removing a table row or column could result in the cursor getting placed in an invalid location #TINY-7695
- Pressing the Tab key to navigate through table cells did not skip noneditable cells #TINY-7705
- Clicking on a noneditable table cell did not show a visual selection like other noneditable elements #TINY-7724
- Some table operations would incorrectly cause table row attributes and styles to be lost #TINY-6666
- The selection was incorrectly lost when using the `mceTableCellType` and `mceTableRowType` commands #TINY-6666
- The `mceTableRowType` was reversing the order of the rows when converting multiple header rows back to body rows #TINY-6666
- The table dialog did not always respect the `table_style_with_css` option #TINY-4926
- Pasting into a table with multiple cells selected could cause the content to be pasted in the wrong location #TINY-7485
- The `TableModified` event was not fired when pasting cells into a table #TINY-6939
- The table paste column before and after icons were not flipped in RTL mode #TINY-7851
- Fixed table corruption when deleting a `contenteditable="false"` cell #TINY-7891
- The `dir` attribute was being incorrectly applied to list items #TINY-4589
- Applying selector formats would sometimes not apply the format correctly to elements in a list #TINY-7393
- For formats that specify an attribute or style that should be removed, the formatter `match` API incorrectly returned `false` #TINY-6149
- The type signature on the `formatter.matchNode` API had the wrong return type (was `boolean` but should have been `Formatter | undefined`) #TINY-6149
- The `formatter.formatChanged` API would ignore the `similar` parameter if another callback had already been registered for the same format #TINY-7713
- The `formatter.formatChanged` API would sometimes not run the callback the first time the format was removed #TINY-7713
- Base64 encoded images with spaces or line breaks in the data URI were not displayed correctly. Patch contributed by RoboBurned
### Deprecated
- The `bbcode`, `fullpage`, `legacyoutput`, and `spellchecker` plugins have been deprecated and marked for removal in the next major release #TINY-7260
## 5.8.2 - 2021-06-23
### Fixed
- Fixed an issue when pasting cells from tables containing `colgroup`s into tables without `colgroup`s #TINY-6675
- Fixed an issue that could cause an invalid toolbar button state when multiple inline editors were on a single page #TINY-6297
## 5.8.1 - 2021-05-20
### Fixed
- An unexpected exception was thrown when switching to readonly mode and adjusting the editor width #TINY-6383
- Content could be lost when the `pagebreak_split_block` setting was enabled #TINY-3388
- The `list-style-type: none;` style on nested list items was incorrectly removed when clearing formatting #TINY-6264
- URLs were not always detected when pasting over a selection. Patch contributed by jwcooper #TINY-6997
- Properties on the `OpenNotification` event were incorrectly namespaced #TINY-7486
## 5.8.0 - 2021-05-06
### Added
- Added the `PAGE_UP` and `PAGE_DOWN` key code constants to the `VK` API #TINY-4612
- The editor resize handle can now be controlled using the keyboard #TINY-4823
- Added a new `fixed_toolbar_container_target` setting which renders the toolbar in the specified `HTMLElement`. Patch contributed by pvrobays
### Improved
- The `inline_boundaries` feature now supports the `home`, `end`, `pageup`, and `pagedown` keys #TINY-4612
- Updated the `formatter.matchFormat` API to support matching formats with variables in the `classes` property #TINY-7227
- Added HTML5 `audio` and `video` elements to the default alignment formats #TINY-6633
- Added support for alpha list numbering to the list properties dialog #TINY-6891
### Changed
- Updated the `image` dialog to display the class list dropdown as full-width if the caption checkbox is not present #TINY-6400
- Renamed the "H Align" and "V Align" input labels in the Table Cell Properties dialog to "Horizontal align" and "Vertical align" respectively #TINY-7285
### Deprecated
- The undocumented `setIconStroke` Split Toolbar Button API has been deprecated and will be removed in a future release #TINY-3551
### Fixed
- Fixed a bug where it wasn't possible to align nested list items #TINY-6567
- The RGB fields in the color picker dialog were not staying in sync with the color palette and hue slider #TINY-6952
- The color preview box in the color picker dialog was not correctly displaying the saturation and value of the chosen color #TINY-6952
- The color picker dialog will now show an alert if it is submitted with an invalid hex color code #TINY-2814
- Fixed a bug where the `TableModified` event was not fired when adding a table row with the Tab key #TINY-7006
- Added missing `images_file_types` setting to the exported TypeScript types #GH-6607
- Fixed a bug where lists pasted from Word with Roman numeral markers were not displayed correctly. Patch contributed by aautio #GH-6620
- The `editor.insertContent` API was incorrectly handling nested `span` elements with matching styles #TINY-6263
- The HTML5 `small` element could not be removed when clearing text formatting #TINY-6633
- The Oxide button text transform variable was incorrectly using `capitalize` instead of `none`. Patch contributed by dakur #GH-6341
- Fix dialog button text that was using title-style capitalization #TINY-6816
- Table plugin could perform operations on tables containing the inline editor #TINY-6625
- Fixed Tab key navigation inside table cells with a ranged selection #TINY-6638
- The foreground and background toolbar button color indicator is no longer blurry #TINY-3551
- Fixed a regression in the `tinymce.create()` API that caused issues when multiple objects were created #TINY-7358
- Fixed the `LineHeight` command causing the `change` event to be fired inconsistently #TINY-7048
## 5.7.1 - 2021-03-17
### Fixed
- Fixed the `help` dialog incorrectly linking to the changelog of TinyMCE 4 instead of TinyMCE 5 #TINY-7031
- Fixed a bug where error messages were displayed incorrectly in the image dialog #TINY-7099
- Fixed an issue where URLs were not correctly filtered in some cases #TINY-7025
- Fixed a bug where context menu items with names that contained uppercase characters were not displayed #TINY-7072
- Fixed context menu items lacking support for the `disabled` and `shortcut` properties #TINY-7073
- Fixed a regression where the width and height were incorrectly set when embedding content using the `media` dialog #TINY-7074
## 5.7.0 - 2021-02-10
### Added
- Added IPv6 address support to the URI API. Patch contributed by dev7355608 #GH-4409
- Added new `structure` and `style` properties to the `TableModified` event to indicate what kinds of modifications were made #TINY-6643
- Added `video` and `audio` live embed support for the `media` plugin #TINY-6229
- Added the ability to resize `video` and `iframe` media elements #TINY-6229
- Added a new `font_css` setting for adding fonts to both the editor and the parent document #TINY-6199
- Added a new `ImageUploader` API to simplify uploading image data to the configured `images_upload_url` or `images_upload_handler` #TINY-4601
- Added an Oxide variable to define the container background color in fullscreen mode #TINY-6903
- Added Oxide variables for setting the toolbar background colors for inline and sticky toolbars #TINY-6009
- Added a new `AfterProgressState` event that is fired after `editor.setProgressState` calls complete #TINY-6686
- Added support for `table_column_resizing` when inserting or deleting columns #TINY-6711
### Changed
- Changed table and table column copy behavior to retain an appropriate width when pasted #TINY-6664
- Changed the `lists` plugin to apply list styles to all text blocks within a selection #TINY-3755
- Changed the `advlist` plugin to log a console error message when the `list` plugin isn't enabled #TINY-6585
- Changed the z-index of the `setProgressState(true)` throbber so it does not hide notifications #TINY-6686
- Changed the type signature for `editor.selection.getRng()` incorrectly returning `null` #TINY-6843
- Changed some `SaxParser` regular expressions to improve performance #TINY-6823
- Changed `editor.setProgressState(true)` to close any open popups #TINY-6686
### Fixed
- Fixed `codesample` highlighting performance issues for some languages #TINY-6996
- Fixed an issue where cell widths were lost when merging table cells #TINY-6901
- Fixed `col` elements incorrectly transformed to `th` elements when converting columns to header columns #TINY-6715
- Fixed a number of table operations not working when selecting 2 table cells on Mozilla Firefox #TINY-3897
- Fixed a memory leak by backporting an upstream Sizzle fix #TINY-6859
- Fixed table `width` style was removed when copying #TINY-6664
- Fixed focus lost while typing in the `charmap` or `emoticons` dialogs when the editor is rendered in a shadow root #TINY-6904
- Fixed corruption of base64 URLs used in style attributes when parsing HTML #TINY-6828
- Fixed the order of CSS precedence of `content_style` and `content_css` in the `preview` and `template` plugins. `content_style` now has precedence #TINY-6529
- Fixed an issue where the image dialog tried to calculate image dimensions for an empty image URL #TINY-6611
- Fixed an issue where `scope` attributes on table cells would not change as expected when merging or unmerging cells #TINY-6486
- Fixed the plugin documentation links in the `help` plugin #DOC-703
- Fixed events bound using `DOMUtils` not returning the correct result for `isDefaultPrevented` in some cases #TINY-6834
- Fixed the "Dropped file type is not supported" notification incorrectly showing when using an inline editor #TINY-6834
- Fixed an issue with external styles bleeding into TinyMCE #TINY-6735
- Fixed an issue where parsing malformed comments could cause an infinite loop #TINY-6864
- Fixed incorrect return types on `editor.selection.moveToBookmark` #TINY-6504
- Fixed the type signature for `editor.selection.setCursorLocation()` incorrectly allowing a node with no `offset` #TINY-6843
- Fixed incorrect behavior when editor is destroyed while loading stylesheets #INT-2282
- Fixed figure elements incorrectly splitting from a valid parent element when editing the image within #TINY-6592
- Fixed inserting multiple rows or columns in a table cloning from the incorrect source row or column #TINY-6906
- Fixed an issue where new lines were not scrolled into view when pressing Shift+Enter or Shift+Return #TINY-6964
- Fixed an issue where list elements would not be removed when outdenting using the Enter or Return key #TINY-5974
- Fixed an issue where file extensions with uppercase characters were treated as invalid #TINY-6940
- Fixed dialog block messages were not passed through TinyMCE's translation system #TINY-6971
## 5.6.2 - 2020-12-08
### Fixed
- Fixed a UI rendering regression when the document body is using `display: flex` #TINY-6783
## 5.6.1 - 2020-11-25
### Fixed
- Fixed the `mceTableRowType` and `mceTableCellType` commands were not firing the `newCell` event #TINY-6692
- Fixed the HTML5 `s` element was not recognized when editing or clearing text formatting #TINY-6681
- Fixed an issue where copying and pasting table columns resulted in invalid HTML when using colgroups #TINY-6684
- Fixed an issue where the toolbar would render with the wrong width for inline editors in some situations #TINY-6683
## 5.6.0 - 2020-11-18
### Added
- Added new `BeforeOpenNotification` and `OpenNotification` events which allow internal notifications to be captured and modified before display #TINY-6528
- Added support for `block` and `unblock` methods on inline dialogs #TINY-6487
- Added new `TableModified` event which is fired whenever changes are made to a table #TINY-6629
- Added new `images_file_types` setting to determine which image file formats will be automatically processed into `img` tags on paste when using the `paste` plugin #TINY-6306
- Added support for `images_file_types` setting in the image file uploader to determine which image file extensions are valid for upload #TINY-6224
- Added new `format_empty_lines` setting to control if empty lines are formatted in a ranged selection #TINY-6483
- Added template support to the `autocompleter` for customizing the autocompleter items #TINY-6505
- Added new user interface `enable`, `disable`, and `isDisabled` methods #TINY-6397
- Added new `closest` formatter API to get the closest matching selection format from a set of formats #TINY-6479
- Added new `emojiimages` emoticons database that uses the twemoji CDN by default #TINY-6021
- Added new `emoticons_database` setting to configure which emoji database to use #TINY-6021
- Added new `name` field to the `style_formats` setting object to enable specifying a name for the format #TINY-4239
### Changed
- Changed `readonly` mode to allow hyperlinks to be clickable #TINY-6248
### Fixed
- Fixed the `change` event not firing after a successful image upload #TINY-6586
- Fixed the type signature for the `entity_encoding` setting not accepting delimited lists #TINY-6648
- Fixed layout issues when empty `tr` elements were incorrectly removed from tables #TINY-4679
- Fixed image file extensions lost when uploading an image with an alternative extension, such as `.jfif` #TINY-6622
- Fixed a security issue where URLs in attributes weren't correctly sanitized #TINY-6518
- Fixed `DOMUtils.getParents` incorrectly including the shadow root in the array of elements returned #TINY-6540
- Fixed an issue where the root document could be scrolled while an editor dialog was open inside a shadow root #TINY-6363
- Fixed `getContent` with text format returning a new line when the editor is empty #TINY-6281
- Fixed table column and row resizers not respecting the `data-mce-resize` attribute #TINY-6600
- Fixed inserting a table via the `mceInsertTable` command incorrectly creating 2 undo levels #TINY-6656
- Fixed nested tables with `colgroup` elements incorrectly always resizing the inner table #TINY-6623
- Fixed the `visualchars` plugin causing the editor to steal focus when initialized #TINY-6282
- Fixed `fullpage` plugin altering text content in `editor.getContent()` #TINY-6541
- Fixed `fullscreen` plugin not working correctly with multiple editors and shadow DOM #TINY-6280
- Fixed font size keywords such as `medium` not displaying correctly in font size menus #TINY-6291
- Fixed an issue where some attributes in table cells were not copied over to new rows or columns #TINY-6485
- Fixed incorrectly removing formatting on adjacent spaces when removing formatting on a ranged selection #TINY-6268
- Fixed the `Cut` menu item not working in the latest version of Mozilla Firefox #TINY-6615
- Fixed some incorrect types in the new TypeScript declaration file #TINY-6413
- Fixed a regression where a fake offscreen selection element was incorrectly created for the editor root node #TINY-6555
- Fixed an issue where menus would incorrectly collapse in small containers #TINY-3321
- Fixed an issue where only one table column at a time could be converted to a header #TINY-6326
- Fixed some minor memory leaks that prevented garbage collection for editor instances #TINY-6570
- Fixed resizing a `responsive` table not working when using the column resize handles #TINY-6601
- Fixed incorrectly calculating table `col` widths when resizing responsive tables #TINY-6646
- Fixed an issue where spaces were not preserved in pre-blocks when getting text content #TINY-6448
- Fixed a regression that caused the selection to be difficult to see in tables with backgrounds #TINY-6495
- Fixed content pasted multiple times in the editor when using Microsoft Internet Explorer 11. Patch contributed by mattford #GH-4905
## 5.5.1 - 2020-10-01
### Fixed
- Fixed pressing the down key near the end of a document incorrectly raising an exception #TINY-6471
- Fixed incorrect Typescript types for the `Tools` API #TINY-6475
## 5.5.0 - 2020-09-29
### Added
- Added a TypeScript declaration file to the bundle output for TinyMCE core #TINY-3785
- Added new `table_column_resizing` setting to control how table columns are resized when using the resize bars #TINY-6001
- Added the ability to remove images on a failed upload using the `images_upload_handler` failure callback #TINY-6011
- Added `hasPlugin` function to the editor API to determine if a plugin exists or not #TINY-766
- Added new `ToggleToolbarDrawer` command and query state handler to allow the toolbar drawer to be programmatically toggled and the toggle state to be checked #TINY-6032
- Added the ability to use `colgroup` elements in tables #TINY-6050
- Added a new setting `table_use_colgroups` for toggling whether colgroups are used in new tables #TINY-6050
- Added the ability to delete and navigate HTML media elements without the `media` plugin #TINY-4211
- Added `fullscreen_native` setting to the `fullscreen` plugin to enable use of the entire monitor #TINY-6284
- Added table related oxide variables to the Style API for more granular control over table cell selection appearance #TINY-6311
- Added new `toolbar_persist` setting to control the visibility of the inline toolbar #TINY-4847
- Added new APIs to allow for programmatic control of the inline toolbar visibility #TINY-4847
- Added the `origin` property to the `ObjectResized` and `ObjectResizeStart` events, to specify which handle the resize was performed on #TINY-6242
- Added new StyleSheetLoader `unload` and `unloadAll` APIs to allow loaded stylesheets to be removed #TINY-3926
- Added the `LineHeight` query command and action to the editor #TINY-4843
- Added the `lineheight` toolbar and menu items, and added `lineheight` to the default format menu #TINY-4843
- Added a new `contextmenu_avoid_overlap` setting to allow context menus to avoid overlapping matched nodes #TINY-6036
- Added new listbox dialog UI component for rendering a dropdown that allows nested options #TINY-2236
- Added back the ability to use nested items in the `image_class_list`, `link_class_list`, `link_list`, `table_class_list`, `table_cell_class_list`, and `table_row_class_list` settings #TINY-2236
### Changed
- Changed how CSS manipulates table cells when selecting multiple cells to achieve a semi-transparent selection #TINY-6311
- Changed the `target` property on fired events to use the native event target. The original target for an open shadow root can be obtained using `event.getComposedPath()` #TINY-6128
- Changed the editor to clean-up loaded CSS stylesheets when all editors using the stylesheet have been removed #TINY-3926
- Changed `imagetools` context menu icon for accessing the `image` dialog to use the `image` icon #TINY-4141
- Changed the `editor.insertContent()` and `editor.selection.setContent()` APIs to retain leading and trailing whitespace #TINY-5966
- Changed the `table` plugin `Column` menu to include the cut, copy and paste column menu items #TINY-6374
- Changed the default table styles in the content CSS files to better support the styling options available in the `table` dialog #TINY-6179
### Deprecated
- Deprecated the `Env.experimentalShadowDom` flag #TINY-6128
### Fixed
- Fixed tables with no borders displaying with the default border styles in the `preview` dialog #TINY-6179
- Fixed loss of whitespace when inserting content after a non-breaking space #TINY-5966
- Fixed the `event.getComposedPath()` function throwing an exception for events fired from the editor #TINY-6128
- Fixed notifications not appearing when the editor is within a ShadowRoot #TINY-6354
- Fixed focus issues with inline dialogs when the editor is within a ShadowRoot #TINY-6360
- Fixed the `template` plugin previews missing some content styles #TINY-6115
- Fixed the `media` plugin not saving the alternative source url in some situations #TINY-4113
- Fixed an issue where column resizing using the resize bars was inconsistent between fixed and relative table widths #TINY-6001
- Fixed an issue where dragging and dropping within a table would select table cells #TINY-5950
- Fixed up and down keyboard navigation not working for inline `contenteditable="false"` elements #TINY-6226
- Fixed dialog not retrieving `close` icon from icon pack #TINY-6445
- Fixed the `unlink` toolbar button not working when selecting multiple links #TINY-4867
- Fixed the `link` dialog not showing the "Text to display" field in some valid cases #TINY-5205
- Fixed the `DOMUtils.split()` API incorrectly removing some content #TINY-6294
- Fixed pressing the escape key not focusing the editor when using multiple toolbars #TINY-6230
- Fixed the `dirty` flag not being correctly set during an `AddUndo` event #TINY-4707
- Fixed `editor.selection.setCursorLocation` incorrectly placing the cursor outside `pre` elements in some circumstances #TINY-4058
- Fixed an exception being thrown when pressing the enter key inside pre elements while `br_in_pre` setting is false #TINY-4058
## 5.4.2 - 2020-08-17
### Fixed
- Fixed the editor not resizing when resizing the browser window in fullscreen mode #TINY-3511
- Fixed clicking on notifications causing inline editors to hide #TINY-6058
- Fixed an issue where link URLs could not be deleted or edited in the link dialog in some c