-
Notifications
You must be signed in to change notification settings - Fork 161
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
Content Model: Advanced cache #2083
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
JiuqingSong
requested review from
BryanValverdeU,
flyingbee2012,
ianeli1,
vinguyen12,
juliaroldi and
Andres-CT98
September 22, 2023 23:06
juliaroldi
approved these changes
Sep 25, 2023
JiuqingSong
added a commit
that referenced
this pull request
Oct 6, 2023
* Content Model: Clear table selection fix (#2086) * Content Model: Clear table selection fix * fix build * Fix #2078 (#2092) * Fix #2078 * add test * Graduate feature InlineEntityReadOnlyDelimiters (#2098) * Graduate InlineEntityReadOnlyDelimiters * fix build * Fix 227982 (#2095) * Content Model: Advanced cache (#2083) * Content Model Customization refactor * fix build * improve * Content Model Customization refactor 2: Add default config * fix build * Content Model: Persist cache 1 * fix build * improve * Content Model: Cache 2 * Fix test * Fix build * improve * Improve * improve * Improve * fix test * Do not restore cached selection when call select * Content Model: Add model into ContentChangedEvent * fix build * add demo site page * Improve * Content Model: pass out segment nodes * cache 8 * fix build * fix test * Improve * improve * fix test * Improve * fix test * Improve "checkDependency" * Content Model: Clear table selection fix * fix build * Content Model: Improve adjustWordSelection * add test * add test * fix test * Improve * retrigger check step * retrigger check step * do not underline, if not text * remove empty line * refactor * Replace tslint with eslint (#2101) * Graduate feature ContentModelPaste (#2102) * Remove NodeType from Content Model (#2106) * Enable eslint rule to improve imports (#2105) * Enable eslint rule to force import type * Clear duplicated imports * selection * Content Model: Move default format logic into ContentModelFormatPlugin (#2099) * Content Model Customization refactor * fix build * improve * Content Model Customization refactor 2: Add default config * fix build * Content Model: Persist cache 1 * fix build * improve * Content Model: Cache 2 * Fix test * Fix build * improve * Improve * improve * Improve * fix test * Do not restore cached selection when call select * Content Model: Add model into ContentChangedEvent * fix build * add demo site page * Improve * Content Model: pass out segment nodes * cache 8 * fix build * fix test * Improve * improve * fix test * Improve * fix test * Improve "checkDependency" * Content Model: Clear table selection fix * fix build * Content Model: Improve adjustWordSelection * add test * add test * fix test * Graduate InlineEntityReadOnlyDelimiters * fix build * fix test * Refactor format plugin * fix test * Improve * fix build * Standalone editor: remove SelectionRangeEx from Content Model (#2103) * Remove SelectionRangeEx from ContentModel * fix test * improve * fix build * fix test * Content Model: Move copy entity related code to copyPastePlugin (#2111) * Fix PickPlugin will not remove nodes with other tags other than <a> tag (#2116) * Content Model: Clear cache when input in expanded selection (#2114) * Content Model: Clear cache when input in expanded selection * fix build * standalone editor: Remove dependencies (#2115) * Standalone editor: decouple entity (#2107) * Standalone editor: decouple entity * fix build * fix build * improve * fix build * add test * Add announce Plugin (#2109) Add announce plugin Add a AnnounceHandler, that will be in charge of announcing the messages by using a aria-live element, this handler will require a string map with the localized strings to announce messages from built-in RoosterJS features. Add an additional callback property to ContentEditEventData, getAnnounceData, used in the Announce Plugin Add first announcing logic when indenting/outdenting list * image selection test * Fix demo page (#2120) * remove height * WIP * Standalone editor: decouple utilities (#2123) * fix comment * Fix Excel Border issue when pasting (#2121) * init * itChromeOnly * add unit test * fix chrome test * Announce Plugin, add features to current plugin (#2119) * init * remove * Fix type issues * add tests * Fix build * Move logic from Editor to Plugin * Add type to param * DefaultAnnounceString to KnownAnnounceStrings * merge classes * Add more details in comments * Fix build * const enum * fix * init * Add callback that returns string * init2 * Fix test after merge * Refactor * refactor * Fix * Dispose editor * Move util from dom to plugin pkg & fix * remove unneeded if * remove unneeded test * image selection ctrl * refator * rename newImage * fix build * Recreate Content Model for table and image selection (#2128) * Catch error and continue when dispose editor (#2129) * Cache error and continue when dispose editor * Improve * Do not focus to editor when formatWithContentModel (#2130) * Standalone editor: Remove more dependencies (#2127) * Standalone editor: decouple utilities * Standalone editor: Remove more dependencies * fix build * remove unnecessary code * RoosterJs 8.57.0 --------- Co-authored-by: Júlia Roldi <[email protected]> Co-authored-by: Julia Roldi <[email protected]> Co-authored-by: Leah Xia <[email protected]> Co-authored-by: Bryan Valverde U <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduce advanced cache in Content Model Editor
When edit, there will be a lot of features need to know current editing state, such as the text content before cursor, if it is editing under a table, or a list, ...
Before, we access DOM tree to retrieve these informations. Now with Content Model, we can retrieve these information better and more accurate. However, that means we need to have a up-to-date Content Model when edit. We should not always recreate Content Model every time user type something or even more the focus. So this change is to dynamically update the cached Content Model when need.
ContentModelContentChangedEvent
To achieve this goal, in this change I have added the following code:
ContentModelDomIndeser
: It handles the bidirectional update by saving some info into DOM node. So that when put focus onto a node, we can easily get the realted Content Model segment(s) or table, then do porper updateContentModelCachePlugin
: It handles browser events and update model and DOM node usingContentModelDomIndexer
ExperimentalFeature
: ReusableContentModelV2