Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fullscreen mode feature bootstrap #17810

Closed
wants to merge 361 commits into from

Conversation

Dumluregn
Copy link
Contributor

@Dumluregn Dumluregn commented Jan 24, 2025

Suggested merge commit message (convention)

Internal (fullscreen): Introduce a fullscreen mode feature.


Additional information

This PR contains a package bootstrap and a basic working feature.

What should work:

  • command/button state
  • basic layout (sticky menu bar + toolbar, visible sidebars, editable area)
  • support for both Classic and Decoupled editor
  • all UI elements should be usable in fullscreen mode (dialogs, panels, balloons, tooltips etc)

What is not a subject of this PR:

  • premium features integrations
  • unit tests
  • icon validation fails but it's just temporary one anyway (auto-fix via script didn't help).

przemyslaw-zan and others added 30 commits December 10, 2024 19:45
…onflict

Internal: Not initializing emoji plugin when merge fields use : as first char in prefix.
Internal: Implemented custom emoji UI. Closes #17596.
Internal: Added fake selection to emoji plugin. Closes #17654.
DawidKossowski and others added 18 commits January 28, 2025 11:44
Docs: Introduced Enhanced Source Code Editing documentation and samples.

Other (ui): Added Enhanced Source Code Editing as a default menu bar item, making it visible in the menu bar when the plugin is present in the editor.

Fix (utils): Extended `getEnvKeystrokeText` with option to use it in the context of specified env which allows to generate keystrokes text for different OS than the host one.

Other (utils): Extended key codes with `End` and `Home` keys, enabling the use and display of shortcuts containing these keys in the UI.
Other (engine): Introduced dynamic caching in `Mapper` in order to improve view-to-model mapping performance, and as a result improve editor data load and data save performance. Closes #17623.

Other (engine): New parameter `data` was added for `change:children` event fired by `ViewElement` and `ViewDocumentFragment` when their children change. `data` is an object with `index` property, which says at which index the change happened. Related to #17623.

Other (engine): `Mapper#registerViewToModelLength()` is now deprecated and will be removed in one of upcoming releases. Note: if this method is used, the caching mechanism for `Mapper` will be turned off which may degrade performance when handing big documents. Note: this method is used by the deprecated legacy lists feature. See #17623.

MINOR BREAKING CHANGE (engine): `Mapper#registerViewToModelLength()` is now deprecated and will be removed in one of the upcoming releases. This method is useful only in obscure and complex converters, where model element, or a group of model elements, are represented very differently in the view. We believe that every feature that uses custom view-to-model length callback can be rewritten in a way that this mechanism is no longer necessary. Note: if this method is used, the caching mechanism for `Mapper` will be turned off which may degrade performance when handing big documents. Note: this method is used by the deprecated legacy lists feature. As a result, you will not experience the performance improvements if you are still using deprecated legacy lists feature.
Internal: Inserting an emoji over a non-collapsed selection removes the selected text. Closes #17819.
Internal: Added `@ckeditor/ckeditor5-source-editing-enhanced` as a project dependency.
Fix (engine): The link `rel` attribute will now allow mixing manual link decorators for the same attribute, as it will be now handled as a token list. Closes #13985, closes #6436.

Fix (mention): Mention should not be wrapped with an additional `<span>` when GHS is enabled. Closes #15329.

Internal (html-support): Attribute matching updated to the new output of `Matcher#matchAll()`.

MINOR BREAKING CHANGE (engine): The `ViewConsumable.consumablesFromElement()` is removed and replaced with `view.Element#_getConsumables()` internal method. You should use `ViewConsumable.createFrom()` To create consumables if needed.

MINOR BREAKING CHANGE (engine): The `ViewElementConsumables` now accepts and outputs only normalized data. The `ViewConsumable` still accepts normalized or non-normalized input.

MINOR BREAKING CHANGE (engine): The `Matcher#match()` and `Matcher#matchAll()` output is now normalized. The `MatchResult#match` now contains normalized data compatible with changes in the `ViewConsumable`.
Internal: Fixed invalid links in docs snippets.
…a. (#17756)

Feature (html-support): Add an experimental `EmptyBlock` plugin that prevents adding `&nbsp;` to output data.

Other (engine): The whitespaces around a block filler (`&nbsp;`) are ignored while loading editor data.
@Dumluregn Dumluregn force-pushed the ck/fullscreen-bootstrap branch from 2c75b43 to f275002 Compare February 10, 2025 08:40
@Dumluregn
Copy link
Contributor Author

A note regarding the toolbar/menu bar label. There was a proposal to name it "Enter fullscreen mode"/"Leave fullscreen mode". I propose to use just "Fullscreen mode" because:
- we rarely change button labels
- button is toggleable to its state is visible (this is especially important for menu bar button as it has a tick next to name when on, so it would look ambiguous with "Leave fullscreen mode" label)
- other buttons in "View" menu don't have icons but it was confirmed it's legacy (#17891).

@Dumluregn Dumluregn closed this Feb 10, 2025
@Dumluregn
Copy link
Contributor Author

Dumluregn commented Feb 10, 2025

Can't get to terms with GH about the commit history. Recreated as #17897.

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.