diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ef78d2c..17e75ee7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,11 @@ way to update this template, but currently, we follow a pattern: ---- +## Upcoming version + +* Change lodash import syntax to reduce bundle size (-15.14 KB) + [839](https://github.com/sharetribe/flex-template-web/pull/839) + ## v0.3.0 * Remove custom touched handling from `FieldCheckboxGroup` as it has has become obsolete now that diff --git a/src/app.js b/src/app.js index 65e3a272..bbfa1b92 100644 --- a/src/app.js +++ b/src/app.js @@ -9,7 +9,7 @@ import 'react-dates/initialize'; import Helmet from 'react-helmet'; import { BrowserRouter, StaticRouter } from 'react-router-dom'; import { Provider } from 'react-redux'; -import { mapValues } from 'lodash'; +import mapValues from 'lodash/mapValues'; import moment from 'moment'; import { IntlProvider, addLocaleData } from 'react-intl'; import configureStore from './store'; diff --git a/src/app.test.js b/src/app.test.js index b355b318..e52720e6 100644 --- a/src/app.test.js +++ b/src/app.test.js @@ -2,7 +2,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import ReactDOMServer from 'react-dom/server'; import Helmet from 'react-helmet'; -import { forEach } from 'lodash'; +import forEach from 'lodash/forEach'; import { ClientApp, ServerApp } from './app'; import configureStore from './store'; diff --git a/src/components/ActivityFeed/ActivityFeed.js b/src/components/ActivityFeed/ActivityFeed.js index 9a88c64e..aec9f100 100644 --- a/src/components/ActivityFeed/ActivityFeed.js +++ b/src/components/ActivityFeed/ActivityFeed.js @@ -1,7 +1,7 @@ import React from 'react'; import { string, arrayOf, bool, func, number } from 'prop-types'; import { injectIntl, intlShape, FormattedMessage } from 'react-intl'; -import { dropWhile } from 'lodash'; +import dropWhile from 'lodash/dropWhile'; import classNames from 'classnames'; import { Avatar, InlineTextButton, ReviewRating } from '../../components'; import { formatDate } from '../../util/dates'; diff --git a/src/components/AddImages/AddImages.example.js b/src/components/AddImages/AddImages.example.js index 2a504aff..3d776bbe 100644 --- a/src/components/AddImages/AddImages.example.js +++ b/src/components/AddImages/AddImages.example.js @@ -1,6 +1,7 @@ /* eslint-disable no-console */ import React, { Component } from 'react'; -import { findIndex, uniqueId } from 'lodash'; +import findIndex from 'lodash/findIndex'; +import uniqueId from 'lodash/uniqueId'; import { types as sdkTypes } from '../../util/sdkLoader'; import AddImages from './AddImages'; import css from './AddImages.example.css'; diff --git a/src/components/FieldBirthdayInput/FieldBirthdayInput.js b/src/components/FieldBirthdayInput/FieldBirthdayInput.js index c7ed6883..2510e410 100644 --- a/src/components/FieldBirthdayInput/FieldBirthdayInput.js +++ b/src/components/FieldBirthdayInput/FieldBirthdayInput.js @@ -7,7 +7,7 @@ import { func, instanceOf, object, node, string, bool } from 'prop-types'; import { Field } from 'react-final-form'; import { injectIntl, intlShape } from 'react-intl'; import classNames from 'classnames'; -import { range } from 'lodash'; +import range from 'lodash/range'; import { ValidationError } from '../../components'; import css from './FieldBirthdayInput.css'; diff --git a/src/components/LocationAutocompleteInput/LocationAutocompleteInput.js b/src/components/LocationAutocompleteInput/LocationAutocompleteInput.js index 67957afa..78c2d54c 100644 --- a/src/components/LocationAutocompleteInput/LocationAutocompleteInput.js +++ b/src/components/LocationAutocompleteInput/LocationAutocompleteInput.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { Field } from 'react-final-form'; -import { debounce } from 'lodash'; +import debounce from 'lodash/debounce'; import classNames from 'classnames'; import { propTypes } from '../../util/types'; import { getPlacePredictions, getPlaceDetails } from '../../util/googleMaps'; diff --git a/src/components/PaginationLinks/PaginationLinks.js b/src/components/PaginationLinks/PaginationLinks.js index ed643e23..ddcb0f61 100644 --- a/src/components/PaginationLinks/PaginationLinks.js +++ b/src/components/PaginationLinks/PaginationLinks.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { injectIntl, intlShape } from 'react-intl'; import classNames from 'classnames'; -import { range } from 'lodash'; +import range from 'lodash/range'; import { NamedLink } from '../../components'; import { stringify } from '../../util/urlHelpers'; import { propTypes } from '../../util/types'; diff --git a/src/components/PropertyGroup/PropertyGroup.js b/src/components/PropertyGroup/PropertyGroup.js index 8d2060d6..0c535635 100644 --- a/src/components/PropertyGroup/PropertyGroup.js +++ b/src/components/PropertyGroup/PropertyGroup.js @@ -9,7 +9,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -import { includes } from 'lodash'; +import includes from 'lodash/includes'; import css from './PropertyGroup.css'; diff --git a/src/components/SearchFilters/SearchFilters.js b/src/components/SearchFilters/SearchFilters.js index 68c31987..02e8c2c0 100644 --- a/src/components/SearchFilters/SearchFilters.js +++ b/src/components/SearchFilters/SearchFilters.js @@ -4,7 +4,7 @@ import { object, string, bool, number, func, shape } from 'prop-types'; import { injectIntl, intlShape, FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import { withRouter } from 'react-router-dom'; -import { omit } from 'lodash'; +import omit from 'lodash/omit'; import { SelectSingleFilter, SelectMultipleFilter } from '../../components'; import routeConfiguration from '../../routeConfiguration'; diff --git a/src/components/SearchFiltersMobile/SearchFiltersMobile.js b/src/components/SearchFiltersMobile/SearchFiltersMobile.js index 97788981..ff8b75a8 100644 --- a/src/components/SearchFiltersMobile/SearchFiltersMobile.js +++ b/src/components/SearchFiltersMobile/SearchFiltersMobile.js @@ -3,7 +3,7 @@ import { object, string, bool, number, func, shape, array } from 'prop-types'; import classNames from 'classnames'; import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; import { withRouter } from 'react-router-dom'; -import { omit } from 'lodash'; +import omit from 'lodash/omit'; import routeConfiguration from '../../routeConfiguration'; import { createResourceLocatorString } from '../../util/routes'; diff --git a/src/components/SearchFiltersPanel/SearchFiltersPanel.js b/src/components/SearchFiltersPanel/SearchFiltersPanel.js index 93c2839c..ecbb9a67 100644 --- a/src/components/SearchFiltersPanel/SearchFiltersPanel.js +++ b/src/components/SearchFiltersPanel/SearchFiltersPanel.js @@ -31,7 +31,7 @@ import { array, func, object, shape, string } from 'prop-types'; import classNames from 'classnames'; import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; import { withRouter } from 'react-router-dom'; -import { omit } from 'lodash'; +import omit from 'lodash/omit'; import routeConfiguration from '../../routeConfiguration'; import { createResourceLocatorString } from '../../util/routes'; diff --git a/src/components/SearchMap/SearchMap.js b/src/components/SearchMap/SearchMap.js index 91b17647..3bcd7880 100644 --- a/src/components/SearchMap/SearchMap.js +++ b/src/components/SearchMap/SearchMap.js @@ -2,7 +2,9 @@ import React, { Component } from 'react'; import { arrayOf, bool, func, number, string, shape } from 'prop-types'; import { withGoogleMap, GoogleMap } from 'react-google-maps'; import classNames from 'classnames'; -import { groupBy, isEqual, reduce } from 'lodash'; +import groupBy from 'lodash/groupBy'; +import isEqual from 'lodash/isEqual'; +import reduce from 'lodash/reduce'; import { types as sdkTypes } from '../../util/sdkLoader'; import { propTypes } from '../../util/types'; import { obfuscatedCoordinates } from '../../util/maps'; diff --git a/src/components/StripeBankAccountTokenInputField/StripeBankAccountTokenInputField.js b/src/components/StripeBankAccountTokenInputField/StripeBankAccountTokenInputField.js index 7c790fad..43ec5197 100644 --- a/src/components/StripeBankAccountTokenInputField/StripeBankAccountTokenInputField.js +++ b/src/components/StripeBankAccountTokenInputField/StripeBankAccountTokenInputField.js @@ -8,7 +8,7 @@ import PropTypes from 'prop-types'; import { intlShape, injectIntl, FormattedMessage } from 'react-intl'; import { Field } from 'react-final-form'; import classNames from 'classnames'; -import { debounce } from 'lodash'; +import debounce from 'lodash/debounce'; import config from '../../config'; import { diff --git a/src/components/Topbar/Topbar.js b/src/components/Topbar/Topbar.js index 34596723..29b363b6 100644 --- a/src/components/Topbar/Topbar.js +++ b/src/components/Topbar/Topbar.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { compose } from 'redux'; import { FormattedMessage, intlShape, injectIntl } from 'react-intl'; -import { pickBy } from 'lodash'; +import pickBy from 'lodash/pickBy'; import classNames from 'classnames'; import config from '../../config'; import routeConfiguration from '../../routeConfiguration'; diff --git a/src/components/UserCard/UserCard.js b/src/components/UserCard/UserCard.js index 85473fa0..0092b31d 100644 --- a/src/components/UserCard/UserCard.js +++ b/src/components/UserCard/UserCard.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import { string, func, oneOfType } from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import { truncate } from 'lodash'; +import truncate from 'lodash/truncate'; import classNames from 'classnames'; import { AvatarLarge, NamedLink, InlineTextButton } from '../../components'; import { ensureUser, ensureCurrentUser } from '../../util/data'; diff --git a/src/containers/CheckoutPage/CheckoutPage.duck.js b/src/containers/CheckoutPage/CheckoutPage.duck.js index f90a0a8d..5cb8a10b 100644 --- a/src/containers/CheckoutPage/CheckoutPage.duck.js +++ b/src/containers/CheckoutPage/CheckoutPage.duck.js @@ -1,4 +1,4 @@ -import { pick } from 'lodash'; +import pick from 'lodash/pick'; import config from '../../config'; import { denormalisedResponseEntities } from '../../util/data'; import { storableError } from '../../util/errors'; diff --git a/src/containers/CheckoutPage/CheckoutPageSessionHelpers.js b/src/containers/CheckoutPage/CheckoutPageSessionHelpers.js index e73a1fdb..7195cb39 100644 --- a/src/containers/CheckoutPage/CheckoutPageSessionHelpers.js +++ b/src/containers/CheckoutPage/CheckoutPageSessionHelpers.js @@ -5,7 +5,7 @@ * e.g. tab is open. (Session Store is not related to session cookies.) */ import moment from 'moment'; -import { reduce } from 'lodash'; +import reduce from 'lodash/reduce'; import { types as sdkTypes } from '../../util/sdkLoader'; const { UUID, Money } = sdkTypes; diff --git a/src/containers/EditListingPage/EditListingPage.duck.js b/src/containers/EditListingPage/EditListingPage.duck.js index 69b41f12..ca821c67 100644 --- a/src/containers/EditListingPage/EditListingPage.duck.js +++ b/src/containers/EditListingPage/EditListingPage.duck.js @@ -1,4 +1,7 @@ -import { omit, omitBy, isUndefined, mergeWith } from 'lodash'; +import omit from 'lodash/omit'; +import omitBy from 'lodash/omitBy'; +import isUndefined from 'lodash/isUndefined'; +import mergeWith from 'lodash/mergeWith'; import { types as sdkTypes } from '../../util/sdkLoader'; import { storableError } from '../../util/errors'; import { addMarketplaceEntities } from '../../ducks/marketplaceData.duck'; diff --git a/src/containers/InboxPage/InboxPage.duck.js b/src/containers/InboxPage/InboxPage.duck.js index e5f0e9ec..0276ec45 100644 --- a/src/containers/InboxPage/InboxPage.duck.js +++ b/src/containers/InboxPage/InboxPage.duck.js @@ -1,4 +1,5 @@ -import { reverse, sortBy } from 'lodash'; +import reverse from 'lodash/reverse'; +import sortBy from 'lodash/sortBy'; import { storableError } from '../../util/errors'; import { parse } from '../../util/urlHelpers'; import { addMarketplaceEntities } from '../../ducks/marketplaceData.duck'; diff --git a/src/containers/ListingPage/ListingPage.duck.js b/src/containers/ListingPage/ListingPage.duck.js index c464a0cc..9f29c2e9 100644 --- a/src/containers/ListingPage/ListingPage.duck.js +++ b/src/containers/ListingPage/ListingPage.duck.js @@ -1,4 +1,4 @@ -import { pick } from 'lodash'; +import pick from 'lodash/pick'; import config from '../../config'; import { types as sdkTypes } from '../../util/sdkLoader'; import { storableError } from '../../util/errors'; diff --git a/src/containers/SearchPage/MainPanel.js b/src/containers/SearchPage/MainPanel.js index bd985270..cf52c449 100644 --- a/src/containers/SearchPage/MainPanel.js +++ b/src/containers/SearchPage/MainPanel.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import { array, bool, func, number, object, objectOf, string } from 'prop-types'; import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; -import { merge } from 'lodash'; +import merge from 'lodash/merge'; import { propTypes } from '../../util/types'; import { SearchResultsPanel, diff --git a/src/containers/SearchPage/SearchPage.duck.js b/src/containers/SearchPage/SearchPage.duck.js index 3a0c8f1c..4a483478 100644 --- a/src/containers/SearchPage/SearchPage.duck.js +++ b/src/containers/SearchPage/SearchPage.duck.js @@ -1,4 +1,4 @@ -import { unionWith } from 'lodash'; +import unionWith from 'lodash/unionWith'; import { storableError } from '../../util/errors'; import { addMarketplaceEntities } from '../../ducks/marketplaceData.duck'; diff --git a/src/containers/SearchPage/SearchPage.helpers.js b/src/containers/SearchPage/SearchPage.helpers.js index c61f3c46..7315d2dc 100644 --- a/src/containers/SearchPage/SearchPage.helpers.js +++ b/src/containers/SearchPage/SearchPage.helpers.js @@ -1,4 +1,4 @@ -import { intersection } from 'lodash'; +import intersection from 'lodash/intersection'; import config from '../../config'; import { createResourceLocatorString } from '../../util/routes'; import { createSlug } from '../../util/urlHelpers'; diff --git a/src/containers/SearchPage/SearchPage.js b/src/containers/SearchPage/SearchPage.js index a27f0cd3..eaebf54e 100644 --- a/src/containers/SearchPage/SearchPage.js +++ b/src/containers/SearchPage/SearchPage.js @@ -4,7 +4,9 @@ import { injectIntl, intlShape } from 'react-intl'; import { connect } from 'react-redux'; import { compose } from 'redux'; import { withRouter } from 'react-router-dom'; -import { debounce, isEqual, unionWith } from 'lodash'; +import debounce from 'lodash/debounce'; +import isEqual from 'lodash/isEqual'; +import unionWith from 'lodash/unionWith'; import classNames from 'classnames'; import config from '../../config'; import routeConfiguration from '../../routeConfiguration'; diff --git a/src/containers/StyleguidePage/StyleguidePage.js b/src/containers/StyleguidePage/StyleguidePage.js index f344ec9c..055cb596 100644 --- a/src/containers/StyleguidePage/StyleguidePage.js +++ b/src/containers/StyleguidePage/StyleguidePage.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { isEmpty } from 'lodash'; +import isEmpty from 'lodash/isEmpty'; import classNames from 'classnames'; import { NamedLink } from '../../components'; diff --git a/src/containers/TransactionPage/TransactionPage.duck.js b/src/containers/TransactionPage/TransactionPage.duck.js index 4479a409..d605f67f 100644 --- a/src/containers/TransactionPage/TransactionPage.duck.js +++ b/src/containers/TransactionPage/TransactionPage.duck.js @@ -1,4 +1,4 @@ -import { pick } from 'lodash'; +import pick from 'lodash/pick'; import { types as sdkTypes } from '../../util/sdkLoader'; import { isTransactionsTransitionInvalidTransition, storableError } from '../../util/errors'; import { diff --git a/src/ducks/Auth.duck.js b/src/ducks/Auth.duck.js index e9f4f214..b20b4584 100644 --- a/src/ducks/Auth.duck.js +++ b/src/ducks/Auth.duck.js @@ -1,4 +1,4 @@ -import { isEmpty } from 'lodash'; +import isEmpty from 'lodash/isEmpty'; import { clearCurrentUser, fetchCurrentUser } from './user.duck'; import { storableError } from '../util/errors'; import * as log from '../util/log'; diff --git a/src/ducks/FlashNotification.duck.js b/src/ducks/FlashNotification.duck.js index e6cf66cf..2d4d3ec0 100644 --- a/src/ducks/FlashNotification.duck.js +++ b/src/ducks/FlashNotification.duck.js @@ -5,7 +5,8 @@ * https://github.com/erikras/ducks-modular-redux */ -import { find, findIndex } from 'lodash'; +import find from 'lodash/find'; +import findIndex from 'lodash/findIndex'; // Actions: system notifications export const ADD_FLASH_NOTIFICATION = 'app/FlashNotification/ADD_NOTIFICATION'; diff --git a/src/ducks/user.duck.js b/src/ducks/user.duck.js index d52c5de1..08b0caed 100644 --- a/src/ducks/user.duck.js +++ b/src/ducks/user.duck.js @@ -1,4 +1,5 @@ -import { omitBy, isUndefined } from 'lodash'; +import omitBy from 'lodash/omitBy'; +import isUndefined from 'lodash/isUndefined'; import config from '../config'; import { denormalisedResponseEntities } from '../util/data'; import { storableError } from '../util/errors'; diff --git a/src/forms/ContactDetailsForm/ContactDetailsForm.js b/src/forms/ContactDetailsForm/ContactDetailsForm.js index bdd84c8f..7244f466 100644 --- a/src/forms/ContactDetailsForm/ContactDetailsForm.js +++ b/src/forms/ContactDetailsForm/ContactDetailsForm.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { compose } from 'redux'; import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; import { Form as FinalForm } from 'react-final-form'; -import { isEqual } from 'lodash'; +import isEqual from 'lodash/isEqual'; import classNames from 'classnames'; import { propTypes } from '../../util/types'; import * as validators from '../../util/validators'; diff --git a/src/forms/EditListingPhotosForm/EditListingPhotosForm.js b/src/forms/EditListingPhotosForm/EditListingPhotosForm.js index 906cd713..d0bdb801 100644 --- a/src/forms/EditListingPhotosForm/EditListingPhotosForm.js +++ b/src/forms/EditListingPhotosForm/EditListingPhotosForm.js @@ -3,7 +3,7 @@ import { array, bool, func, object, shape, string } from 'prop-types'; import { compose } from 'redux'; import { Form as FinalForm, Field } from 'react-final-form'; import { FormattedMessage, intlShape, injectIntl } from 'react-intl'; -import { isEqual } from 'lodash'; +import isEqual from 'lodash/isEqual'; import classNames from 'classnames'; import { propTypes } from '../../util/types'; import { nonEmptyArray, composeValidators } from '../../util/validators'; diff --git a/src/forms/PasswordChangeForm/PasswordChangeForm.js b/src/forms/PasswordChangeForm/PasswordChangeForm.js index e9f1806d..f023f0f1 100644 --- a/src/forms/PasswordChangeForm/PasswordChangeForm.js +++ b/src/forms/PasswordChangeForm/PasswordChangeForm.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { compose } from 'redux'; import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; import { Form as FinalForm } from 'react-final-form'; -import { isEqual } from 'lodash'; +import isEqual from 'lodash/isEqual'; import classNames from 'classnames'; import { propTypes } from '../../util/types'; import * as validators from '../../util/validators'; diff --git a/src/forms/PasswordRecoveryForm/PasswordRecoveryForm.js b/src/forms/PasswordRecoveryForm/PasswordRecoveryForm.js index 5ecc62d6..8c7b823d 100644 --- a/src/forms/PasswordRecoveryForm/PasswordRecoveryForm.js +++ b/src/forms/PasswordRecoveryForm/PasswordRecoveryForm.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { compose } from 'redux'; import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; import { Form as FinalForm } from 'react-final-form'; -import { isEqual } from 'lodash'; +import isEqual from 'lodash/isEqual'; import classNames from 'classnames'; import { propTypes } from '../../util/types'; import * as validators from '../../util/validators'; diff --git a/src/forms/ProfileSettingsForm/ProfileSettingsForm.js b/src/forms/ProfileSettingsForm/ProfileSettingsForm.js index 8b4d106f..6224b96b 100644 --- a/src/forms/ProfileSettingsForm/ProfileSettingsForm.js +++ b/src/forms/ProfileSettingsForm/ProfileSettingsForm.js @@ -3,7 +3,7 @@ import { bool, string } from 'prop-types'; import { compose } from 'redux'; import { FormattedMessage, injectIntl, intlShape } from 'react-intl'; import { Field, Form as FinalForm } from 'react-final-form'; -import { isEqual } from 'lodash'; +import isEqual from 'lodash/isEqual'; import classNames from 'classnames'; import { ensureCurrentUser } from '../../util/data'; import { propTypes } from '../../util/types'; diff --git a/src/util/contextHelpers.js b/src/util/contextHelpers.js index 0f3ebd60..a945220e 100644 --- a/src/util/contextHelpers.js +++ b/src/util/contextHelpers.js @@ -1,6 +1,6 @@ import React, { Component as ReactComponent } from 'react'; import PropTypes from 'prop-types'; -import { throttle } from 'lodash'; +import throttle from 'lodash/throttle'; /** * A higher order component (HOC) to take the togglePageClassNames function from diff --git a/src/util/currency.js b/src/util/currency.js index 2ea64f36..fd21af9a 100644 --- a/src/util/currency.js +++ b/src/util/currency.js @@ -1,4 +1,5 @@ -import { has, trimEnd } from 'lodash'; +import has from 'lodash/has'; +import trimEnd from 'lodash/trimEnd'; import Decimal from 'decimal.js'; import { types as sdkTypes } from './sdkLoader'; import { subUnitDivisors } from './currencyConfig'; diff --git a/src/util/data.js b/src/util/data.js index f7268e4f..bca9bd21 100644 --- a/src/util/data.js +++ b/src/util/data.js @@ -1,4 +1,6 @@ -import { isArray, reduce, toPairs } from 'lodash'; +import isArray from 'lodash/isArray'; +import reduce from 'lodash/reduce'; +import toPairs from 'lodash/toPairs'; /** * Combine the given relationships objects diff --git a/src/util/maps.js b/src/util/maps.js index c2060230..271fd795 100644 --- a/src/util/maps.js +++ b/src/util/maps.js @@ -1,4 +1,4 @@ -import { memoize } from 'lodash'; +import memoize from 'lodash/memoize'; import { types as sdkTypes } from './sdkLoader'; import config from '../config'; diff --git a/src/util/richText.js b/src/util/richText.js index c918d2c7..546c394e 100644 --- a/src/util/richText.js +++ b/src/util/richText.js @@ -1,5 +1,7 @@ import React from 'react'; -import { chain } from 'lodash'; +import flow from 'lodash/flow'; +import flatMap from 'lodash/flatMap'; +import map from 'lodash/map'; import { ExternalLink } from '../components'; /** @@ -125,11 +127,12 @@ export const richText = (text, options) => { const nonWhiteSpaceSequence = /([^\s]+)/gi; return text.split(nonWhiteSpaceSequence).reduce((acc, nextChild, i) => { - const parts = chain([nextChild]) - .flatMap(w => linkifyOrWrapLinkSplit(w, i, { linkify, linkClass: linkOrLongWordClass })) - .flatMap(w => zwspAroundSpecialCharsSplit(w, '/,')) - .map((w, j) => wrapLongWord(w, `${i}${j}`, { longWordMinLength, longWordClass })) - .value(); + const parts = flow([ + v => + flatMap(v, w => linkifyOrWrapLinkSplit(w, i, { linkify, linkClass: linkOrLongWordClass })), + v => flatMap(v, w => zwspAroundSpecialCharsSplit(w, '/,')), + v => map(v, (w, j) => wrapLongWord(w, `${i}${j}`, { longWordMinLength, longWordClass })), + ])([nextChild]); return acc.concat(parts); }, []); }; diff --git a/src/util/routes.js b/src/util/routes.js index 3b2d54e8..e5cc6074 100644 --- a/src/util/routes.js +++ b/src/util/routes.js @@ -1,4 +1,4 @@ -import { find } from 'lodash'; +import find from 'lodash/find'; import { matchPath } from 'react-router-dom'; import pathToRegexp from 'path-to-regexp'; import { stringify } from './urlHelpers'; diff --git a/src/util/test-helpers.js b/src/util/test-helpers.js index 2861c47b..72605de6 100644 --- a/src/util/test-helpers.js +++ b/src/util/test-helpers.js @@ -1,5 +1,5 @@ import React from 'react'; -import { mapValues } from 'lodash'; +import mapValues from 'lodash/mapValues'; import Enzyme, { shallow, mount } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; import toJson from 'enzyme-to-json'; diff --git a/src/util/validators.js b/src/util/validators.js index 58bd1fae..dc91a7ee 100644 --- a/src/util/validators.js +++ b/src/util/validators.js @@ -1,6 +1,6 @@ import moment from 'moment'; import { types as sdkTypes } from './sdkLoader'; -import { toPairs } from 'lodash'; +import toPairs from 'lodash/toPairs'; const { LatLng, Money } = sdkTypes;