Commit Graph

16 Commits

Author SHA1 Message Date
Hetu Nandu
c155a511f1
chore: Separate files for Redux Types (#38559)
Co-authored-by: Diljit <diljit@appsmith.com>
2025-01-10 10:21:54 +05:30
Ilia
d6f249b42d
chore: add blank line eslint rule (#36369)
## Description
Added ESLint rule to force blank lines between statements. 


Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]
> 🔴 🔴 🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10924926728>
> Commit: 34f57714a1575ee04e94e03cbcaf95e57a96c86c
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10924926728&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank">Cypress dashboard</a>.
> Tags: @tag.All
> Spec: 
> The following are new failures, please fix them before merging the PR:
<ol>
> <li>cypress/e2e/Regression/ClientSide/Anvil/AnvilModal_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilButtonWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCheckboxGroupWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCurrencyInputWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilIconButtonWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInlineButtonWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInputWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilParagraphWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilPhoneInputWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilStatsWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchGroupWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilTableWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilToolbarButtonWidgetSnapshot_spec.ts
>
<li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilZoneSectionWidgetSnapshot_spec.ts</ol>
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">List of identified flaky tests</a>.
> <hr>Wed, 18 Sep 2024 16:33:36 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No

---------

Co-authored-by: Valera Melnikov <valera@appsmith.com>
2024-09-18 19:35:28 +03:00
Valera Melnikov
c42e0317de
fix: change appsmith alias (#35349)
In order to unify package names, we decided to use `@appsmith` prefix as
a marker to indicate that packages belong to our codebase and that these
packages are developed internally. So that we can use this prefix, we
need to rename the alias of the same name. But since `@appsmith` is
currently being used as an alias for `ee` folder, we have to rename the
alias as the first step.

Related discussion
https://theappsmith.slack.com/archives/CPG2ZTXEY/p1722516279126329

EE PR — https://github.com/appsmithorg/appsmith-ee/pull/4801

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10267368821>
> Commit: 2b00af2d257e4d4304db0a80072afef7513de6be
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10267368821&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Tue, 06 Aug 2024 14:24:22 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
2024-08-06 17:52:22 +03:00
Valera Melnikov
a2bfe450b6
chore: enable no-explicit-any rule (#35321)
## Description
-  Enabled the rule `@typescript-eslint/no-explicit-any`
- Suppressed errors with comment
```
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
```

Fixes #35308 

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10181176984>
> Commit: 7fc604e24fa234da7ab2ff56e0b1c715268796ee
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10181176984&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Wed, 31 Jul 2024 15:00:45 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
2024-07-31 18:41:28 +03:00
Nidhi
de443104f2
chore: rm dr ce (#34765)
Co-authored-by: brayn003 <rudra@appsmith.com>
2024-07-31 08:24:51 +05:30
Rahul Barwal
6f9e4503a5
fix: Update BuildingBlockSagas to handle nested object value replacement in queries (#34563)
## Description
This pull request updates the BuildingBlockSagas module to handle nested
object value replacement in queries.

Previously, the module only replaced values at the top level of the
object, but now it correctly handles nested values as well. This
improves the accuracy and reliability of the queries.

The changes include adding a new utility function,
`accessNestedObjectValue`, which is used to access and update nested
values in the `actionConfiguration` object.
Additionally, the `updateWidgetsNameInNewQueries` function has been
modified to use this utility function when replacing widget names in
queries.

Overall, these changes enhance the functionality of the
BuildingBlockSagas module and ensure that queries are properly updated
with the new widget names."


Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.Widget"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9698473149>
> Commit: 6e82692e4cbf8d2e9630499006aa2e0f8adbfdd3
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9698473149&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Widget`

<!-- end of auto-generated comment: Cypress test results  -->




## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Refactor**
- Enhanced internal logic for updating nested object values in widget
names.

- **Tests**
- Added new test case for handling `null` or `undefined` inputs in
utility functions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-28 08:47:45 +05:30
Jacques Ikot
8d9900598b
fix: update newly created queries body with correct widget bindings (#34248)
## Description
When multiple blocks of the same type are dropped unto the canvas right
after each other, the query body of the newly created query does not
update the binding to the latest version of the widgets.

## Solution
We have gotten the newlyUpdatedQueries from the block API, then we
update the actionConfiguration.body and the jsonPathKeys to match the
updated binding name for the block and implement the action in the local
state.


Fixes #34237

## Automation
/ok-to-test tags="@tag.Widget"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9644500854>
> Commit: 562ad23b485afbd0c7b695b0c1aa8e8cc01c94cb
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9644500854&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Widget`

<!-- end of auto-generated comment: Cypress test results  -->






## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced functionality for saving building block widgets to the store.

- **Tests**
  - Updated and added new test cases for pasting building block widgets.

- **Bug Fixes**
- Fixed issues with the import and usage of action types and selectors
in the building block sagas.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-27 15:30:19 +05:30
Rahul Barwal
411122ec56
fix: Refactor dynamic bindings in widgets during building block paste. (#34318)
## Description
* This pull request refactors the function
`handleButtonDynamicTriggerPathList` to
`handleWidgetDynamicTriggerPathList` in order to make it more generic
and handle dynamic trigger paths for all types of widgets.
* Additionally, the pull request moves the function
`handleIfParentIsListWidgetWhilePasting` out of
`handleSpecificCasesWhilePasting` to handle compound cases where the
parent of the current widget needs to be checked.
* Improves the nested object value replacement logic in
`PasteWidgetUtils`.

Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.Templates, @tag.Widget, @tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9656587968>
> Commit: 4b821787d7ab5ad302b458c726c632b1e43b49e4
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9656587968&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Templates, @tag.Widget, @tag.Sanity`

<!-- end of auto-generated comment: Cypress test results  -->










## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Refactor**
  - Simplified handling of pasting widgets by consolidating functions.
  - Improved logic for handling widget pasting scenarios.
  - Reorganized function names for better clarity and consistency.

- **Bug Fixes**
- Enhanced the handling of widgets when their parent is a list widget
during pasting.

- **Tests**
- Updated test cases to reflect changes in widget pasting logic and
function names.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Jacques Ikot <jacquesikot@gmail.com>
2024-06-25 11:43:00 +05:30
Jacques Ikot
dbffbb81c7
feat: add tests for AddAndMove and AddBuildingBlocks to canvas (#34215)
## Description
Ad unit tests for adding and moving building blocks saga.


Fixes #34146

## Automation

/ok-to-test tags="@tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9494392536>
> Commit: c6b9b1b679f284458cc6500729408ddb015adb62
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9494392536&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->






## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Tests**
- Added comprehensive tests for adding and moving building blocks on the
canvas.
  - Updated import paths for consistency in test files.
- Introduced new test suites for sagas handling building block
operations.

- **New Fixtures**
- Added mock data and constants for testing building block
functionalities.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-13 08:46:45 +01:00
Abhijeet
989cd8ed67
chore: Unify ID extraction regex from browser url (#33925)
## Description
Regex update to make it compatible to extract identifiers for both Mongo
ObjectIds and UUIDs. This will help us to keep the unified logic
required in `pg` branch.

## Automation

/ok-to-test tags="@tag.Datasource, @tag.GenerateCRUD, @tag.ImportExport,
@tag.Fork, @tag.Workspace, @tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9405554200>
> Commit: 3959703aab1d10e28d3b80057793476467126929
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9405554200&attempt=2"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->









## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
  - Enhanced URL path handling to support both UUID and Mongo ObjectIds.

- **Refactor**
- Replaced hardcoded page IDs with dynamic variables across multiple
test files for improved maintainability and flexibility.

- **Tests**
- Updated test cases to use dynamic page IDs, ensuring consistency and
easier updates in the future.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-11 15:14:54 +05:30
Jacques Ikot
212a7aff8b
fix: pass correct widgetId for reflow of building blocks (#34143)
## Description
**Problem**
When dragging a dropping a building block on the canvas with reflow (i.e
when other widgets are moved) the process fails. The building block does
not show, the skeleton loader does not go away and an error message is
shown.

**Why**
The flow for adding building blocks with reflow does not contain a
widgetId in the newWidget object, instead, the payload carries a
canvasId parameter.

**Solution**
I have added a check to add the correct value for the widgetId in the
flow for dropping building blocks on canvas with reflow.


Fixes #34139 

## Automation

/ok-to-test tags="@tag.Templates"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9448541112>
> Commit: fc8cfe04c784888514f119b0b51b67ea60014910
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9448541112&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->




## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Bug Fixes**
- Improved the stability of the widget loading process by ensuring the
correct widget ID is assigned when adding and moving building blocks to
the canvas.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-10 20:03:56 +05:30
Rahul Barwal
326b6174e9
fix: drop of bbs inside container causing reflow (#33947)
## Description
Current way of dropping building blocks already knows the widget id
where it is going to be pasted.
`getNewPositionsBasedOnMousePositions` did not take that into account
and used to recalculate the canvas and container widgets.
- This led to reflow and BBs getting reflowed further down(along with
its container)


This PR adds a fix to that ensuring no extra calculation and
subsequently no further reflow.


Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.Widget, @tag.Templates, @tag.IDE"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9379360946>
> Commit: ba9c447fc662d2c1386b4caadd6dc04355c60082
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9379360946&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->














## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Bug Fixes**
  - Improved error handling when pasting building block widgets.
- Enhanced logic for determining container widget when pasting into a
specific widget.

- **Tests**
  - Updated test descriptions for better readability.
  - Added parameter handling in test cases for widget pasting scenarios.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-05 13:16:49 +05:30
Rahul Barwal
c72433dd69
fix: remove building blocks on canvas (#33761)
## Description
Removes building blocks on canvas feature.

Fixes #33756
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9312996633>
> Commit: f8059ccad5bc6e6297b935d26687b330a373cde8
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9312996633&attempt=2"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->





















## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
2024-05-31 11:22:34 +05:30
Rahul Barwal
bb39e4ff53
fix: Handles button binding during buildingblock pasting (#33674)
## Description
This pull request adds the handleButtonDynamicTriggerPathList function
to the BuildingBlockAdditionSagas.ts file. This function is responsible
for handling the dynamic trigger path list for button widgets. It
iterates over the widgetNameMap and updates the dynamicTriggerPathList
of each button widget with the newWidgetName.

Additionally, unit tests have been added to ensure the correct
functionality of the handleButtonDynamicTriggerPathList function. This
change improves the functionality of button widgets when pasting
building block widgets.


Fixes #33658 
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.Widget"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9268894716>
> Commit: a675a5c8a752fea76c130e8bdc1b76e44453ee98
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9268894716&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->




## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No

---------

Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
2024-05-29 09:39:39 +05:30
Jacques Ikot
3f942f480d
fix: allow building blocks to be dropped inside containers (#33660)
## Description
**Problem**
Previously, the implementation of building blocks was limited in
functionality: building blocks could not be placed into containers. This
restriction constrained building blocks to be solely draggable items on
the canvas, reducing their versatility and utility.

**Solution**
To address this limitation, we have improved the paste logic for
building blocks. The updated logic now allows building blocks to be
dropped into other containers.

**Key changes include:**
1. Simplification of the `pastingIntoWidgetId` determination process.
The paste logic previously had multiple conditions to determine this ID.
2. Direct passing of the parent widget ID into the
`pasteBuildingBlockWidgetsSaga` function, streamlining the process and
reducing complexity.
These enhancements significantly increase the flexibility of building
blocks, enabling more complex and nested designs.

Fixes #33606

## Automation

/ok-to-test tags="@tag.Templates, @tag.Widget"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9249397667>
> Commit: e1f72697bd1bc0fe827895a0f09228440f8be0a8
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9249397667&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->

















## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
2024-05-27 07:41:59 +01:00
Rahul Barwal
1c03ef049a
fix: Solves glitch issue(multiple selected to none) while dropping a building block. (#33162)
## Description
This PR does 2 things: 
1. Extracts some of pasting functionality to its utility functions for
readability
2. Includes a new algo for building block pasting to incorporate for
specific asks of BBs


Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.Widget, @tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9011680217>
> Commit: 1c7bd61f91e3f8ac8d9f4bf8cb71637fd240fa83
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9011680217&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->











## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No

---------

Co-authored-by: Jacques Ikot <jacquesikot@gmail.com>
2024-05-09 09:59:12 +05:30