UNPKG

@randy.tarampi/jsx

Version:

Some common JSX components for www.randytarampi.ca

130 lines (104 loc) 5.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.ConnectedMappedPosts = exports.connectMappedPosts = exports.MAPPED_POSTS_FETCHING_POSTS_PER_PAGE = exports.MAPPED_POSTS_FETCH_DEBOUNCE_DELAY = void 0; var _debounce2 = _interopRequireDefault(require("lodash/debounce")); var _js = require("@randy.tarampi/js"); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactRedux = require("react-redux"); var _actions = require("../actions"); var _mappedPosts = require("../components/mappedPosts"); var _data = require("../data"); var _selectors = require("../data/selectors"); var _util = require("../util"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var getBasePostsSelectorForType = function getBasePostsSelectorForType(type) { switch (type) { case _js.Photo.type: case _js.Gallery.type: return _selectors.selectors.getPhotoPosts; case _js.Post.type: return _selectors.selectors.getWordPosts; default: return _selectors.selectors.getPosts; } }; var MAPPED_POSTS_FETCH_DEBOUNCE_DELAY = 500; exports.MAPPED_POSTS_FETCH_DEBOUNCE_DELAY = MAPPED_POSTS_FETCH_DEBOUNCE_DELAY; var MAPPED_POSTS_FETCHING_POSTS_PER_PAGE = 32; exports.MAPPED_POSTS_FETCHING_POSTS_PER_PAGE = MAPPED_POSTS_FETCHING_POSTS_PER_PAGE; var connectMappedPosts = (0, _reactRedux.connect)(function (state, ownProps) { var isLoadingUrlSelector = (0, _data.createIsLoadingUrlSelector)(); var errorForUrlSelector = (0, _data.createGetErrorForUrlSelector)(); var _ownProps$type = ownProps.type, type = _ownProps$type === void 0 ? "global" : _ownProps$type, fetchUrl = ownProps.fetchUrl; var _ref = ownProps.match && ownProps.match.params || ownProps, filter = _ref.filter, filterValue = _ref.filterValue; var mapState = _selectors.selectors.getMap(state, ownProps.id); var _ref2 = mapState ? mapState.toJS() : {}, center = _ref2.center, heading = _ref2.heading, mapType = _ref2.type, tilt = _ref2.tilt, zoom = _ref2.zoom, bounds = _ref2.bounds; var props = { isLoading: isLoadingUrlSelector(state, fetchUrl), error: errorForUrlSelector(state, fetchUrl), defaultCenter: center, defaultHeading: heading, defaultMapTypeId: mapType, defaultTilt: tilt, defaultZoom: zoom, currentBounds: bounds, currentCenter: center, currentHeading: heading, currentTilt: tilt, currentZoom: zoom }; var postsFilters = [_util.generateFilterFunctionForFilterName.location()]; if (filter) { postsFilters.push(_util.generateFilterFunctionForFilterName[filter](filterValue)); } if (bounds) { postsFilters.push(_util.generateFilterFunctionForFilterName.boundingBox(bounds.north, bounds.east, bounds.south, bounds.west)); } postsFilters.push(_util.generateTransformFunctionForTransformName.location(undefined, 0.0004)); var postsSelector = (0, _selectors.createComplexPostsSelector)(postsFilters, [getBasePostsSelectorForType(type)]); props.posts = postsSelector(state); return props; }, function (dispatch, _ref3) { var fetchUrl = _ref3.fetchUrl, type = _ref3.type, match = _ref3.match, fetchPostsParams = _ref3.fetchPostsParams, id = _ref3.id; return { fetchPosts: (0, _debounce2["default"])(function (passedParams) { var searchParams = _objectSpread(_objectSpread(_objectSpread({}, match && match.params), fetchPostsParams), {}, { perPage: MAPPED_POSTS_FETCHING_POSTS_PER_PAGE }, passedParams); return dispatch((0, _actions.fetchPostsForMapCreator)(id, fetchUrl, type, searchParams)); }, MAPPED_POSTS_FETCH_DEBOUNCE_DELAY) }; }); exports.connectMappedPosts = connectMappedPosts; var ConnectedMappedPosts = connectMappedPosts(_mappedPosts.MappedPostsComponent); exports.ConnectedMappedPosts = ConnectedMappedPosts; ConnectedMappedPosts.propTypes = { id: _propTypes["default"].string.isRequired, fetchUrl: _propTypes["default"].string.isRequired, type: _propTypes["default"].oneOf([_js.Post.type, _js.Photo.type]) }; ConnectedMappedPosts.defaultProps = { id: "map-posts", fetchUrl: "/posts" }; var _default = ConnectedMappedPosts; exports["default"] = _default;