UNPKG

redux-map-gl

Version:

Simplify react-map-gl and redux

74 lines (58 loc) 2.38 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _extends3 = require('babel-runtime/helpers/extends'); var _extends4 = _interopRequireDefault(_extends3); exports.createViewportReducer = createViewportReducer; exports.default = enhanceReducer; var _immutable = require('immutable'); var _types = require('./types'); var _types2 = _interopRequireDefault(_types); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var identityReducer = function identityReducer(state) { return state; }; /** * viewportReducer can be used directly as a reducer rather than an enhancer * @param {[type]} defaults [description] * @param {[Object]} defaults = {} defaults for the initial state * @param {[String]} key = 'viewport' The key which the state should be stored under * @return {Function} A viewport reducer */ function createViewportReducer(defaults, key) { return enhanceReducer(identityReducer, defaults, key); } /** * Enhance a reducer by adding support for managing react-map-gl state. * @param {Function} reducer The reducer to enhance * @param {[Object]} defaults = {} defaults for the initial state * @param {[String]} key = 'viewport' The key which the state should be stored under * @return {Function} An enhanced reducer */ function enhanceReducer(reducer) { var defaults = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var key = arguments.length <= 2 || arguments[2] === undefined ? 'viewport' : arguments[2]; var initialState = (0, _defineProperty3.default)({}, key, (0, _immutable.fromJS)((0, _extends4.default)({ latitude: 0, longitude: 0, bearing: 0, zoom: 1, isDragging: false, startDragLngLat: undefined }, defaults))); return function () { var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0]; var action = arguments[1]; switch (action.type) { case _types2.default.CHANGE_VIEWPORT: { return (0, _extends4.default)({}, state, (0, _defineProperty3.default)({}, key, state[key].merge(action.payload.mapState))); } default: return reducer(state, action); } }; }