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

Standalone editor: Merge DOMEventPlugin and MouseUpPlugin #2210

Merged
merged 9 commits into from
Nov 16, 2023

Conversation

JiuqingSong
Copy link
Collaborator

@JiuqingSong JiuqingSong commented Nov 15, 2023

The existing core plugin DOMEventPlugin translate raw DOM event to roosterjs event, and MouseUpPlugin triggers roosterjs MouseUp event when mouse is up even mouse is ouside of editor as long as it was inside editor when mouseDowne event happens.

This change merges these two plugins together and move into roosterjs-content-model-core package to be a ported core plugin. Also add test case for the new plugin.

@@ -64,9 +67,12 @@ export function createEditorCore(
...createStandaloneEditorDefaultSettings(options),

environment: {
// It is ok to use global window here since the environment should always be the same for all windows in one session
isMac: window.navigator.appVersion.indexOf('Mac') != -1,
Copy link
Contributor

@BryanValverdeU BryanValverdeU Nov 16, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think window can be undefined in Server side rendering like in NextJS. We had a similar report some time ago in the Browser utility in roosterjs editor dom, so we added a undefined check there. Probably not a big deal for this PR. but just a FYI

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point.

Browser object was initialized when the code is loaded, so it is possible to be null if do server side render.
Now in Content Model editor I'm removing the usage of Browser object, and use this environment object instead. It is initalized only when we create an editor, it is triggered by js code and should not be rendered from server side directly.

@JiuqingSong JiuqingSong merged commit 700e8e8 into master Nov 16, 2023
7 checks passed
@JiuqingSong JiuqingSong deleted the u/jisong/domevent branch November 16, 2023 19:33
JiuqingSong added a commit that referenced this pull request Dec 1, 2023
* margin in lists

* remove code

* type

* refactor

* fixes

* remove parameter

* refactor

* remove file change

* Use Content Model to handle Delete/Backspace key in more cases (#2162)

* Do not set focus when quite shadow edit (#2163)

* Fix #237217 (#2164)

* Fix #237735 (#2165)

* Fix #236416 (#2166)

* wip

* fixes

* Fix #2160 (#2167)

* Fix #2160

* fix build

* test

* remove test

* remove test

* remove test

* Rearrange parameters of iterateSelections (#2180)

* Rearrange parameters of iterateSelections

* improve

* Standalone editor step 0: Create a copy of Editor class (#2175)

* Standalone editor step 0: Create a copy of Editor class

* remove unnecessary change

* improve

* Fix #2061, apply pending format on Android (#2172)

* Fix #2061

* Fix for Android

* Fix #2080 (#2173)

* Standalone editor Step 0.5: Create test page for adapter editor (#2176)

* Standalone editor step 0: Create a copy of Editor class

* Standalone editor Step 0.5: Create test page for adapter editor

* Add Content Model functionality to AdapterEditor

* remove unnecessary change

* remove unnecessary change

* improve

* toggleListType

* type

* Fix Mouseout behavior to hide table editors (#2181)

* init

* init

* fix build

* Add comment

* Fix apply Table Inside borders operation and Demo site (#2184)

* fix cases

* fix demo

* Add image size checkmarks to context menu (#2168)

* Allow a max error un percentage size check

* Allow a checkmark to be shown in ctx menu

* Add checkmark to image sizes

* Add missing type

* Fix types

* Add comment

* Attempt to fix image selection

* Revert unneeded changes in image selection

* Use attr as backup in resize calc

* Rely entirely on image selection

* Revert changes to domeventplugin

* Copy changes into content model adapter

* Revert previous standalone editor change (#2189)

* Revert previous standalone change

* fix build

* Move formatWithContentModel to be a core API (#2185)

* Content Model: Allow clear cache from formatContentModel (#2186)

* Move formatWithContentModel to be a core API

* Content Model: Allow clear cache from formatContentModel

* Content Model: Potential perf improvement in getFormatState (#2187)

* Content Model: Move pending format into editor core (#2188)

* Move formatWithContentModel to be a core API

* Content Model: Allow clear cache from formatContentModel

* Content Model: Move pending format into editor core

* Convert DeleteResult from const enum to string literal type (#2191)

* Move paste plugin to roosterjs-content-model-plugins package (#2192)

* image selection plugin

* check image parent node

* Adding module entry to package.json (#2197)

* Move ContentModelEdit plugin to plugins package (#2195)

* Move ContentModelEdit plugin to plugins package

* improve

---------

Co-authored-by: Bryan Valverde U <[email protected]>

* Move type files to roosterjs-content-model-types package (#2196)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* fix build

* fix build

* Move core API to roosterjs-content-model-core package (#2198)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* fix build

* fix build

* Move corePlugins to roosterjs-content-model-core package (#2199)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* fix build

* Move format API to roosterjs-content-model-api package (#2200)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* Move format API to roosterjs-content-model-api package

* fix build

* Improve

* Decouple ContentModelEditor from roosterjs-editor-core (#2201)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* Move format API to roosterjs-content-model-api package

* fix build

* Improve

* Decouple ContentModelEditor from roosterjs-editor-core

* improve

* Remove public enum from Content Model (#2204)

* Directly create Content Model editor (#2206)

* Fix Delimiter Nested Entity Scenario (#2207)

* init

* comment

* Standalone editor: Remove dependency to EditorCore (#2208)

* Remove dependency to EditorCore

* fix test

* improve

---------

Co-authored-by: Bryan Valverde U <[email protected]>

* Standalone Editor: Remove legacy plugin: PendingFormatStatePlugin (#2209)

* Remove dependency to EditorCore

* fix test

* improve

* Standalone editor: Remove PendingFormatStatePlugin

* fix build

* Standalone editor: Merge DOMEventPlugin and MouseUpPlugin (#2210)

* Remove dependency to EditorCore

* fix test

* improve

* Standalone editor: Remove PendingFormatStatePlugin

* fix build

* Merge DOMEventPlugin and MouseUpPlugin

* Standalone Editor: CreateStandaloneEditorCore (#2218)

* Standalone Editor: Port LifecyclePlugin (#2219)

* Standalone Editor: CreateStandaloneEditorCore

* Standalone Editor: Port LifecyclePlugin

* fix build

* fix test

* improve

* fix test

* fix comment

* select on click

* test

* Standalone Editor: Support keyboard input (init step) (#2221)

* apply table format fix

* remove console.log

* fix comments

* Standalone Editor: Port EntityPlugin (#2223)

* Standalone Editor: CreateStandaloneEditorCore

* Standalone Editor: Port LifecyclePlugin

* fix build

* fix test

* improve

* fix test

* Standalone Editor: Support keyboard input (init step)

* Standalone Editor: Port EntityPlugin

* improve

* Add test

* improve

* test

* Content Model: Keep image port if exist (#2226)

* add color spectrum check

* auto format test

* remove empty line

* Allow each package has its own version when publish (#2233)

* Allow each package has its own version when publish

* remove unnecessary change

* Content Model: Fix #2230 (#2231)

* Content Model: keep default format when paste into empty editor (#2232)

* Standalone Editor: Add a SelectionPlugin (#2228)

---------

Co-authored-by: Júlia Roldi <[email protected]>
Co-authored-by: Julia Roldi <[email protected]>
Co-authored-by: Bryan Valverde U <[email protected]>
Co-authored-by: Andres-CT98 <[email protected]>
Co-authored-by: Ian Elizondo <[email protected]>
Co-authored-by: Keven Arroyo <[email protected]>
JiuqingSong added a commit that referenced this pull request Dec 4, 2023
* margin in lists

* remove code

* type

* refactor

* fixes

* remove parameter

* refactor

* remove file change

* Use Content Model to handle Delete/Backspace key in more cases (#2162)

* Do not set focus when quite shadow edit (#2163)

* Fix #237217 (#2164)

* Fix #237735 (#2165)

* Fix #236416 (#2166)

* wip

* fixes

* Fix #2160 (#2167)

* Fix #2160

* fix build

* test

* remove test

* remove test

* remove test

* Rearrange parameters of iterateSelections (#2180)

* Rearrange parameters of iterateSelections

* improve

* Standalone editor step 0: Create a copy of Editor class (#2175)

* Standalone editor step 0: Create a copy of Editor class

* remove unnecessary change

* improve

* Fix #2061, apply pending format on Android (#2172)

* Fix #2061

* Fix for Android

* Fix #2080 (#2173)

* Standalone editor Step 0.5: Create test page for adapter editor (#2176)

* Standalone editor step 0: Create a copy of Editor class

* Standalone editor Step 0.5: Create test page for adapter editor

* Add Content Model functionality to AdapterEditor

* remove unnecessary change

* remove unnecessary change

* improve

* toggleListType

* type

* Fix Mouseout behavior to hide table editors (#2181)

* init

* init

* fix build

* Add comment

* Fix apply Table Inside borders operation and Demo site (#2184)

* fix cases

* fix demo

* Add image size checkmarks to context menu (#2168)

* Allow a max error un percentage size check

* Allow a checkmark to be shown in ctx menu

* Add checkmark to image sizes

* Add missing type

* Fix types

* Add comment

* Attempt to fix image selection

* Revert unneeded changes in image selection

* Use attr as backup in resize calc

* Rely entirely on image selection

* Revert changes to domeventplugin

* Copy changes into content model adapter

* Revert previous standalone editor change (#2189)

* Revert previous standalone change

* fix build

* Move formatWithContentModel to be a core API (#2185)

* Content Model: Allow clear cache from formatContentModel (#2186)

* Move formatWithContentModel to be a core API

* Content Model: Allow clear cache from formatContentModel

* Content Model: Potential perf improvement in getFormatState (#2187)

* Content Model: Move pending format into editor core (#2188)

* Move formatWithContentModel to be a core API

* Content Model: Allow clear cache from formatContentModel

* Content Model: Move pending format into editor core

* Convert DeleteResult from const enum to string literal type (#2191)

* Move paste plugin to roosterjs-content-model-plugins package (#2192)

* image selection plugin

* check image parent node

* Adding module entry to package.json (#2197)

* Move ContentModelEdit plugin to plugins package (#2195)

* Move ContentModelEdit plugin to plugins package

* improve

---------

Co-authored-by: Bryan Valverde U <[email protected]>

* Move type files to roosterjs-content-model-types package (#2196)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* fix build

* fix build

* Move core API to roosterjs-content-model-core package (#2198)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* fix build

* fix build

* Move corePlugins to roosterjs-content-model-core package (#2199)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* fix build

* Move format API to roosterjs-content-model-api package (#2200)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* Move format API to roosterjs-content-model-api package

* fix build

* Improve

* Decouple ContentModelEditor from roosterjs-editor-core (#2201)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* Move format API to roosterjs-content-model-api package

* fix build

* Improve

* Decouple ContentModelEditor from roosterjs-editor-core

* improve

* Remove public enum from Content Model (#2204)

* Directly create Content Model editor (#2206)

* Fix Delimiter Nested Entity Scenario (#2207)

* init

* comment

* Standalone editor: Remove dependency to EditorCore (#2208)

* Remove dependency to EditorCore

* fix test

* improve

---------

Co-authored-by: Bryan Valverde U <[email protected]>

* Standalone Editor: Remove legacy plugin: PendingFormatStatePlugin (#2209)

* Remove dependency to EditorCore

* fix test

* improve

* Standalone editor: Remove PendingFormatStatePlugin

* fix build

* Standalone editor: Merge DOMEventPlugin and MouseUpPlugin (#2210)

* Remove dependency to EditorCore

* fix test

* improve

* Standalone editor: Remove PendingFormatStatePlugin

* fix build

* Merge DOMEventPlugin and MouseUpPlugin

* Standalone Editor: CreateStandaloneEditorCore (#2218)

* Standalone Editor: Port LifecyclePlugin (#2219)

* Standalone Editor: CreateStandaloneEditorCore

* Standalone Editor: Port LifecyclePlugin

* fix build

* fix test

* improve

* fix test

* fix comment

* select on click

* test

* Standalone Editor: Support keyboard input (init step) (#2221)

* apply table format fix

* remove console.log

* fix comments

* Standalone Editor: Port EntityPlugin (#2223)

* Standalone Editor: CreateStandaloneEditorCore

* Standalone Editor: Port LifecyclePlugin

* fix build

* fix test

* improve

* fix test

* Standalone Editor: Support keyboard input (init step)

* Standalone Editor: Port EntityPlugin

* improve

* Add test

* improve

* test

* Content Model: Keep image port if exist (#2226)

* add color spectrum check

* auto format test

* remove empty line

* Allow each package has its own version when publish (#2233)

* Allow each package has its own version when publish

* remove unnecessary change

* Content Model: Fix #2230 (#2231)

* Content Model: keep default format when paste into empty editor (#2232)

* Standalone Editor: Add a SelectionPlugin (#2228)

* Content Model: Go back to getDarkColor (#2239)

* Content Model: go back to getDarkColor

* fix test

* Content Model: Fix overwrite table cell bug (#2240)

---------

Co-authored-by: Júlia Roldi <[email protected]>
Co-authored-by: Julia Roldi <[email protected]>
Co-authored-by: Bryan Valverde U <[email protected]>
Co-authored-by: Andres-CT98 <[email protected]>
Co-authored-by: Ian Elizondo <[email protected]>
Co-authored-by: Keven Arroyo <[email protected]>
JiuqingSong added a commit that referenced this pull request Dec 6, 2023
* margin in lists

* remove code

* type

* refactor

* fixes

* remove parameter

* refactor

* remove file change

* Use Content Model to handle Delete/Backspace key in more cases (#2162)

* Do not set focus when quite shadow edit (#2163)

* Fix #237217 (#2164)

* Fix #237735 (#2165)

* Fix #236416 (#2166)

* wip

* fixes

* Fix #2160 (#2167)

* Fix #2160

* fix build

* test

* remove test

* remove test

* remove test

* Rearrange parameters of iterateSelections (#2180)

* Rearrange parameters of iterateSelections

* improve

* Standalone editor step 0: Create a copy of Editor class (#2175)

* Standalone editor step 0: Create a copy of Editor class

* remove unnecessary change

* improve

* Fix #2061, apply pending format on Android (#2172)

* Fix #2061

* Fix for Android

* Fix #2080 (#2173)

* Standalone editor Step 0.5: Create test page for adapter editor (#2176)

* Standalone editor step 0: Create a copy of Editor class

* Standalone editor Step 0.5: Create test page for adapter editor

* Add Content Model functionality to AdapterEditor

* remove unnecessary change

* remove unnecessary change

* improve

* toggleListType

* type

* Fix Mouseout behavior to hide table editors (#2181)

* init

* init

* fix build

* Add comment

* Fix apply Table Inside borders operation and Demo site (#2184)

* fix cases

* fix demo

* Add image size checkmarks to context menu (#2168)

* Allow a max error un percentage size check

* Allow a checkmark to be shown in ctx menu

* Add checkmark to image sizes

* Add missing type

* Fix types

* Add comment

* Attempt to fix image selection

* Revert unneeded changes in image selection

* Use attr as backup in resize calc

* Rely entirely on image selection

* Revert changes to domeventplugin

* Copy changes into content model adapter

* Revert previous standalone editor change (#2189)

* Revert previous standalone change

* fix build

* Move formatWithContentModel to be a core API (#2185)

* Content Model: Allow clear cache from formatContentModel (#2186)

* Move formatWithContentModel to be a core API

* Content Model: Allow clear cache from formatContentModel

* Content Model: Potential perf improvement in getFormatState (#2187)

* Content Model: Move pending format into editor core (#2188)

* Move formatWithContentModel to be a core API

* Content Model: Allow clear cache from formatContentModel

* Content Model: Move pending format into editor core

* Convert DeleteResult from const enum to string literal type (#2191)

* Move paste plugin to roosterjs-content-model-plugins package (#2192)

* image selection plugin

* check image parent node

* Adding module entry to package.json (#2197)

* Move ContentModelEdit plugin to plugins package (#2195)

* Move ContentModelEdit plugin to plugins package

* improve

---------

Co-authored-by: Bryan Valverde U <[email protected]>

* Move type files to roosterjs-content-model-types package (#2196)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* fix build

* fix build

* Move core API to roosterjs-content-model-core package (#2198)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* fix build

* fix build

* Move corePlugins to roosterjs-content-model-core package (#2199)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* fix build

* Move format API to roosterjs-content-model-api package (#2200)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* Move format API to roosterjs-content-model-api package

* fix build

* Improve

* Decouple ContentModelEditor from roosterjs-editor-core (#2201)

* Move ContentModelEdit plugin to plugins package

* Move types to roosterjs-content-model-types package

* improve

* Improve

* improve

* Improve

* improve

* Move core API to core package

* fix build

* improve

* Move corePlugins to roosterjs-content-model-core package

* fix build

* improve

* fix build

* Move format API to roosterjs-content-model-api package

* fix build

* Improve

* Decouple ContentModelEditor from roosterjs-editor-core

* improve

* Remove public enum from Content Model (#2204)

* Directly create Content Model editor (#2206)

* Fix Delimiter Nested Entity Scenario (#2207)

* init

* comment

* Standalone editor: Remove dependency to EditorCore (#2208)

* Remove dependency to EditorCore

* fix test

* improve

---------

Co-authored-by: Bryan Valverde U <[email protected]>

* Standalone Editor: Remove legacy plugin: PendingFormatStatePlugin (#2209)

* Remove dependency to EditorCore

* fix test

* improve

* Standalone editor: Remove PendingFormatStatePlugin

* fix build

* Standalone editor: Merge DOMEventPlugin and MouseUpPlugin (#2210)

* Remove dependency to EditorCore

* fix test

* improve

* Standalone editor: Remove PendingFormatStatePlugin

* fix build

* Merge DOMEventPlugin and MouseUpPlugin

* Standalone Editor: CreateStandaloneEditorCore (#2218)

* Standalone Editor: Port LifecyclePlugin (#2219)

* Standalone Editor: CreateStandaloneEditorCore

* Standalone Editor: Port LifecyclePlugin

* fix build

* fix test

* improve

* fix test

* fix comment

* select on click

* test

* Standalone Editor: Support keyboard input (init step) (#2221)

* apply table format fix

* remove console.log

* fix comments

* Standalone Editor: Port EntityPlugin (#2223)

* Standalone Editor: CreateStandaloneEditorCore

* Standalone Editor: Port LifecyclePlugin

* fix build

* fix test

* improve

* fix test

* Standalone Editor: Support keyboard input (init step)

* Standalone Editor: Port EntityPlugin

* improve

* Add test

* improve

* test

* Content Model: Keep image port if exist (#2226)

* add color spectrum check

* auto format test

* remove empty line

* Allow each package has its own version when publish (#2233)

* Allow each package has its own version when publish

* remove unnecessary change

* Content Model: Fix #2230 (#2231)

* Content Model: keep default format when paste into empty editor (#2232)

* Standalone Editor: Add a SelectionPlugin (#2228)

* Content Model: Go back to getDarkColor (#2239)

* Content Model: go back to getDarkColor

* fix test

* Content Model: Fix overwrite table cell bug (#2240)

* ContentModel: Set readonly for new entity (#2243)

---------

Co-authored-by: Júlia Roldi <[email protected]>
Co-authored-by: Julia Roldi <[email protected]>
Co-authored-by: Bryan Valverde U <[email protected]>
Co-authored-by: Andres-CT98 <[email protected]>
Co-authored-by: Ian Elizondo <[email protected]>
Co-authored-by: Keven Arroyo <[email protected]>
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.

3 participants