UNPKG

qwc2

Version:
182 lines (181 loc) 8.67 kB
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; } }