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

refactor(Group): parent + fix(ActiveSelection): transferring object #9349

Closed
wants to merge 8 commits into from

Conversation

ShaMan123
Copy link
Contributor

@ShaMan123 ShaMan123 commented Sep 16, 2023

Motivation

I was looking into the patch I made into #9336 and understood that getParent was a design mistake.
It is confusing and silly. I wrote it in a haste, not wanting to create too many changes.
It is a design mistake IMO mainly because there is a confusion about active selection - should it be considered a parent or not.
Apps might need to access both the the current group of an object and both the owning group.
Since group and canvas are used it seems bad that to get the owning parent you do getParent(true).
I regret it.
This PR makes it simpler both for fabric and for devs and removes ambiguity of the group property.
Please accept it before v6 so it only breaks beta.

Description

This PR introduces the parent property on Object and removes getParent.
The parent property is the owning group of an object, meaning not the active selection.

While testing the PR I realized I didn't take into consideration another part of transferring an object between active selections that I missed in #9336
The object should be removed from the active selection and not be reomved from its owning group.

related to #8951

Changes

BREAKING beta: rm getParent

Gist

In Action

@github-actions
Copy link
Contributor

github-actions bot commented Sep 16, 2023

Build Stats

file / KB (diff) bundled minified
fabric 913.725 (-0.238) 305.800 (-0.063)

Comment on lines +84 to +90
// make sure we exit the parent only once
if (object.parent && object.parent === object.group) {
// keep the object part of the parent
object.parent._exitGroup(object);
} else if (object.group && object.parent !== object.group) {
// in case `object` is transferred between active selections we remove it from the prev
object.group.remove(object);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this is this fix to active selection

Update index.spec.ts
@github-actions
Copy link
Contributor

Coverage after merging parent into master will be

82.90%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
index.node.ts7.69%100%0%14.29%17, 20, 23, 35, 38, 41
src
   ClassRegistry.ts100%100%100%100%
   Collection.ts94.71%94.64%86.67%97.09%101, 104, 207–208, 233–234
   CommonMethods.ts96.55%87.50%100%100%9
   Intersection.ts100%100%100%100%
   Observable.ts87.76%85.29%87.50%89.58%134–135, 160–161, 32–33, 41, 50, 78, 89
   Point.ts100%100%100%100%
   Shadow.ts98.36%95.65%100%100%178
   cache.ts97.06%90%100%100%57
   config.ts75%66.67%66.67%82.76%130, 138, 138, 138, 138, 138–140, 151–153
   constants.ts100%100%100%100%
src/Pattern
   Pattern.ts92.31%91.89%90%93.55%119, 130, 139, 32, 95
src/brushes
   BaseBrush.ts100%100%100%100%
   CircleBrush.ts0%0%0%0%108, 108, 108, 110, 112, 114–116, 118–121, 128–129, 13, 136, 138, 23–24, 32–36, 40–44, 51–54, 62–66, 68, 76, 76, 76, 76, 76–77, 79, 79, 79–82, 84, 92–93, 95, 97–99
   PatternBrush.ts97.06%87.50%100%100%21
   PencilBrush.ts91.06%82.35%100%93.81%122–123, 152, 152–154, 176, 176, 276, 280, 285–286, 68–69, 84–85
   SprayBrush.ts0%0%0%0%107, 107, 107, 107, 107–108, 110–111, 118–119, 121, 123–127, 136, 140–141, 141, 149, 149, 149–152, 154–157, 161–162, 164, 166–169, 17, 172, 179, 18, 180, 182, 184–185, 187, 194–195, 197–198, 20, 201, 201, 208, 208, 21, 212, 22, 22, 22–24, 28, 32, 39, 46, 53, 60, 67, 84–86, 94–96, 98–99
src/canvas
   Canvas.ts78.99%77.35%83.05%79.61%1003–1004, 1004, 1004–1006, 1009–1010, 1010, 1010, 1012, 1020, 1020, 1020–1022, 1022, 1022, 1029–1030, 1038–1039, 1039, 1039–1040, 1046, 1048, 1079–1081, 1084–1085, 1089–1090, 1209–1211, 1214–1215, 1288, 1407, 1529, 157, 182, 292–293, 296–300, 305, 328–329, 334–339, 359, 359, 359–360, 360, 360–361, 369, 37, 374–375, 375, 375–376, 378, 387, 393–394, 394, 394, 41, 437, 445, 449, 449, 449–450, 452, 535–536, 536, 536–537, 543, 543, 543–545, 565, 567, 567, 567–568, 568, 568, 571, 571, 571–572, 575, 584–585, 587–588, 590, 590–591, 593–594, 606–607, 607, 607–608, 610–615, 621, 628, 665, 665, 665, 667, 669–674, 680, 686, 686, 686–687, 689, 692, 697, 710, 738, 738, 796–797, 797, 797–798, 800, 803–804, 804, 804–805, 807–808, 811, 811–813, 816–817, 893, 905, 912, 912, 912, 933, 965, 986–987
   CanvasOptions.ts100%100%100%100%
   SelectableCanvas.ts94.35%92.06%94.23%96.20%1080, 1082, 1084–1085, 301, 471–472, 474–475, 475, 475, 524–525, 586–587, 600, 640–642, 674, 679–680, 707–708, 880, 880–881, 884, 904, 904, 953, 961
   StaticCanvas.ts96.78%93.09%100%98.53%1031, 1041, 1093–1094, 1097, 1132–1133, 1209, 1218, 1218, 1222, 1222, 1269–1270, 187–188, 204, 571, 583–584, 914–915, 915, 915–916
   StaticCanvasOptions.ts100%100%100%100%
   TextEditingManager.ts84.31%71.43%91.67%88%17–18, 18, 18–19, 19, 19
src/canvas/DOMManagers
   CanvasDOMManager.ts95.52%70%100%100%21–22, 29
   StaticCanvasDOMManager.ts97.50%88.89%100%100%33
   util.ts86.67%80.56%83.33%93.94%14, 26, 63–64, 67, 67, 74, 93–94
src/color
   Color.ts94.96%91.67%96.30%96.05%233, 258–259, 267–268, 48
   color_map.ts100%100%100%100%
   constants.ts100%100%100%100%
   util.ts85.71%76.92%100%89.74%55–56, 56, 58, 58, 58–59, 61–62, 89
src/controls
   Control.ts94.44%93.10%91.67%96.77%183, 249, 354
   changeWidth.ts100%100%100%100%
   commonControls.ts100%100%100%100%
   controlRendering.ts81.63%78%100%84.78%106, 111, 121, 121, 45, 50, 61, 61, 65–72, 81–82
   drag.ts100%100%100%100%
   fireEvent.ts88.89%75%100%100%13
   polyControl.ts7.25%0%0%13.51%103, 108, 120, 120, 120, 120, 120, 122–125, 125, 128, 135, 17, 25–29, 29, 29, 29, 29, 29, 29, 29, 50–56, 56, 56, 56, 56, 58, 63–64, 66, 76, 82–84, 84, 86, 89–90, 90, 90, 90, 90, 92, 97
   rotate.ts19.57%12.50%50%21.43%41, 45, 51, 51, 51–52, 55–57, 59, 59, 59, 59, 59–61, 61, 61–63, 65, 65, 65–67, 67, 67–68, 73, 73, 73–74, 76, 78, 80–81
   scale.ts93.57%92.94%100%93.67%129–130, 132–134, 148–149, 181–183, 42
   scaleSkew.ts78.79%64.29%100%85.71%27, 29, 29, 29, 31, 33, 35
   skew.ts91.03%79.31%100%97.67%131–132, 163–164, 171, 177, 179
   util.ts100%100%100%100%
   wrapWithFireEvent.ts100%100%100%100%
   

@ShaMan123
Copy link
Contributor Author

I need to assess if this should be merged into #8951 or done on top of it but they are duplicates to some extent

ShaMan123 added a commit that referenced this pull request Nov 7, 2023
commit 1395602
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Wed Oct 18 18:23:35 2023 +0700

    prettier

commit d7fe84b
Merge: d1f9b4d 7a71097
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Wed Oct 18 18:19:27 2023 +0700

    Merge branch 'master' into parent

commit d1f9b4d
Merge: 0b43b72 ef27fcd
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 23 14:00:34 2023 +0530

    Merge branch 'master' into parent

commit 0b43b72
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 23 13:33:25 2023 +0530

    another parent/group fix

commit 89e4c74
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 16 08:56:50 2023 +0530

    e2e test

    Update index.spec.ts

commit c2fc529
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 16 07:51:06 2023 +0530

    comments

commit a09f840
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Date:   Sat Sep 16 02:18:07 2023 +0000

    update CHANGELOG.md

commit b3bc476
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 16 07:37:01 2023 +0530

    refactor(): `parent` + fix active selection edge case
@ShaMan123
Copy link
Contributor Author

closing => sqaushed into #8951

@ShaMan123 ShaMan123 closed this Nov 7, 2023
ShaMan123 added a commit that referenced this pull request Nov 7, 2023
commit 1395602
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Wed Oct 18 18:23:35 2023 +0700

    prettier

commit d7fe84b
Merge: d1f9b4d 7a71097
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Wed Oct 18 18:19:27 2023 +0700

    Merge branch 'master' into parent

commit d1f9b4d
Merge: 0b43b72 ef27fcd
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 23 14:00:34 2023 +0530

    Merge branch 'master' into parent

commit 0b43b72
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 23 13:33:25 2023 +0530

    another parent/group fix

commit 89e4c74
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 16 08:56:50 2023 +0530

    e2e test

    Update index.spec.ts

commit c2fc529
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 16 07:51:06 2023 +0530

    comments

commit a09f840
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Date:   Sat Sep 16 02:18:07 2023 +0000

    update CHANGELOG.md

commit b3bc476
Author: ShaMan123 <shacharnen@gmail.com>
Date:   Sat Sep 16 07:37:01 2023 +0530

    refactor(): `parent` + fix active selection edge case
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.

1 participant