## Description
This change is a refactor of widget selection logic. It consolidates all
the business logic to make it easy to maintain. It also improves the
performance a bit.
It touched a lot of features as we heavily rely on this
```
Select one
Select multiple with drag
Select multiple with shift
Select multiple with cmd/ctrl
Selections should be on the same level of hierarchy
Unselect all by clicking on the canvas
Unselect all by pressing esc
Select all with cmd + a
Paste in main container
Paste in another container
Undo
Redo
Modal Selection
Modal child selection
Context switching
cmd click
snipping mode
new widget suggestion
onboarding
```
> Refactor widget selection logic
Fixes#19570
## Type of change
- Refactor
## How Has This Been Tested?
All existing tests should pass
### Test Plan
> Add Testsmith test cases links that relate to this PR
### Issues raised during DP testing
https://github.com/appsmithorg/appsmith/pull/19643#issuecomment-1383570810https://github.com/appsmithorg/appsmith/pull/19643#issuecomment-1383607820https://github.com/appsmithorg/appsmith/pull/19643#issuecomment-1385095478
[Bug bash
issues](https://www.notion.so/appsmith/610aa302f3e146a7b090b7dc6bc63ef9?v=0d277a9b07bf4aac9d717bcaf138c33a)
## Checklist:
### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
* fix: [WIP] reset meta to default value
* refactor
* fix reset child widget and type in metaReducer
* Fix type and refactor test
* fix multiselect click
* Add jest test for reset widget action
* Add cypress test
* Add comments
* Add more cases as per comment
* remove `only` from test case
* Add default value case of array with values
* MultiSelect spec fix
* fix currencyInput reset
* refactor test code suggested in comments
* fix type
* fix more type
* fix cypress test
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
We have now separated the multi-select from the select widget, This has simplified the implementation and helped us resolve any issues we where facing because of the complexity bought by both under the same hood and has also increased the discoverability of the widget for our end users. We have also simultaneously taken up multiple enhancements related to the select and multi-select widget.