feat: add global query manager
Objective:
As a user I would like to have ability to open map, zoom to some place and refresh page with seeing the same place as before. The same should work for someone else if I send them my link.
What has been done:
- Added transferring query params data to redux store
- Added transferring redux store data to query params with debounce time
- Done improvements of map config management: utils has been divided into separate hooks (cleanup) and number of rerenders has been minimized (optimization)
- Added map instance listeners in which there is a map position listener. In the future it will be also used for plugins and global event bus
What has been done additionally:
- Done improvements of user map position management. Position has been divided into initial and last. Initial is used only on initialization of the map and last is constantly following a real used position in the map instance with debounce. Redux can’t handle large amounts of actions so this value is only a reference and can’t be exactly the same as the real one in the map instance, right now used only in the query manager.
- Done improvements for initMapData action, in the new version it is handling also additional checks of model/background id existence
Added
latLngToPoint
util which is an universal util for transforming lat/lng position to cartesian coordinates - BREAKING: middleware is no longer listening for initMapData action due to changes in use of getUpdatedMapData util - it is now used directly in the action so middleware is not needed.
Important information
- There are a lot of test files lacking in the DRAFT version
- This PR is very big. IMO amount of changes here are probably were too big than expected BUT its superb important to remember most of these changes are reusable: utils, middleware, data, event listeners - and so we would need implement them in the future