qwc2
Version:
QGIS Web Client
11 lines • 6.78 kB
JavaScript
var _excluded=["type"];function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)o=n[r],-1===t.indexOf(o)&&{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(-1!==e.indexOf(n))continue;t[n]=r[n]}return t}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
* Copyright 2015 GeoSolutions Sas
* Copyright 2016-2024 Sourcepole AG
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/import{CHANGE_MAP_VIEW,CONFIGURE_MAP,CHANGE_ZOOM_LVL,ZOOM_TO_EXTENT,ZOOM_TO_POINT,PAN_TO,CHANGE_ROTATION,CLICK_ON_MAP,TOGGLE_MAPTIPS,SET_DISPLAY_CRS,SET_SNAPPING_CONFIG}from"../actions/map";import CoordinatesUtils from"../utils/CoordinatesUtils";import MapUtils from"../utils/MapUtils";var defaultState={bbox:{bounds:[0,0,0,0],rotation:0},center:[0,0],dpi:MapUtils.DEFAULT_SCREEN_DPI,projection:"EPSG:3857",displayCrs:"EPSG:3857",zoom:0,scales:[0],resolutions:[0],click:null,size:null,snapping:{enabled:false,active:false}};export default function map(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:defaultState;var action=arguments.length>1?arguments[1]:undefined;// Always reset mapStateSource, CHANGE_MAP_VIEW will set it if necessary
if(state.mapStateSource){state=_objectSpread(_objectSpread({},state),{},{mapStateSource:null})}switch(action.type){case CHANGE_MAP_VIEW:{// eslint-disable-next-line
var type=action.type,params=_objectWithoutProperties(action,_excluded);var newState=_objectSpread(_objectSpread({},state),params);MapUtils.updateMapUrlParams(newState);return newState}case CONFIGURE_MAP:{var _action$defaultdispla;var resolutions=MapUtils.getResolutionsForScales(action.scales,action.crs,state.dpi);var bounds;var center;var zoom;if(action.view.center){center=CoordinatesUtils.reproject(action.view.center,action.view.crs||action.crs,action.crs);zoom=action.view.zoom;bounds=MapUtils.getExtentForCenterAndZoom(center,zoom,resolutions,state.size)}else{bounds=CoordinatesUtils.reprojectBbox(action.view.bounds,action.view.crs||state.projection,action.crs);center=[0.5*(bounds[0]+bounds[2]),0.5*(bounds[1]+bounds[3])];zoom=MapUtils.getZoomForExtent(bounds,resolutions,state.size,0,action.scales.length-1)}return _objectSpread(_objectSpread({},state),{},{bbox:_objectSpread(_objectSpread({},state.bbox),{},{bounds:bounds}),center:center,zoom:zoom,projection:action.crs,displayCrs:(_action$defaultdispla=action.defaultdisplaycrs)!==null&&_action$defaultdispla!==void 0?_action$defaultdispla:action.crs,scales:action.scales,resolutions:resolutions})}case CHANGE_ZOOM_LVL:{return _objectSpread(_objectSpread({},state),{},{zoom:action.zoom})}case ZOOM_TO_EXTENT:{// Ugh...
var topbarHeight=parseFloat(document.querySelector(":root").style.getPropertyValue("--topbar-height").replace(/px$/,""));var bottombarHeight=parseFloat(document.querySelector(":root").style.getPropertyValue("--bottombar-height").replace(/px$/,""));var _bounds=CoordinatesUtils.reprojectBbox(action.extent,action.crs||state.projection,state.projection);var padding=(topbarHeight+bottombarHeight)/state.size.height;var width=_bounds[2]-_bounds[0];var height=_bounds[3]-_bounds[1];_bounds[0]-=padding*width;_bounds[2]+=padding*width;_bounds[1]-=padding*height;_bounds[3]+=padding*height;var _newState=_objectSpread(_objectSpread({},state),{},{center:[0.5*(_bounds[0]+_bounds[2]),0.5*(_bounds[1]+_bounds[3])],zoom:MapUtils.getZoomForExtent(_bounds,state.resolutions,state.size,0,state.scales.length-1)+action.zoomOffset,bbox:_objectSpread(_objectSpread({},state.bbox),{},{bounds:_bounds})});MapUtils.updateMapUrlParams(_newState);return _newState}case ZOOM_TO_POINT:{var _action$rotation;var _newState2=_objectSpread(_objectSpread({},state),{},{center:CoordinatesUtils.reproject(action.pos,action.crs||state.projection,state.projection),zoom:action.zoom,bbox:_objectSpread(_objectSpread({},state.bbox),{},{rotation:(_action$rotation=action.rotation)!==null&&_action$rotation!==void 0?_action$rotation:state.bbox.rotation})});MapUtils.updateMapUrlParams(_newState2);return _newState2}case PAN_TO:{var _action$rotation2;var _newState3=_objectSpread(_objectSpread({},state),{},{center:CoordinatesUtils.reproject(action.pos,action.crs||state.projection,state.projection),bbox:_objectSpread(_objectSpread({},state.bbox),{},{rotation:(_action$rotation2=action.rotation)!==null&&_action$rotation2!==void 0?_action$rotation2:state.bbox.rotation})});MapUtils.updateMapUrlParams(_newState3);return _newState3}case CHANGE_ROTATION:{var _newState4=_objectSpread(_objectSpread({},state),{},{bbox:_objectSpread(_objectSpread({},state.bbox),{},{rotation:action.rotation})});MapUtils.updateMapUrlParams(_newState4);return _newState4}case CLICK_ON_MAP:{return _objectSpread(_objectSpread({},state),{},{click:action.click})}case TOGGLE_MAPTIPS:{return _objectSpread(_objectSpread({},state),{},{maptips:action.active})}case SET_SNAPPING_CONFIG:{return _objectSpread(_objectSpread({},state),{},{snapping:{enabled:action.enabled,active:action.active}})}case SET_DISPLAY_CRS:{return _objectSpread(_objectSpread({},state),{},{displayCrs:action.displayCrs})}default:return state}}