@zengenti/contensis-react-base 2.4.1-beta.6 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/README.md +77 -0
- package/cjs/{App-2334f3e0.js → App-79703372.js} +213 -8
- package/cjs/App-79703372.js.map +1 -0
- package/cjs/{RouteLoader-5c44f039.js → RouteLoader-f67bbf9e.js} +8 -39
- package/cjs/RouteLoader-f67bbf9e.js.map +1 -0
- package/cjs/{ToJs-ca9bea03.js → ToJs-d72e5b10.js} +58 -2
- package/cjs/ToJs-d72e5b10.js.map +1 -0
- package/cjs/{actions-e22726ed.js → actions-e9f69947.js} +1 -1
- package/cjs/actions-e9f69947.js.map +1 -0
- package/cjs/client.js +13 -15
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +38 -38
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/forms.js +1 -2
- package/cjs/forms.js.map +1 -1
- package/cjs/{login-6eb5e46d.js → login-4f274c6a.js} +8 -5
- package/cjs/login-4f274c6a.js.map +1 -0
- package/cjs/reducers-cb531715.js +207 -0
- package/cjs/reducers-cb531715.js.map +1 -0
- package/cjs/redux.js +4 -4
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +4 -5
- package/cjs/routing.js.map +1 -1
- package/cjs/search.js +6 -4
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-69c3d37c.js → selectors-1295124a.js} +9 -1
- package/cjs/selectors-1295124a.js.map +1 -0
- package/cjs/user.js +82 -27
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +21 -91
- package/cjs/util.js.map +1 -1
- package/cjs/{version-d8f5b436.js → version-3a808c12.js} +4 -4
- package/cjs/version-3a808c12.js.map +1 -0
- package/esm/{App-b2b80182.js → App-452c2ab3.js} +213 -8
- package/esm/App-452c2ab3.js.map +1 -0
- package/esm/{RouteLoader-2cfdfc5c.js → RouteLoader-dedcc835.js} +8 -38
- package/esm/RouteLoader-dedcc835.js.map +1 -0
- package/esm/{ToJs-19a3244a.js → ToJs-6e7b247c.js} +47 -3
- package/esm/ToJs-6e7b247c.js.map +1 -0
- package/esm/{actions-fda5e103.js → actions-ddd9c623.js} +1 -1
- package/esm/actions-ddd9c623.js.map +1 -0
- package/esm/client.js +15 -16
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +37 -37
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/forms.js +1 -2
- package/esm/forms.js.map +1 -1
- package/esm/{login-866fe64c.js → login-1f9ad133.js} +8 -6
- package/esm/login-1f9ad133.js.map +1 -0
- package/esm/reducers-feab84fc.js +183 -0
- package/esm/reducers-feab84fc.js.map +1 -0
- package/esm/redux.js +5 -5
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +4 -5
- package/esm/routing.js.map +1 -1
- package/esm/search.js +6 -4
- package/esm/search.js.map +1 -1
- package/esm/{selectors-170581d2.js → selectors-68799788.js} +9 -1
- package/esm/selectors-68799788.js.map +1 -0
- package/esm/user.js +80 -29
- package/esm/user.js.map +1 -1
- package/esm/util.js +20 -90
- package/esm/util.js.map +1 -1
- package/esm/{version-8d757fb4.js → version-64906b26.js} +5 -4
- package/esm/version-64906b26.js.map +1 -0
- package/models/app/App.d.ts +4 -0
- package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +40 -0
- package/models/app/pages/VersionInfo/components/VersionInfo.styled.d.ts +1 -0
- package/models/app/pages/VersionInfo/index.d.ts +2 -0
- package/models/app/pages/VersionInfo/transformations/state-to-versioninfoprops.mapper.d.ts +3 -0
- package/models/client/client.d.ts +11 -0
- package/models/client/index.d.ts +3 -0
- package/models/config.d.ts +33 -0
- package/models/forms/index.d.ts +1 -0
- package/models/index.d.ts +5 -0
- package/models/redux/actions/index.d.ts +9 -0
- package/models/redux/actions/navigation.d.ts +1 -0
- package/models/redux/actions/version.d.ts +2 -0
- package/models/redux/index.d.ts +17 -0
- package/models/redux/reducers/navigation.d.ts +3 -0
- package/models/redux/reducers/version.d.ts +3 -0
- package/models/redux/sagas/index.d.ts +1 -0
- package/models/redux/sagas/navigation.d.ts +4 -0
- package/models/redux/selectors/index.d.ts +9 -0
- package/models/redux/selectors/navigation.d.ts +3 -0
- package/models/redux/selectors/version.d.ts +3 -0
- package/models/redux/store/history.d.ts +2 -0
- package/models/redux/store/injectors.d.ts +19 -0
- package/models/redux/store/routerMiddleware.d.ts +7 -0
- package/models/redux/store/store.d.ts +3 -0
- package/models/redux/types/index.d.ts +9 -0
- package/models/redux/types/navigation.d.ts +3 -0
- package/models/redux/types/version.d.ts +2 -0
- package/models/redux/util.d.ts +1 -0
- package/models/routing/components/Loading.d.ts +5 -0
- package/models/routing/components/NotFound.d.ts +6 -0
- package/models/routing/components/RouteLoader.d.ts +3 -0
- package/models/routing/components/Status.d.ts +4 -0
- package/models/routing/index.d.ts +4 -0
- package/models/routing/redux/actions.d.ts +6 -0
- package/models/routing/redux/reducers.d.ts +4 -0
- package/models/routing/redux/sagas.d.ts +1 -0
- package/models/routing/redux/selectors.d.ts +25 -0
- package/models/routing/redux/types.d.ts +12 -0
- package/models/routing/routes.d.ts +99 -0
- package/models/routing/util/expressions.d.ts +2 -0
- package/models/routing/util/find-contenttype-mapping.d.ts +2 -0
- package/models/routing/util/queries.d.ts +2 -0
- package/models/search/containers/withListing.d.ts +4 -0
- package/models/search/containers/withSearch.d.ts +4 -0
- package/models/search/hooks/useMinilist.hook.d.ts +23 -0
- package/models/search/index.d.ts +16 -0
- package/models/search/models/Enums.d.ts +5 -0
- package/models/search/models/Queries.d.ts +43 -0
- package/models/search/models/Search.d.ts +180 -0
- package/models/search/models/SearchActions.d.ts +127 -0
- package/models/search/models/SearchProps.d.ts +45 -0
- package/models/search/models/SearchState.d.ts +83 -0
- package/models/search/models/SearchUtil.d.ts +6 -0
- package/models/search/models/index.d.ts +3 -0
- package/models/search/redux/actions.d.ts +39 -0
- package/models/search/redux/queries.d.ts +3 -0
- package/models/search/redux/reducers.d.ts +4 -0
- package/models/search/redux/sagas.d.ts +20 -0
- package/models/search/redux/schema.d.ts +9 -0
- package/models/search/redux/selectors.d.ts +112 -0
- package/models/search/redux/types.d.ts +20 -0
- package/models/search/redux/util.d.ts +25 -0
- package/models/search/search/ContensisDeliveryApi.d.ts +32 -0
- package/models/search/search/ToJs.d.ts +4 -0
- package/models/search/search/expressions.d.ts +29 -0
- package/models/search/search/performance.d.ts +1 -0
- package/models/search/search/schema.d.ts +28 -0
- package/models/search/search/util.d.ts +21 -0
- package/models/search/transformations/entry-to-filteritem.mapper.d.ts +2 -0
- package/models/search/transformations/filters-to-filterexpression.d.ts +1 -0
- package/models/search/transformations/filters-to-filterexpression.mapper.d.ts +2 -0
- package/models/search/transformations/searchresult-to-state.mapper.d.ts +6 -0
- package/models/search/transformations/state-to-queryparams.mapper.d.ts +12 -0
- package/models/search/transformations/state-to-searchuri.d.ts +14 -0
- package/models/server/features/caching/cacheDuration.schema.d.ts +7 -0
- package/models/server/features/caching/cacheHashing.d.ts +1 -0
- package/models/server/features/caching/setCachingHeaders.d.ts +6 -0
- package/models/server/features/response-handler/index.d.ts +12 -0
- package/models/server/features/response-handler/types.d.ts +5 -0
- package/models/server/features/reverse-proxy/index.d.ts +4 -0
- package/models/server/features/static-assets/index.d.ts +14 -0
- package/models/server/internalServer.d.ts +10 -0
- package/models/server/middleware/bundleManipulation.d.ts +6 -0
- package/models/server/middleware/resolveStartup.d.ts +13 -0
- package/models/server/util/displayStartupConfiguration.d.ts +2 -0
- package/models/server/util/staticPaths.d.ts +1 -0
- package/models/server/util/stringifyAttributes.d.ts +2 -0
- package/models/server/webApp.d.ts +9 -0
- package/models/testImmer/redux/reducer.d.ts +8 -0
- package/models/testImmer/redux/selectors.d.ts +3 -0
- package/models/user/components/Login.d.ts +2 -0
- package/models/user/components/LoginForm.d.ts +16 -0
- package/models/user/components/LogoutForm.d.ts +12 -0
- package/models/user/components.styled/Login.styled.d.ts +2 -0
- package/models/user/components.styled/LoginForm.styled.d.ts +2 -0
- package/models/user/containers/ChangePassword.container.d.ts +2 -0
- package/models/user/containers/ForgotPassword.container.d.ts +2 -0
- package/models/user/containers/Login.container.d.ts +2 -0
- package/models/user/containers/Registration.container.d.ts +2 -0
- package/models/user/hocs/withLogin.d.ts +2 -0
- package/models/user/hocs/withRegistration.d.ts +2 -0
- package/models/user/hooks/useChangePassword.d.ts +9 -0
- package/models/user/hooks/useForgotPassword.d.ts +14 -0
- package/models/user/hooks/useLogin.d.ts +12 -0
- package/models/user/hooks/useRegistration.d.ts +8 -0
- package/models/user/index.d.ts +16 -0
- package/models/user/redux/actions.d.ts +6 -0
- package/models/user/redux/reducers.d.ts +4 -0
- package/models/user/redux/sagas/index.d.ts +1 -0
- package/models/user/redux/sagas/login.d.ts +36 -0
- package/models/user/redux/sagas/register.d.ts +1 -0
- package/models/user/redux/sagas/resetPassword.d.ts +1 -0
- package/models/user/redux/selectors.d.ts +27 -0
- package/models/user/redux/types.d.ts +21 -0
- package/models/user/transformations/mapClientCredentials.d.ts +2 -0
- package/models/user/util/ContensisManagementApi.d.ts +9 -0
- package/models/user/util/CookieHelper.class.d.ts +5 -0
- package/models/user/util/LoginHelper.class.d.ts +52 -0
- package/models/user/util/OidcUserManager.d.ts +18 -0
- package/models/user/util/matchGroups.d.ts +3 -0
- package/models/user/util/userHelper.d.ts +12 -0
- package/models/util/ContensisDeliveryApi.d.ts +40 -0
- package/models/util/ToJs.d.ts +1 -0
- package/models/util/fromJSLeaveImmer.d.ts +2 -0
- package/models/util/fromJSOrdered.d.ts +2 -0
- package/models/util/index.d.ts +5 -0
- package/models/util/json-mapper.d.ts +81 -0
- package/models/util/navHelper.d.ts +7 -0
- package/models/util/navigation.d.ts +4 -0
- package/models/util/performance.d.ts +1 -0
- package/models/util/pickProject.d.ts +2 -0
- package/models/util/schema.d.ts +25 -0
- package/models/util/stringifyStrings.d.ts +2 -0
- package/models/util/urls.d.ts +9 -0
- package/package-lock.json +7920 -7722
- package/package.json +17 -11
- package/cjs/App-2334f3e0.js.map +0 -1
- package/cjs/RouteLoader-5c44f039.js.map +0 -1
- package/cjs/ToJs-ca9bea03.js.map +0 -1
- package/cjs/actions-e22726ed.js.map +0 -1
- package/cjs/login-6eb5e46d.js.map +0 -1
- package/cjs/reducers-c42035ab.js +0 -120
- package/cjs/reducers-c42035ab.js.map +0 -1
- package/cjs/selectors-69c3d37c.js.map +0 -1
- package/cjs/version-d8f5b436.js.map +0 -1
- package/esm/App-b2b80182.js.map +0 -1
- package/esm/RouteLoader-2cfdfc5c.js.map +0 -1
- package/esm/ToJs-19a3244a.js.map +0 -1
- package/esm/actions-fda5e103.js.map +0 -1
- package/esm/login-866fe64c.js.map +0 -1
- package/esm/reducers-b426d14a.js +0 -108
- package/esm/reducers-b426d14a.js.map +0 -1
- package/esm/selectors-170581d2.js.map +0 -1
- package/esm/version-8d757fb4.js.map +0 -1
package/esm/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sources":["../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/ToJs.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/types.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/actions.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/models/Enums.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/selectors.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/containers/withSearch.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/containers/withListing.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/ContensisDeliveryApi.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/performance.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/util.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/schema.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/expressions.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/queries.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/state-to-searchuri.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/searchresult-to-state.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpression.mapper.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpression.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/state-to-queryparams.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/util.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/entry-to-filteritem.mapper.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/sagas.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/hooks/useMinilist.hook.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/schema.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/reducers.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable react/display-name */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\n\nexport const toJS =\n <Props extends { [key: string]: any }>(\n WrappedComponent: React.ComponentType<Props>\n ): React.ComponentType<Props> =>\n (wrappedComponentProps: Props) => {\n const KEY = 0;\n const VALUE = 1;\n\n const propsJS = Object.entries(wrappedComponentProps).reduce<Props>(\n (newProps: any, wrappedComponentProp) => {\n newProps[wrappedComponentProp[KEY]] =\n 'toJS' in wrappedComponentProp[VALUE]\n ? wrappedComponentProp[VALUE].toJS()\n : wrappedComponentProp[VALUE];\n return newProps as Props;\n },\n {} as Props\n );\n\n return <WrappedComponent {...propsJS} />;\n };\n","const ACTION_PREFIX = '@SEARCH/';\nexport const APPLY_CONFIG = `${ACTION_PREFIX}APPLY_CONFIG`;\nexport const CLEAR_FILTERS = `${ACTION_PREFIX}CLEAR_FILTERS`;\nexport const DO_SEARCH = `${ACTION_PREFIX}DO_SEARCH`;\nexport const EXECUTE_SEARCH = `${ACTION_PREFIX}EXECUTE_SEARCH`;\nexport const EXECUTE_SEARCH_ERROR = `${ACTION_PREFIX}EXECUTE_SEARCH_ERROR`;\nexport const EXECUTE_SEARCH_PRELOAD = `${ACTION_PREFIX}EXECUTE_SEARCH_PRELOAD`;\nexport const LOAD_FILTERS = `${ACTION_PREFIX}LOAD_FILTERS`;\nexport const LOAD_FILTERS_COMPLETE = `${ACTION_PREFIX}LOAD_FILTERS_COMPLETE`;\nexport const LOAD_FILTERS_ERROR = `${ACTION_PREFIX}LOAD_FILTERS_ERROR`;\nexport const SET_FEATURED_ENTRIES = `${ACTION_PREFIX}SET_FEATURED_ENTRIES`;\nexport const SET_ROUTE_FILTERS = `${ACTION_PREFIX}SET_ROUTE_FILTERS`;\nexport const SET_SEARCH_FILTERS = `${ACTION_PREFIX}SET_SEARCH_FILTERS`;\nexport const SET_SEARCH_ENTRIES = `${ACTION_PREFIX}SET_SEARCH_ENTRIES`;\nexport const SET_SELECTED_FILTER = `${ACTION_PREFIX}SET_SELECTED_FILTER`;\nexport const UPDATE_CURRENT_FACET = `${ACTION_PREFIX}UPDATE_CURRENT_FACET`;\nexport const UPDATE_CURRENT_TAB = `${ACTION_PREFIX}UPDATE_CURRENT_TAB`;\nexport const UPDATE_SORT_ORDER = `${ACTION_PREFIX}UPDATE_SORT_ORDER`;\nexport const UPDATE_PAGE_INDEX = `${ACTION_PREFIX}UPDATE_PAGE_INDEX`;\nexport const UPDATE_SEARCH_TERM = `${ACTION_PREFIX}UPDATE_SEARCH_TERM`;\nexport const UPDATE_SELECTED_FILTERS = `${ACTION_PREFIX}UPDATE_SELECTED_FILTERS`;\n","import {\n CLEAR_FILTERS,\n SET_ROUTE_FILTERS,\n UPDATE_PAGE_INDEX,\n UPDATE_SELECTED_FILTERS,\n UPDATE_CURRENT_FACET,\n UPDATE_CURRENT_TAB,\n UPDATE_SEARCH_TERM,\n UPDATE_SORT_ORDER,\n DO_SEARCH,\n} from './types';\nimport { Mappers } from '../models/Search';\nimport {\n ClearFiltersActionCreator,\n InitListingActionCreator,\n TriggerSearchActionCreator,\n} from '../models/SearchActions';\n\nexport const withMappers = <T>(action: T, mappers: Mappers) => {\n return { ...action, mappers };\n};\n\n// export const withMappers2 = (actionFunc, args, mappers) => {\n// return () => ({ ...actionFunc(args), mappers });\n// };\n\nexport const triggerSearch: TriggerSearchActionCreator = ({\n config,\n context,\n debug,\n defaultLang,\n excludeIds,\n facet,\n mapper,\n params,\n}) => {\n return {\n type: DO_SEARCH,\n config,\n context,\n debug,\n defaultLang,\n excludeIds,\n facet,\n mapper,\n params,\n };\n};\n\nexport const initListing: InitListingActionCreator = ({\n context,\n facet,\n mapper,\n params,\n}) => {\n return {\n type: SET_ROUTE_FILTERS,\n context,\n facet,\n mapper,\n params,\n };\n};\n\nexport const navigate = (path: string, state?: any) => {\n return {\n type: '@ROUTING/_SET_ROUTE',\n path,\n state,\n };\n};\n\nexport const clearFilters: ClearFiltersActionCreator = () => {\n return {\n type: CLEAR_FILTERS,\n };\n};\n\nexport const updatePageIndex = (pageIndex: number) => {\n return {\n type: UPDATE_PAGE_INDEX,\n pageIndex,\n };\n};\n\nexport const updateCurrentFacet = (facet: string) => {\n return {\n type: UPDATE_CURRENT_FACET,\n facet,\n };\n};\n\nexport const updateCurrentTab = (id: number) => {\n return {\n type: UPDATE_CURRENT_TAB,\n id,\n };\n};\n\nexport const updateSearchTerm = (term: string) => {\n return {\n type: UPDATE_SEARCH_TERM,\n term,\n };\n};\n\nexport const updateSelectedFilters = (filter: string, key: string) => {\n return {\n type: UPDATE_SELECTED_FILTERS,\n filter,\n key,\n };\n};\n\nexport const updateSortOrder = (orderBy: string, facet?: string) => {\n return {\n type: UPDATE_SORT_ORDER,\n orderBy,\n facet,\n };\n};\n","export enum Context {\n facets = 'facets',\n listings = 'listings',\n minilist = 'minilist',\n}\n// export type Context = 'facets' | 'listings' | 'minilist';\n","import { List, Map, OrderedMap, Set } from 'immutable';\nimport { Entry } from 'contensis-delivery-api/lib/models';\n\nimport { Context } from '../models/Enums';\nimport { Listing } from '../models/Search';\nimport { AppState, Tab } from '../models/SearchState';\nimport {\n filtering,\n filterItem,\n initialState,\n searchFacet,\n searchTab,\n} from './schema';\n\nexport const getSearchContext = (state: AppState): Context =>\n state.getIn(['search', 'context'], Context.facets);\n\nexport const getCurrent = (\n state: Map<'search', typeof initialState>,\n context = Context.facets\n) =>\n context === Context.facets\n ? getCurrentFacet(state)\n : getCurrentListing(state);\n\nexport const getCurrentFacet = (state: AppState): string =>\n state.getIn(['search', 'currentFacet']);\n\nexport const getCurrentListing = (state: AppState): string =>\n state.getIn(['search', 'currentListing']);\n\nexport const getCurrentTab = (state: AppState): Map<string, Tab[keyof Tab]> =>\n state.getIn(['search', Context.facets, getCurrentFacet(state), 'tabId'], 0);\n\nexport const getFacets = (\n state: AppState\n): OrderedMap<string, typeof searchFacet> =>\n state.getIn(['search', Context.facets], OrderedMap());\n\nexport const getTabFacets = (state: AppState) =>\n getFacets(state).filter(\n (v, key) =>\n getFacets(state).getIn([key, 'tabId'], 0) === getCurrentTab(state)\n ) as OrderedMap<string, typeof searchFacet>;\n\nexport const getFacetTitles = (state: AppState) =>\n getFacets(state)\n .map((facet = Map(), key) => ({\n key,\n title: facet.get('title') as string | undefined,\n totalCount: facet.getIn(['pagingInfo', 'totalCount']) as number,\n }))\n .toIndexedSeq()\n .toArray();\n\nexport const getFacet = (\n state: AppState,\n facetName = '',\n context = Context.facets\n) => {\n const currentFacet = facetName || getCurrentFacet(state);\n return state.getIn(['search', context, currentFacet], Map());\n};\n\nexport const getListing = (\n state: AppState,\n listing = ''\n): Map<string, Listing[keyof Listing]> => {\n const currentListing = listing || getCurrentListing(state);\n return state.getIn(['search', Context.listings, currentListing], Map());\n};\n\nexport const getFilters = (\n state: AppState,\n facet: string,\n context = Context.facets\n): Map<string, typeof filtering> => {\n return state.getIn(\n ['search', context, facet || getCurrent(state, context), 'filters'],\n Map()\n );\n};\n\nexport const getRenderableFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n) =>\n getFilters(state, facet, context).filter(\n (f = Map()) => f.get('renderable', true) as boolean\n );\n\nexport const getFiltersToLoad = (\n state: AppState,\n facet: string,\n context = Context.facets\n) => {\n const filters = getFilters(state, facet, context);\n const loadedFilters = filters.map(\n (f = Map()) =>\n ((f.get('items') || List()) as List<typeof filterItem>).filter(i => {\n const title = i?.get('title');\n return typeof title !== 'undefined' && !!title;\n }).size > 0 && f.get('isError', false) === false\n );\n return loadedFilters\n .map((isLoaded, filterKey) => (!isLoaded ? filterKey : null))\n .toList()\n .filter(f => !!f);\n};\n\n// We lowercase the filter key unless it's an ISO date string where the T must be uppercase\nexport const getSelectedFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n) => {\n const filters = getFilters(state, facet, context);\n const isoDateRegex = RegExp(/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d/);\n\n const selectedFilters = filters.map((filter = Map()) =>\n (\n (filter.get('items') as List<typeof filterItem>) ||\n List<typeof filterItem>()\n )\n .filter(item => !!item?.get('isSelected', false))\n .map(item => {\n const key = item?.get('key', '') as string;\n const isIsoDate = isoDateRegex.test(key);\n return isIsoDate ? key : key.toLowerCase();\n })\n );\n return selectedFilters;\n};\n\nexport const getResults = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n ['search', context, current || getCurrent(state, context), 'results'],\n List()\n ) as List<any>;\n};\n\nexport const getIsInternalPaging = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return state.getIn(\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'queryParams',\n 'internalPaging',\n ],\n false\n );\n};\n\nexport const getIsLoaded = (\n state: AppState,\n context = Context.facets,\n facet?: string\n) => {\n return !!state.getIn(\n ['search', context, facet || getCurrent(state, context), 'queryDuration'],\n 0\n );\n};\n\nexport const getIsLoading = (\n state: AppState,\n context = Context.facets,\n facet?: string\n) => {\n return state.getIn([\n 'search',\n context,\n facet || getCurrent(state, context),\n 'entries',\n 'isLoading',\n ]);\n};\n\nexport const getIsSsr = (state: AppState): boolean => {\n return state.getIn(['search', 'config', 'ssr'], false);\n};\n\nexport const getFeaturedResults = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n List()\n );\n};\n\nexport const getPaging = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n ['search', context, current || getCurrent(state, context), 'pagingInfo'],\n Map()\n );\n};\n\nexport const getPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pageIndex',\n ]);\n};\n\nexport const getPrevPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'prevPageIndex',\n ]);\n};\nexport const getPageIsLoading = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'isLoading',\n ]);\n};\n\nexport const getPagesLoaded = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pagesLoaded',\n ],\n Set()\n );\n};\n\nexport const getTotalCount = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'totalCount',\n ]);\n};\n\nexport const getFacetAuthentication = (state: AppState, facet: string) =>\n state.getIn(['search', Context.facets, facet, 'authentication']);\n\nexport const getFeaturedEntryIds = (state: AppState) => {\n const currentFacet = getCurrentFacet(state);\n const entryIds = (\n state.getIn([\n 'search',\n Context.facets,\n currentFacet,\n 'featuredEntries',\n 'items',\n ]) as Map<string, Entry[keyof Entry]>\n ).map(entry => entry.getIn(['sys', 'id']) as string);\n return entryIds;\n};\n\nexport const getSearchTerm = (state: AppState) =>\n state.getIn(['search', 'term']);\n\nexport const getSearchTabs = (state: AppState): List<typeof searchTab> =>\n state.getIn(['search', 'tabs']);\n\nexport const getQueryParams = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n ['search', context, current || getCurrent(state, context), 'queryParams'],\n Map()\n ) as Map<string, any>;\n};\n\nexport const getQueryParameter = (\n {\n state,\n facet,\n context = Context.facets,\n }: { state: AppState; facet?: string; context?: Context },\n key: string,\n ifnull: any = null\n) => {\n return getQueryParams(state, facet, context).get(key, ifnull) || ifnull;\n};\n\nexport const getCustomApi = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'customApi',\n ]);\n};\n\nexport const getCustomEnv = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'env',\n ]);\n};\n\nexport const getTabsAndFacets = (state: AppState) => {\n const tabs = getSearchTabs(state);\n const facets = getFacets(state);\n\n return (tabs || List()).map((tab = Map()) => {\n const fieldsToCount = tab.get('totalCount');\n let countFields: List<List<string>>;\n\n if (typeof fieldsToCount === 'string')\n countFields = List([List([fieldsToCount])]);\n\n const thisTabFacets = facets.filter(\n (v, key) => facets.getIn([key, 'tabId'], 0) === tab.get('id')\n ) as OrderedMap<string, typeof searchFacet>;\n\n const thisTabTotal = thisTabFacets\n .map((facet = Map(), facetName) => {\n if (\n !countFields ||\n countFields.find((f = List()) => f.first() === facetName)\n )\n return facet.getIn(['pagingInfo', 'totalCount']);\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n return tab\n .set(Context.facets, thisTabFacets)\n .set('totalCount', thisTabTotal);\n });\n};\n\nexport const getSearchTotalCount = (state: AppState) => {\n const tabsAndFacets = getTabsAndFacets(state);\n const wholeSearchTotal = tabsAndFacets\n .map((t = Map()) => t.get('totalCount'))\n .reduce((a: any, b: any) => a + b, 0);\n return wholeSearchTotal;\n};\n\nexport const getFacetsTotalCount = (state: AppState) => {\n const facets = getFacets(state);\n const wholeSearchTotal = facets\n .map((t = Map()) => t.getIn(['pagingInfo', 'totalCount']))\n .reduce((a, b) => a + b, 0);\n return wholeSearchTotal;\n};\n\n// An exported copy of the relevant selectors scoped by default to a facets context\nexport const selectFacets = {\n getCurrent: getCurrentFacet,\n getCurrentTab,\n getCustomApi,\n getCustomEnv,\n getFacet,\n getFacetTitles,\n getFacets,\n getFacetsTotalCount,\n getFeaturedResults,\n getFilters,\n getFiltersToLoad,\n getIsLoaded,\n getIsLoading,\n getPageIndex,\n getPageIsLoading,\n getPagesLoaded,\n getPaging,\n getQueryParams: (state: AppState, facet: string) =>\n getQueryParams(state, facet, Context.facets),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet: string },\n key: string,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.facets }, key, ifnull),\n getRenderableFilters,\n getResults,\n getTabFacets,\n getTabsAndFacets,\n getTotalCount,\n getSearchTabs,\n getSearchTerm,\n getSearchTotalCount,\n getSelectedFilters,\n};\n\n// An exported copy of the relevant selectors pre-scoped to a listing context\nexport const selectListing = {\n getCurrent: getCurrentListing,\n getFeaturedResults: (state: AppState, listing = '') =>\n getFeaturedResults(state, listing, Context.listings),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings),\n getFiltersToLoad: (state: AppState, listing = '') =>\n getFiltersToLoad(state, listing, Context.listings),\n getListing,\n getIsLoaded: (state: AppState) => getIsLoaded(state, Context.listings),\n getIsLoading: (state: AppState) => getIsLoading(state, Context.listings),\n getPageIndex: (state: AppState, listing = '') =>\n getPageIndex(state, listing, Context.listings),\n getPaging: (state: AppState, listing = '') =>\n getPaging(state, listing, Context.listings),\n getPageIsLoading: (state: AppState, listing = '') =>\n getPageIsLoading(state, listing, Context.listings),\n getPagesLoaded: (state: AppState, listing = '') =>\n getPagesLoaded(state, listing, Context.listings),\n getQueryParams: (state: AppState, listing = '') =>\n getQueryParams(state, listing, Context.listings),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet?: string },\n key: string,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.listings }, key, ifnull),\n getRenderableFilters: (state: AppState, listing = '') =>\n getRenderableFilters(state, listing, Context.listings),\n getResults: (state: AppState, listing = '') =>\n getResults(state, listing, Context.listings),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n state.getIn(['routing', 'currentPath']);\n\nexport const selectVersionStatus = (state: AppState) =>\n state.getIn(['version', 'contensisVersionStatus']);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { toJS } from '../search/ToJs';\nimport {\n clearFilters,\n updateCurrentFacet,\n updateCurrentTab,\n updatePageIndex,\n updateSearchTerm,\n updateSelectedFilters,\n updateSortOrder,\n withMappers,\n} from '../redux/actions';\nimport {\n getCurrentFacet,\n getCurrentTab,\n getFacet,\n getFacetTitles,\n getFacetsTotalCount,\n getFeaturedResults,\n getIsLoading,\n getPageIndex,\n getPageIsLoading,\n getPaging,\n getQueryParameter,\n getRenderableFilters,\n getResults,\n getSearchTerm,\n getSearchTotalCount,\n getTabFacets,\n getTabsAndFacets,\n getTotalCount,\n} from '../redux/selectors';\nimport { Mappers } from '../models/Search';\nimport { SearchProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nconst withSearch =\n (mappers: Mappers) =>\n <Props extends Record<keyof Props, any>>(\n SearchComponent: React.ComponentType<Props>\n ) => {\n const Wrapper: React.FC<Props & SearchProps<any>> = props => {\n return <SearchComponent {...props} />;\n };\n\n Wrapper.displayName = `withSearch(${\n SearchComponent.displayName || SearchComponent.name\n })`;\n\n const mapStateToProps = (state: AppState) => {\n return {\n currentFacet: getCurrentFacet(state),\n currentPageIndex: getPageIndex(state),\n currentTabIndex: getCurrentTab(state),\n facet: getFacet(state),\n facets: getTabFacets(state),\n facetsTotalCount: getFacetsTotalCount(state),\n facetTitles: getFacetTitles(state),\n featuredResults: getFeaturedResults(state),\n filters: getRenderableFilters(state),\n isLoading: getIsLoading(state),\n paging: getPaging(state),\n pageIsLoading: getPageIsLoading(state),\n results: getResults(state),\n resultsInfo: mappers?.resultsInfo && mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n searchTotalCount: getSearchTotalCount(state),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n tabsAndFacets: getTabsAndFacets(state),\n totalCount: getTotalCount(state),\n };\n };\n\n const mapDispatchToProps = {\n clearFilters: () => withMappers(clearFilters(), mappers),\n updateCurrentFacet: (facet: string) =>\n withMappers(updateCurrentFacet(facet), mappers),\n updateCurrentTab: (id: number) =>\n withMappers(updateCurrentTab(id), mappers),\n updatePageIndex: (pageIndex: number) =>\n withMappers(updatePageIndex(pageIndex), mappers),\n updateSearchTerm: (term: string) =>\n withMappers(updateSearchTerm(term), mappers),\n updateSelectedFilters: (filter: string, key: string) =>\n withMappers(updateSelectedFilters(filter, key), mappers),\n updateSortOrder: (orderBy: string) =>\n withMappers(updateSortOrder(orderBy), mappers),\n };\n\n const connector = connect(mapStateToProps, mapDispatchToProps);\n\n return connector(toJS(Wrapper) as any);\n };\n\nexport default withSearch;\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { toJS } from '../search/ToJs';\nimport {\n clearFilters,\n updateCurrentFacet,\n updatePageIndex,\n updateSearchTerm,\n updateSelectedFilters,\n updateSortOrder,\n withMappers,\n} from '../redux/actions';\nimport { selectListing } from '../redux/selectors';\nimport { Mappers } from '../models/Search';\nimport { AppState } from '../models/SearchState';\n\nconst withListing = (mappers: Mappers) => (ListingComponent: React.FC<any>) => {\n const Wrapper = (props: any) => {\n return <ListingComponent {...props} />;\n };\n\n Wrapper.displayName = `withListing(${\n ListingComponent.displayName || ListingComponent.name\n })`;\n\n const {\n getCurrent,\n getFeaturedResults,\n getIsLoading,\n getListing,\n getPageIndex,\n getPaging,\n getQueryParameter,\n getRenderableFilters,\n getResults,\n getSearchTerm,\n } = selectListing;\n\n const mapStateToProps = (state: AppState) => {\n return {\n currentListing: getCurrent(state),\n currentPageIndex: getPageIndex(state),\n listing: getListing(state),\n featured: getFeaturedResults(state),\n filters: getRenderableFilters(state),\n isLoading: getIsLoading(state),\n paging: getPaging(state),\n results: getResults(state),\n resultsInfo:\n mappers &&\n typeof mappers.resultsInfo === 'function' &&\n mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n };\n };\n\n const mapDispatchToProps = {\n clearFilters: () => withMappers(clearFilters(), mappers),\n updateCurrentFacet: (facet: string) =>\n withMappers(updateCurrentFacet(facet), mappers),\n updatePageIndex: (pageIndex: number) =>\n withMappers(updatePageIndex(pageIndex), mappers),\n updateSearchTerm: (term: string) =>\n withMappers(updateSearchTerm(term), mappers),\n updateSelectedFilters: (filter: string, key: string) =>\n withMappers(updateSelectedFilters(filter, key), mappers),\n updateSortOrder: (orderBy: string) =>\n withMappers(updateSortOrder(orderBy), mappers),\n };\n\n return connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper));\n};\n\nexport default withListing;\n","import { Client } from 'contensis-delivery-api';\n\nconst getClientConfig = (project, env) => {\n let config = DELIVERY_API_CONFIG; /* global DELIVERY_API_CONFIG */\n if (project) {\n config.projectId = project;\n }\n\n if (\n typeof window != 'undefined' &&\n PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n ) {\n // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = env || '';\n config.responseHandler = {\n 404: () => null,\n };\n }\n return config;\n};\nexport * from 'contensis-delivery-api';\n\n// This should only be executed on the client as it relies on the window.\nexport const GetClientSideDeliveryApiStatus = () => {\n if (typeof window != 'undefined') {\n const currentHostname = window.location.hostname;\n return GetDeliveryApiStatusFromHostname(currentHostname);\n }\n return null;\n};\n\nexport const GetDeliveryApiStatusFromHostname = currentHostname => {\n if (currentHostname.indexOf('localhost') > -1) return 'latest';\n\n if (currentHostname.endsWith('contensis.cloud')) {\n if (currentHostname.indexOf('preview.') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n if (currentHostname.endsWith('cloud.contensis.com')) {\n if (currentHostname.indexOf('preview-') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n return 'published';\n};\n\nclass DeliveryApi {\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return client.entries.search(query, linkDepth || 1);\n }\n\n getClient(deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n return Client.create(baseConfig);\n }\n getEntry(id, linkDepth = 1, deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n const client = Client.create(baseConfig);\n // return client.entries.get(id, linkDepth);\n return client.entries.get({ id, linkDepth });\n }\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nclass CacheNode {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n }\n}\n\nclass LruCache {\n constructor(limit = 100) {\n this.map = {};\n this.head = null;\n this.tail = null;\n this.limit = limit || 100;\n this.size = 0;\n }\n\n get(key) {\n if (this.map[key]) {\n let value = this.map[key].value;\n let node = new CacheNode(key, value);\n this.remove(key);\n this.setHead(node);\n return value;\n }\n }\n\n set(key, value) {\n let node = new CacheNode(key, value);\n if (this.map[key]) {\n this.remove(key);\n } else {\n if (this.size >= this.limit) {\n delete this.map[this.tail.key];\n this.size--;\n this.tail = this.tail.prev;\n this.tail.next = null;\n }\n }\n this.setHead(node);\n }\n\n setHead(node) {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.size++;\n this.map[node.key] = node;\n }\n\n remove(key) {\n let node = this.map[key];\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n delete this.map[key];\n this.size--;\n }\n}\n\nclass CachedSearch {\n cache = new LruCache();\n taxonomyLookup = {};\n\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n project + JSON.stringify(query) + linkDepth.toString(),\n () => client.entries.search(query, linkDepth)\n );\n }\n\n getTaxonomyNodeByPath(path, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(`[TAXONOMY NODE] ${path}`, () =>\n client.taxonomy\n .getNodeByPath({ path: path, order: 'defined', childDepth: 2 })\n .then(node => this.extendTaxonomyNode(node))\n );\n }\n\n request(key, execute) {\n if (!this.cache.get(key) || typeof window == 'undefined') {\n let promise = execute();\n this.cache.set(key, promise);\n promise.catch(() => {\n this.cache.remove(key);\n });\n }\n return this.cache.get(key);\n }\n\n extendTaxonomyNode(node) {\n let id = this.getTaxonomyId(node);\n this.taxonomyLookup[id] = node.key;\n return {\n ...node,\n id,\n children: node.children\n ? node.children.map(n => this.extendTaxonomyNode(n))\n : null,\n };\n }\n\n getTaxonomyId(node) {\n if (node.key) {\n let parts = node.key.split('/');\n return parts[parts.length - 1];\n }\n return '';\n }\n}\n\nexport const cachedSearch = new CachedSearch();\n","export const now = () => {\n if (typeof window == 'undefined') {\n return Date.now();\n }\n return window.performance.now();\n};\n","import queryString from 'query-string';\nimport { Map } from 'immutable';\nimport { now } from './performance';\nimport { cachedSearch } from './ContensisDeliveryApi';\n\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { PagedList, Query } from 'contensis-core-api';\nimport { CustomApi } from '../models/Search';\nimport { TimedSearchResponse } from '../models/SearchUtil';\n\nexport function fixFreeTextForElastic(s: string): string {\n const illegalChars = [\n '>',\n '<',\n '=',\n '|',\n '!',\n '{',\n '}',\n '[',\n ']',\n '^',\n '~',\n '*',\n '?',\n ':',\n '\\\\',\n '/',\n ];\n\n const illegalRegEx = new RegExp(\n illegalChars.map(c => '\\\\' + c).join('|'),\n 'g'\n );\n s = s.replace(illegalRegEx, '');\n // s = s.replace(encodedRegEx, ''); // (m) => '\\\\\\\\' + m);\n\n return s;\n}\n\nexport const timedSearch = async (\n query: Query,\n linkDepth = 0,\n projectId?: string,\n env?: string\n): Promise<null | TimedSearchResponse> => {\n if (!query) return null;\n\n let duration = 0;\n\n const start = now();\n const payload = (await cachedSearch.search(\n query,\n linkDepth,\n projectId,\n env\n )) as PagedList<Entry>;\n const end = now();\n\n duration = end - start;\n\n return { duration, payload };\n};\n\nexport const getItemsFromResult = (result?: {\n duration: number;\n payload: PagedList<Entry> | any[];\n}): Entry[] => {\n const { payload } = result || {};\n if (payload) {\n if (Array.isArray(payload)) return payload;\n if (Array.isArray(payload.items)) return payload.items;\n }\n return [];\n};\n\nexport const extractQuotedPhrases = (searchTerm: string): string[] => {\n const pattern = new RegExp(\n /(?=[\"'])(?:\"[^\"\\\\]*(?:\\\\[\\s\\S][^\"\\\\]*)*\"|'[^'\\\\]*(?:\\\\[\\s\\S][^'\\\\]*)*')/gm\n );\n\n return (searchTerm.match(pattern) || []).map(match =>\n match.replace(/\"/g, '')\n );\n};\n\nexport const buildUrl = (\n route: string,\n params: { [key: string]: string }\n): string => {\n const qs = queryString.stringify(params) as string;\n const path = qs ? `${route}?${qs}` : route;\n return path;\n};\n\nexport const callCustomApi = async <T>(\n customApi: Map<string, CustomApi[keyof CustomApi]>,\n filters: { [key: string]: string }\n): Promise<T> => {\n const apiUri = customApi.get('uri', '');\n let uri = buildUrl(apiUri, filters);\n if (!uri) throw new Error('uri is required to use customApi');\n if (typeof window == 'undefined' && uri.startsWith('/'))\n uri = `http://localhost:3001${uri}`;\n\n const response = await fetch(uri);\n return (await response.json()) as T;\n};\n\nexport const removeEmptyAttributes = (obj: any) => {\n Object.entries(obj).forEach(\n ([key, val]) =>\n (val && typeof val === 'object' && removeEmptyAttributes(val)) ||\n ((typeof val === 'undefined' || val === null || val === '') &&\n delete obj[key])\n );\n return obj;\n};\n\nexport const toArray = (obj: string, seperator = ',') =>\n typeof obj === 'undefined' || obj === null\n ? obj\n : Array.isArray(obj)\n ? obj\n : obj.split(seperator);\n\n// assumes array elements are primitive types\nexport const areArraysEqualSets = (a1: any[], a2: any[]) => {\n const superSet = {} as { [key: string]: any };\n for (const ai of a1) {\n const e = ai + typeof ai;\n superSet[e] = 1;\n }\n\n for (const ai of a2) {\n const e = ai + typeof ai;\n if (!superSet[e]) {\n return false;\n }\n superSet[e] = 2;\n }\n\n for (const e in superSet) {\n if (superSet[e] === 1) {\n return false;\n }\n }\n\n return true;\n};\n","export const DataFormats = {\n asset: 'asset',\n entry: 'entry',\n webpage: 'webpage',\n};\n\nexport const FilterExpressionTypes = {\n contentType: 'contentType',\n field: 'field',\n};\n\nconst sys = {\n allUris: 'sys.allUris',\n contentTypeId: 'sys.contentTypeId',\n dataFormat: 'sys.dataFormat',\n filename: 'sys.properties.filename',\n id: 'sys.id',\n includeInSearch: 'sys.metadata.includeInSearch',\n language: 'sys.language',\n uri: 'sys.uri',\n versionStatus: 'sys.versionStatus',\n};\n\nexport const Fields = {\n entryDescription: 'entryDescription',\n entryTitle: 'entryTitle',\n keywords: 'keywords',\n searchContent: 'searchContent',\n sys,\n contentTypeId: 'sys.contentTypeId',\n wildcard: '*',\n};\n","import {\n IExpression,\n ILogicalExpression,\n Op,\n OrderBy,\n VersionStatus,\n} from 'contensis-core-api';\nimport { Fields, DataFormats } from '../search/schema';\nimport { fixFreeTextForElastic, extractQuotedPhrases } from './util';\nimport { CustomWhereClause, WeightedSearchField } from '../models/Search';\nimport { FieldOperators } from '../models/Queries';\n\nexport const fieldExpression = (\n field: string | string[],\n value: any,\n operator: FieldOperators = 'equalTo',\n weight?: number\n): IExpression[] => {\n if (!field || !value) return [];\n if (Array.isArray(field))\n // If an array of fieldIds have been provided, call self for each fieldId\n // to generate expressions that are combined with an 'or' operator\n return [\n Op.or(\n ...field\n .map(fieldId => fieldExpression(fieldId, value, operator, weight))\n .flat()\n ),\n ];\n if (operator === 'between') return between(field, value);\n if (Array.isArray(value)) return equalToOrIn(field, value, operator);\n else\n return !weight\n ? [Op[operator](field, value, undefined, undefined)]\n : [Op[operator](field, value, undefined, undefined).weight(weight)];\n};\n\nexport const contentTypeIdExpression = (\n contentTypeIds: string[],\n webpageTemplates?: string[],\n assetTypes?: string[]\n) => {\n const expressions: ILogicalExpression[] = [];\n if (!contentTypeIds && !webpageTemplates && !assetTypes) return expressions;\n\n if (contentTypeIds && contentTypeIds.length > 0) {\n expressions.push(\n ...dataFormatExpression(contentTypeIds, DataFormats.entry)\n );\n }\n\n if (webpageTemplates && webpageTemplates.length > 0) {\n expressions.push(\n ...dataFormatExpression(webpageTemplates, DataFormats.webpage)\n );\n }\n\n if (assetTypes && assetTypes.length > 0) {\n expressions.push(...dataFormatExpression(assetTypes, DataFormats.asset));\n }\n\n if (expressions.length > 1) return [Op.or(...expressions)];\n\n return expressions;\n};\n\nexport const filterExpressions = (\n filters: { key: string; value: string; operator: FieldOperators }[]\n) => {\n if (!filters) return [];\n const expressions: IExpression[] = [];\n\n filters.map(param => {\n expressions.push(\n ...fieldExpression(param.key, param.value, param.operator || 'in')\n );\n });\n\n return expressions;\n};\n\nexport const dataFormatExpression = (\n contentTypeIds: string[],\n dataFormat = DataFormats.entry\n) => {\n if (contentTypeIds && contentTypeIds.length > 0) {\n /**\n * We have an array of contentTypeIds some may be prefixed with a \"!\"\n * to indicate this is a \"not\" expression\n */\n const withContentTypeIds = contentTypeIds.filter(c => !c.startsWith('!'));\n const notContentTypeIds = contentTypeIds\n .filter(c => c.startsWith('!'))\n .map(id => id.substring(1));\n\n const andExpr = Op.and();\n\n const dataFormatExpr = fieldExpression(\n Fields.sys.dataFormat,\n dataFormat\n )[0];\n\n const withExpr = fieldExpression(\n Fields.sys.contentTypeId,\n withContentTypeIds\n )[0];\n\n const notExpr = Op.not(\n fieldExpression(Fields.sys.contentTypeId, notContentTypeIds)[0]\n );\n\n andExpr.add(dataFormatExpr);\n if (withContentTypeIds.length > 0) andExpr.add(withExpr);\n if (notContentTypeIds.length > 0) andExpr.add(notExpr);\n\n return [andExpr];\n }\n return [];\n};\n\nexport const featuredResultsExpression = ({\n contentTypeId,\n fieldId,\n fieldValue = true,\n}: {\n contentTypeId?: string | string[];\n fieldId?: string | string[];\n fieldValue?: boolean;\n} = {}) => {\n const expressions = [] as IExpression[];\n\n if (contentTypeId) {\n expressions.push(\n ...contentTypeIdExpression(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId]\n )\n );\n }\n\n if (fieldId && fieldValue) {\n expressions.push(...fieldExpression(fieldId, fieldValue));\n }\n\n return expressions;\n};\n\nexport const languagesExpression = (languages: string[]) =>\n fieldExpression(Fields.sys.language, languages);\n\nexport const includeInSearchExpressions = (\n webpageTemplates: string[],\n includeInSearchFields: string[]\n) => {\n const expressions = [] as IExpression[];\n // Or include this expression if we have explicity specified non-default includeInSearch fields\n if (Array.isArray(includeInSearchFields))\n expressions.push(\n ...includeInSearchFields.map(includeInSearchField =>\n Op.or(\n Op.and(\n Op.exists(includeInSearchField, true),\n Op.equalTo(includeInSearchField, true)\n ),\n Op.exists(includeInSearchField, false)\n )\n )\n );\n\n // If webpageTemplates have been specified, include this expression\n // with the default includeInSearch field from classic Contensis.\n if (Array.isArray(webpageTemplates) && webpageTemplates.length > 0)\n expressions.push(\n Op.or(\n Op.and(\n Op.exists(Fields.sys.includeInSearch, true),\n Op.equalTo(Fields.sys.includeInSearch, true)\n ),\n Op.exists(Fields.sys.includeInSearch, false)\n )\n );\n return expressions;\n};\n\nexport const defaultExpressions = (versionStatus: VersionStatus) => {\n return [Op.equalTo(Fields.sys.versionStatus, versionStatus)];\n};\n\nexport const excludeIdsExpression = (excludeIds: string[]) => {\n if (Array.isArray(excludeIds) && excludeIds.length > 0) {\n const [expr] = fieldExpression(Fields.sys.id, excludeIds);\n return [Op.not(expr)];\n } else return [];\n};\n\nexport const orderByExpression = (orderBy: string[]) => {\n let expression = OrderBy;\n if (orderBy && orderBy.length > 0) {\n orderBy.map(\n ob =>\n (expression = ob.startsWith('-')\n ? expression.desc(ob.substring(1))\n : expression.asc(ob))\n );\n }\n return expression;\n};\n\nconst equalToOrIn = (\n field: string,\n value: string | string[],\n operator: FieldOperators = 'equalTo'\n) => {\n if (value.length === 0) return [];\n if (Array.isArray(value)) {\n if (value.length === 1)\n return [Op[operator](field, value[0], undefined, undefined)];\n return [Op.in(field, ...value)];\n }\n return [];\n};\n\nconst between = (field: string, value: string | string[]) => {\n const handle = (betweenValue: string) => {\n const valArr = betweenValue.split('-');\n if (valArr.length > 1) {\n const [minimum, maximum = null] = betweenValue.split('-');\n return Op.between(field, minimum, maximum);\n } else {\n // eslint-disable-next-line no-console\n console.log(\n `[search] You have supplied only one value to a \"between\" operator which must have two values. Your supplied value \"${\n valArr.length && valArr[0]\n }\" has been discarded.`\n );\n return false;\n }\n };\n if (value.length === 0) return [];\n if (Array.isArray(value))\n return [\n Op.or(...(value.map(handle).filter(bc => bc !== false) as IExpression[])),\n ];\n\n // const valArr = value.split('-');\n const op = handle(value);\n return op ? [op] : []; // valArr.length > 1 ? [Op.between(field, ...value.split('-'))] : [];\n};\n\n/**\n * Accept HTTP style objects and map them to\n * their equivalent JS client \"Op\" expressions\n * @param {array} where the where array as you'd provide it to the HTTP API\n * @returns {array} array of constructed Delivery API Operators\n */\nexport const customWhereExpressions = (where?: CustomWhereClause) => {\n if (!where || !Array.isArray(where)) return [];\n\n // Map each clause inside the where array\n return where.map(clause => {\n let expression: IExpression | undefined;\n // Map through each property in the clause so we can\n // capture the values required and reconstruct them as\n // a Delivery API expression\n let operator: 'field' | 'not' | 'and' | 'or' | FieldOperators;\n Object.keys(clause).map((key: string, idx) => {\n // The clause may contain only one key\n if (idx === 0) operator = key as 'not' | 'and' | 'or';\n\n const field: string = (clause as any).field;\n const value = (clause as any)[\n Object.keys(clause).find(k => !['field', 'weight'].includes(k)) || ''\n ];\n const weight: number = (clause as any).weight;\n\n if (idx === 0) {\n if (operator === 'and' || operator === 'or') {\n // These are array expressions so we can call ourself recursively\n // to map these inner values to expressions\n const recurseExpr = customWhereExpressions(\n (clause as any)[operator]\n ) as unknown as IExpression[];\n expression = Op[operator](...recurseExpr);\n }\n\n if (['not'].includes(operator)) {\n // A 'not' expression is an object with only one inner field and inner operator\n Object.keys(value).map((notKey, notIdx) => {\n const innerOperator = notKey as Exclude<\n FieldOperators,\n 'between' | 'distanceWithin' // these are not handled\n >;\n const innerValue = value[notKey];\n const innerField = value.field;\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n if (notIdx === 1) {\n expression = Op.not(Op[innerOperator](innerField, innerValue));\n }\n });\n }\n }\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n operator = Object.keys(clause).find(\n clauseKey => !['field', 'weight'].includes(clauseKey)\n ) as FieldOperators;\n\n if (\n idx === 1 &&\n // operator !== 'and' &&\n // operator !== 'or' &&\n operator !== 'between' &&\n operator !== 'distanceWithin'\n ) {\n expression =\n operator === 'freeText' || operator === 'contains'\n ? Op[operator](field, value)\n : operator === 'in'\n ? Op[operator](field, ...value)\n : Op[operator](field, value);\n\n if (typeof weight === 'number') expression = expression.weight(weight);\n }\n });\n return expression;\n }) as IExpression[];\n};\n\nexport const termExpressions = (\n searchTerm: string,\n weightedSearchFields: WeightedSearchField[]\n) => {\n if (searchTerm && weightedSearchFields && weightedSearchFields.length > 0) {\n // Extract any phrases in quotes to array\n const quotedPhrases = extractQuotedPhrases(searchTerm);\n\n // Modify the search term to remove any quoted phrases to leave any remaining terms\n let modifiedSearchTerm = searchTerm;\n quotedPhrases.forEach(\n qp =>\n (modifiedSearchTerm = modifiedSearchTerm\n .replace(qp, '')\n .replace('\"\"', '')\n .trim())\n );\n\n // Push to the operators array to include in the query\n const operators = [] as IExpression[];\n\n // Helper functions to generate Op expressions\n const containsOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'contains',\n f.weight\n );\n const freeTextOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'freeText',\n f.weight\n );\n\n // For each weighted search field\n weightedSearchFields.forEach(wsf => {\n // Push to field operators\n const fieldOperators: IExpression[] = [];\n\n // Add operator expressions for modified search term\n if (modifiedSearchTerm) {\n if (\n [Fields.keywords, Fields.sys.filename, Fields.sys.uri].includes(\n wsf.fieldId\n )\n ) {\n fieldOperators.push(...containsOp(wsf, modifiedSearchTerm));\n } else {\n if ([Fields.entryTitle].includes(wsf.fieldId)) {\n fieldOperators.push(\n Op.or(\n ...containsOp(wsf, modifiedSearchTerm),\n ...freeTextOp(wsf, modifiedSearchTerm)\n )\n );\n } else {\n fieldOperators.push(...freeTextOp(wsf, modifiedSearchTerm));\n }\n }\n }\n\n // Add operator expressions for any quoted phrases\n quotedPhrases.forEach(qp => fieldOperators.push(...containsOp(wsf, qp)));\n\n // If we are using multiple operators for a field we will\n // wrap each field inside an And operator so we will match\n // all terms/phrases rather than any terms/phrases\n if (fieldOperators.length > 1) {\n operators.push(Op.and(...fieldOperators));\n } else {\n operators.push(...fieldOperators);\n }\n });\n\n // Wrap operators in an Or operator\n return [\n Op.or()\n .addRange(operators)\n .add(Op.freeText(Fields.searchContent, searchTerm)),\n ];\n } else if (searchTerm) {\n // Searching without weightedSearchFields defined will fall back\n // to a default set of search fields with arbritary weights set.\n return [\n Op.or(\n Op.equalTo(Fields.entryTitle, searchTerm).weight(10),\n Op.freeText(Fields.entryTitle, searchTerm).weight(2),\n Op.freeText(Fields.entryDescription, searchTerm).weight(2),\n Op.contains(Fields.keywords, searchTerm).weight(2),\n Op.contains(Fields.sys.uri, searchTerm).weight(2),\n Op.contains(Fields.sys.allUris, searchTerm),\n Op.freeText(Fields.searchContent, searchTerm)\n ),\n ];\n } else {\n return [];\n }\n};\n","import { Query, OrderBy } from 'contensis-core-api';\n// import { Query, OrderBy } from 'contensis-delivery-api';\nimport {\n contentTypeIdExpression,\n customWhereExpressions,\n defaultExpressions,\n excludeIdsExpression,\n featuredResultsExpression,\n filterExpressions,\n includeInSearchExpressions,\n languagesExpression,\n orderByExpression,\n termExpressions,\n} from '../search/expressions';\nimport { Fields } from '../search/schema';\nimport { FilterQuery, SearchQuery } from '../models/Queries';\n\nexport const filterQuery: FilterQuery = (\n contentTypeIds,\n versionStatus,\n customWhere\n) => {\n const query = new Query(\n ...[\n ...contentTypeIdExpression(contentTypeIds),\n ...defaultExpressions(versionStatus),\n ...customWhereExpressions(customWhere),\n ]\n );\n query.orderBy = OrderBy.asc(Fields.entryTitle);\n query.pageSize = 100;\n\n return query;\n};\n\nexport const searchQuery: SearchQuery = (\n {\n assetTypes,\n contentTypeIds,\n customWhere,\n dynamicOrderBy,\n excludeIds,\n featuredResults,\n fields,\n filters,\n includeInSearchFields,\n languages,\n pageSize,\n pageIndex,\n orderBy,\n searchTerm,\n versionStatus,\n webpageTemplates,\n weightedSearchFields,\n },\n isFeatured = false\n) => {\n let expressions = [\n ...termExpressions(searchTerm, weightedSearchFields),\n ...defaultExpressions(versionStatus),\n ...includeInSearchExpressions(webpageTemplates, includeInSearchFields),\n ...languagesExpression(languages),\n ...customWhereExpressions(customWhere),\n ...excludeIdsExpression(excludeIds),\n ];\n if (isFeatured)\n expressions = [\n ...expressions,\n ...featuredResultsExpression(featuredResults),\n ];\n\n if (!isFeatured || (featuredResults && !featuredResults.contentTypeId))\n expressions = [\n ...expressions,\n ...filterExpressions(filters),\n ...contentTypeIdExpression(contentTypeIds, webpageTemplates, assetTypes),\n ];\n\n const query = new Query(...expressions);\n\n if (!searchTerm) query.orderBy = orderByExpression(orderBy);\n if (dynamicOrderBy && dynamicOrderBy.length)\n query.orderBy = orderByExpression(dynamicOrderBy);\n\n if (fields && fields.length > 0 && !isFeatured) {\n query.fields = fields;\n }\n\n query.pageIndex = isFeatured ? 0 : pageIndex;\n query.pageSize =\n isFeatured && typeof featuredResults.count === 'number'\n ? featuredResults.count\n : pageSize;\n return query;\n};\n","import { List, fromJS } from 'immutable';\nimport queryString from 'query-string';\n\nimport mapJson from 'jsonpath-mapper';\nimport { removeEmptyAttributes } from '../search/util';\nimport {\n getSelectedFilters,\n getSearchTerm,\n getCurrentFacet,\n getSearchContext,\n selectCurrentPath,\n} from '../redux/selectors';\nimport { AppState } from '../models/SearchState';\nimport { Context } from '../models/Enums';\n\ntype SearchStateParams = {\n state: AppState;\n facet?: string;\n orderBy?: string;\n pageIndex: number;\n term?: string;\n};\n\nconst searchUriTemplate = {\n path: ({ state, facet, pageIndex }: SearchStateParams) => {\n const currentFacet =\n getSearchContext(state) !== Context.listings &&\n (facet || getCurrentFacet(state));\n const currentPath = selectCurrentPath(state) || '/search';\n const newPath = currentFacet\n ? `${currentPath}/${currentFacet}`\n : currentPath;\n if (pageIndex) return `${newPath}/${pageIndex + 1}`;\n return newPath;\n },\n search: ({ state, facet, orderBy, term }: SearchStateParams) => {\n const searchContext = getSearchContext(state);\n // Lose stateFilters and currentSearch if a new\n // term is passed via an argument\n const stateFilters = term\n ? List()\n : getSelectedFilters(state, facet, searchContext).map(f => f.join(','));\n const currentSearch =\n !term && state.getIn(['routing', 'location', 'search']);\n const currentQs = removeEmptyAttributes(queryString.parse(currentSearch));\n\n if (orderBy) currentQs.orderBy = orderBy;\n\n const searchTerm = getSearchTerm(state);\n // Use Immutable's merge to merge the stateFilters with any current Qs\n // to build the new Qs.\n const mergedSearch = removeEmptyAttributes(\n fromJS(currentQs).merge(stateFilters).set('term', searchTerm).toJS()\n );\n return queryString.stringify(mergedSearch);\n },\n hash: {\n $path: 'state',\n $formatting: (state: AppState) =>\n state.getIn(['routing', 'location', 'hash'], '').replace('#', ''),\n },\n};\n\nconst mapStateToSearchUri = (params: SearchStateParams) =>\n mapJson(params, searchUriTemplate) as {\n path: Location['pathname'];\n search: Location['search'];\n hash: Location['hash'];\n };\n\nexport default mapStateToSearchUri;\n","import { default as mapSearchResultToState } from 'jsonpath-mapper';\nimport { List } from 'immutable';\n// eslint-disable-next-line import/default\nimport MappingTemplate from 'jsonpath-mapper/dist/models/Template';\nimport { Context } from '../models/Enums';\nimport { QueryParams } from '../models/Queries';\nimport { Mappers } from '../models/Search';\nimport {\n LoadFiltersSearchResults,\n SearchResults,\n} from '../models/SearchActions';\nimport { AppState } from '../models/SearchState';\nimport {\n SET_SEARCH_ENTRIES,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n} from '../redux/types';\nimport { getItemsFromResult } from '../search/util';\n\nconst mapEntriesToSearchResults = (\n {\n mappers,\n mapper,\n context,\n facet,\n }: {\n mappers?: Mappers;\n mapper?: Mappers['results'];\n context: Context;\n facet: string;\n },\n items: any[],\n state: AppState\n) => {\n const mapperFunc = mapper || (mappers && mappers.results);\n return items && typeof mapperFunc === 'function'\n ? mapperFunc(items, facet, context, state)\n : [];\n};\n\nexport const facetTemplate = {\n type: () => SET_SEARCH_ENTRIES,\n context: 'action.context',\n facet: 'action.facet',\n mappers: 'action.mappers',\n nextFacet: {\n entries: {\n isLoading: () => false,\n isError: () => false,\n },\n featuredEntries: {\n isLoading: () => false,\n isError: () => false,\n },\n featuredResults: ({ action, featuredResult, state }: SearchResults) =>\n mapEntriesToSearchResults(\n action,\n getItemsFromResult(featuredResult),\n state\n ),\n queryDuration: 'result.duration',\n pagingInfo: {\n isLoading: () => false,\n pageCount: {\n $path: 'result.payload.pageCount',\n $default: 0,\n },\n totalCount: {\n $path: 'result.payload.totalCount',\n $default: 0,\n },\n pageSize: {\n $path: 'result.payload.pageSize',\n $default: 0,\n },\n pageIndex: 'pageIndex',\n pagesLoaded: {\n $path: 'action.queryParams',\n $formatting: ({ pageIndex, pagesLoaded }: QueryParams) => {\n const loaded = List(pagesLoaded || []);\n const pages = isNaN(loaded.find(l => l === pageIndex) as any)\n ? loaded.push(pageIndex)\n : loaded;\n return pages.toList().sort((a, b) => a - b);\n },\n },\n prevPageIndex: 'action.queryParams.prevPageIndex',\n },\n preloaded: { $path: 'preload', $default: false },\n results: ({\n action,\n pageIndex,\n result,\n prevResults,\n state,\n }: SearchResults) => {\n const { loadMorePaging, pagesLoaded, prevPageIndex } = action.queryParams;\n\n const results = mapEntriesToSearchResults(\n action,\n getItemsFromResult(result),\n state\n );\n\n if (!loadMorePaging) return results;\n\n // add a _pageIndex property to the returned results to help us later\n const nextResults = results.map((r, idx) => ({\n _pageIndex: pageIndex,\n _pagePosition: idx,\n ...r,\n }));\n\n const loadedPages = List(pagesLoaded);\n\n // if pageIndex is found in loadedPages, we have already loaded this page\n if (!isNaN(loadedPages.find(l => l === pageIndex) as any))\n return prevResults;\n\n // Determine where we put the results depending on if we\n // are paging forwards, backwards, or doing a new search\n const firstResultSet = (\n pageIndex > prevPageIndex ? prevResults || [] : nextResults\n ) as any[];\n const secondResultSet = (\n pageIndex > prevPageIndex ? nextResults : prevResults || []\n ) as any[];\n const onlyResultSet = loadedPages.size === 0 ? nextResults : false;\n return onlyResultSet || [...firstResultSet, ...secondResultSet];\n },\n },\n preload: 'action.preload',\n ogState: 'action.ogState',\n debug: 'action.debug',\n} as any;\n\nexport const filterTemplate = {\n type: ({ type }) => type || LOAD_FILTERS_COMPLETE,\n context: 'context',\n facetKey: 'facetKey',\n filterKey: 'filterKey',\n nextFilter: {\n isLoading: () => false,\n isError: ({ type }) => type === LOAD_FILTERS_ERROR,\n items: ({ payload, selectedKeys, mapper }) => {\n if (payload && (payload.items || payload.children)) {\n const items = (payload.items || payload.children).map((item: any) => {\n item.isSelected = selectedKeys?.includes(item?.sys?.id || item.key);\n return item;\n });\n return mapper(items);\n }\n return [];\n },\n },\n error: { $path: 'error', $disable: e => !e },\n} as MappingTemplate<LoadFiltersSearchResults>;\n\nexport default mapSearchResultToState;\n","import { FilterExpressionTypes } from '../search/schema';\nimport mapJson from 'jsonpath-mapper';\n\nconst filterExpressionMapper = {\n // Expression type: so we can identify how to build the query\n expressionType: ({ filter }) =>\n filter.contentTypeId\n ? FilterExpressionTypes.contentType\n : FilterExpressionTypes.field,\n // Key: so we can target the query to a specific field\n key: 'filter.fieldId',\n // Value: so we can filter a specific field by an array of values\n // e.g. taxonomy key or contentTypeId array\n value: 'selectedValue',\n operator: 'filter.fieldOperator',\n};\n\nconst mapFilterToFilterExpression = filter =>\n mapJson(filter, filterExpressionMapper);\n\nexport default mapFilterToFilterExpression;\n","import mapFilterToFilterExpression from './filters-to-filterexpression.mapper';\n\nexport const mapFiltersToFilterExpression = (filters, selectedFilters) => {\n if (!selectedFilters || Object.keys(selectedFilters).length === 0) return [];\n const filterExpressions = [];\n\n // Iterate through the keys in selectedFilters and locate\n // the items that are selected and queryable\n Object.entries(selectedFilters).map(([fkey, selectedValue]) => {\n const filter = filters[fkey];\n if (selectedValue && filter) {\n const selectedItems =\n (filter.items && filter.items.filter(itm => itm.isSelected)) || [];\n\n // Where we have a value for a selectedFilter\n // and a filter is found for the current key\n // map the filter to a filterExpression object\n const expr = mapFilterToFilterExpression({\n filter,\n selectedItems,\n selectedValue,\n });\n filterExpressions.push(expr);\n }\n });\n return filterExpressions;\n};\n","import mapJson from 'jsonpath-mapper';\n\nimport { fromJS, List, Map } from 'immutable';\nimport {\n getFacet,\n getSelectedFilters,\n getQueryParameter,\n getSearchTerm,\n getPageIndex,\n getFilters,\n getCustomEnv,\n getPrevPageIndex,\n getPagesLoaded,\n selectVersionStatus,\n} from '../redux/selectors';\nimport { mapFiltersToFilterExpression } from './filters-to-filterexpression';\nimport { UPDATE_PAGE_INDEX } from '../redux/types';\nimport { QueryParams } from '../models/Queries';\nimport { AppState } from '../models/SearchState';\nimport { Context } from '../models/Enums';\nimport {\n EnsureSearchAction,\n SetSearchEntriesAction,\n} from '../models/SearchActions';\nimport { WeightedSearchField } from '../models/Search';\n\ntype QueryParamsMapperParams = {\n context: Context;\n facet: string;\n action: EnsureSearchAction | SetSearchEntriesAction;\n state: AppState;\n};\n\nconst queryParamsTemplate = {\n assetTypes: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'assetTypes', List()),\n contentTypeIds: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'contentTypeIds', List()),\n customWhere: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'customWhere', List()),\n dynamicOrderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'dynamicOrderBy', List()),\n env: ({ state, facet, context }: QueryParamsMapperParams) =>\n getCustomEnv(state, facet, context),\n excludeIds: ({\n action: { excludeIds },\n }: {\n action: { excludeIds: string | string[] };\n }) => {\n // Exclude current route entry id from minilist searches or any supplied ids\n if (excludeIds)\n return Array.isArray(excludeIds)\n ? excludeIds\n : excludeIds.split(',').map(id => id.trim());\n return null;\n },\n featuredResults: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'featuredResults', null),\n fields: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'fields', List()),\n filters: ({ state, facet, context }: QueryParamsMapperParams) => {\n const stateFilters = getFilters(state, facet, context).toJS();\n const selectedFilters = getSelectedFilters(state, facet, context).toJS();\n // Use another mapping function to map the filter parameters for the query\n const filterParams = mapFiltersToFilterExpression(\n stateFilters,\n selectedFilters\n );\n return filterParams;\n },\n includeInSearchFields: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'includeInSearch', List()),\n internalPageIndex: ({ action, state }: QueryParamsMapperParams) =>\n getPageIndex(state, '', action.context),\n internalPaging: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'internalPaging', false),\n languages: ({ action }: QueryParamsMapperParams) =>\n action.defaultLang ? [action.defaultLang] : [],\n linkDepth: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'linkDepth', 0),\n loadMorePaging: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'loadMorePaging', false),\n orderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'orderBy', List()),\n pageIndex: (root: QueryParamsMapperParams) => {\n const { action, state } = root;\n if (getQueryParameter(root, 'internalPaging', false)) return 0;\n if (action.type === UPDATE_PAGE_INDEX) return action.params.pageIndex;\n return !action.preload ? getPageIndex(state, '', action.context) : 0;\n },\n pageSize: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'pageSize'),\n pagesLoaded: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPagesLoaded(state, facet, context),\n prevPageIndex: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPrevPageIndex(state, facet, context),\n projectId: ({ state, facet, context }: QueryParamsMapperParams) =>\n getFacet(state, facet, context).get('projectId'),\n searchTerm: (root: QueryParamsMapperParams) =>\n root.context !== Context.minilist ||\n getQueryParameter(root, 'useSearchTerm', false)\n ? getSearchTerm(root.state)\n : '',\n selectedFilters: ({ state, facet, context }: QueryParamsMapperParams) =>\n getSelectedFilters(state, facet, context).map(f => f.join(',')),\n versionStatus: ({ state }: QueryParamsMapperParams) =>\n selectVersionStatus(state),\n weightedSearchFields: (root: QueryParamsMapperParams) => {\n const wsf = getQueryParameter(root, 'weightedSearchFields', List()) as List<\n Map<string, keyof WeightedSearchField>\n >;\n const deduped = wsf\n .groupBy((v = Map()) => v.get('fieldId'))\n .map((v = Map()) => v.first())\n .toList();\n return deduped;\n // return wsf;\n },\n webpageTemplates: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'webpageTemplates', List()),\n};\n\nconst mapStateToQueryParams = (sourceJson: QueryParamsMapperParams) =>\n fromJS(mapJson(sourceJson, queryParamsTemplate)).toJS() as QueryParams;\n\nexport default mapStateToQueryParams;\n","import { areArraysEqualSets } from '../search/util';\nimport {\n getSelectedFilters,\n getIsLoaded,\n getQueryParams,\n getPageIndex,\n getIsInternalPaging,\n getSearchTerm,\n} from './selectors';\nimport { Context } from '../models/Enums';\nimport mapStateToQueryParams from '../transformations/state-to-queryparams.mapper';\nimport { QueryParams, SearchQueryOptions } from '../models/Queries';\nimport { AppState } from '../models/SearchState';\nimport {\n EnsureSearchAction,\n SetSearchEntriesAction,\n} from '../models/SearchActions';\n\n/**\n * 1, Generates all the parameters required to run the search query.\n * 2, Tells us if we should run the search.\n * @param {object} action\n * @param {ImmutableMap} state\n * @returns [queryParams, runSearch]\n */\nexport const generateQueryParams = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState\n): [SearchQueryOptions, boolean] => {\n const { context, facet } = action;\n // Map parameters using state and some additional\n // inputs from the action\n const queryParams = mapStateToQueryParams({\n context,\n facet,\n action,\n state,\n });\n\n return [queryParams, runSearch(action, state, queryParams)];\n};\n\n/**\n * Checks if we have already loaded everything we're asking for and tells us to run the search or not\n * @param action\n * @param state\n */\nexport const runSearch = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState,\n queryParams: SearchQueryOptions\n) => {\n const {\n context,\n defaultLang,\n facet,\n ogState = state,\n preload,\n ssr,\n } = action as EnsureSearchAction & SetSearchEntriesAction;\n\n let willRun = false;\n\n const facetIsLoaded = defaultLang\n ? false\n : getIsLoaded(state, context, facet);\n const stateParams = getQueryParams(\n ogState,\n facet,\n context\n ).toJS() as QueryParams;\n stateParams.pageIndex = getPageIndex(ogState, facet, context);\n stateParams.searchTerm = getSearchTerm(ogState);\n\n if (\n (context === Context.facets && ssr) ||\n // context === Context.minilist ||\n preload ||\n !facetIsLoaded ||\n filterParamsChanged(action) ||\n defaultLang\n ) {\n willRun = true;\n } else {\n // Don't execute the search if the inbound query params\n // are the same as what we already have in state\n Object.entries(stateParams).forEach(([param, value]) => {\n const queryParam = queryParams[param as keyof SearchQueryOptions];\n if (JSON.stringify(value) !== JSON.stringify(queryParam)) {\n willRun = true;\n }\n });\n }\n\n const internalPaging = getIsInternalPaging(ogState, facet, context);\n if (internalPaging && facetIsLoaded) {\n willRun = false;\n }\n\n return willRun;\n};\n\n/**\n * This will tell us if filter parameters have been\n * changed by some external event such as a route change\n * @param action\n * @returns true or false\n */\nexport const filterParamsChanged = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state?: AppState\n) => {\n const {\n context,\n facet,\n params,\n ogState = state,\n } = action as EnsureSearchAction & SetSearchEntriesAction;\n const selectedFilters = getSelectedFilters(\n ogState as AppState,\n facet,\n context\n ).toJS();\n\n const paramsChanged = Object.entries(selectedFilters).map(\n ([filterKey, selectedValues]) => {\n const inboundValues =\n (params && params[filterKey] && params[filterKey].split(',')) || [];\n\n if (!areArraysEqualSets(selectedValues, inboundValues)) return true;\n }\n );\n\n return paramsChanged.filter(f => f === true).length > 0;\n};\n\n/* eslint-disable no-console */\nexport const debugExecuteSearch = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState\n) => {\n const [queryParams, runSearch] = generateQueryParams(action, state);\n\n console.log(\n 'runSearch',\n runSearch,\n 'action',\n action,\n 'filterParamsChanged',\n filterParamsChanged(action, state),\n 'getIsLoaded(state, context, facet)',\n getIsLoaded(state, action.context, action.facet)\n );\n const stateParams = getQueryParams(\n action.ogState || state,\n action.facet,\n action.context\n ).toJS() as QueryParams;\n stateParams.pageIndex = getPageIndex(\n action.ogState || state,\n action.facet,\n action.context\n );\n stateParams.searchTerm = getSearchTerm(action.ogState || state);\n console.log(stateParams, queryParams);\n\n console.log(\n 'getSelectedFilters',\n getSelectedFilters(\n action.ogState || state,\n action.facet,\n action.context\n ).toJS(),\n 'params',\n action.params\n );\n};\n","import { default as mapEntry } from 'jsonpath-mapper';\nimport { Fields } from '../search/schema';\n\n// *** FILTER ITEM MAPPING ***\n\n// Base mapping, fields that are the same across all mappings\n// to save repeating these elements in every mapper, spread this\n// into your discrete mappings\nconst base = {\n contentTypeId: Fields.sys.contentTypeId,\n title: 'entryTitle',\n key: 'sys.id',\n path: 'sys.slug',\n isSelected: 'isSelected',\n};\n\nconst mapEntriesToFilterItems = entries => {\n if (!entries) return [];\n return entries.map(entry => {\n const template = base;\n if (template) {\n return mapEntry(entry, template);\n }\n return entry;\n });\n};\n\nexport default mapEntriesToFilterItems;\n","import * as log from 'loglevel';\nimport { takeEvery, put, select, call, all } from 'redux-saga/effects';\nimport { List, Map } from 'immutable';\nimport { PagedList, Query, VersionStatus } from 'contensis-core-api/lib/models';\nimport { Entry, TaxonomyNode } from 'contensis-delivery-api/lib/models';\n\nimport { cachedSearch } from '../search/ContensisDeliveryApi';\nimport { callCustomApi, timedSearch, getItemsFromResult } from '../search/util';\n\nimport {\n CLEAR_FILTERS,\n DO_SEARCH,\n EXECUTE_SEARCH,\n EXECUTE_SEARCH_PRELOAD,\n LOAD_FILTERS,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n SET_ROUTE_FILTERS,\n SET_SEARCH_ENTRIES,\n UPDATE_SEARCH_TERM,\n UPDATE_PAGE_INDEX,\n UPDATE_CURRENT_FACET,\n UPDATE_SELECTED_FILTERS,\n UPDATE_CURRENT_TAB,\n UPDATE_SORT_ORDER,\n SET_SEARCH_FILTERS,\n APPLY_CONFIG,\n} from './types';\nimport {\n navigate,\n updateCurrentFacet as updateCurrentFacetAction,\n withMappers,\n} from './actions';\nimport {\n getCurrentFacet,\n getPageIndex,\n getFacets,\n getSearchTabs,\n getCustomApi,\n getSelectedFilters,\n getFacet,\n getIsSsr,\n getFiltersToLoad,\n getResults,\n selectVersionStatus,\n} from './selectors';\nimport { searchQuery, filterQuery } from './queries';\nimport mapStateToSearchUri from '../transformations/state-to-searchuri';\nimport mapSearchResultToState, {\n facetTemplate,\n filterTemplate,\n} from '../transformations/searchresult-to-state.mapper';\nimport { filtering, searchFacet } from './schema';\nimport { generateQueryParams, debugExecuteSearch } from './util';\nimport mapEntriesToFilterItems from '../transformations/entry-to-filteritem.mapper';\nimport { AppState, Filter } from '../models/SearchState';\nimport {\n ApplySearchFilterAction,\n ClearFiltersAction,\n EnsureSearchAction,\n ExecuteSearchAction,\n InitListingAction,\n LoadFiltersCompleteAction,\n LoadFiltersSearchResults,\n SearchResults,\n SetSearchEntriesAction,\n SetSearchEntriesParams,\n TriggerSearchAction,\n UpdateCurrentFacetAction,\n UpdateCurrentTabAction,\n UpdatePageIndexAction,\n UpdateSearchTermAction,\n UpdateSortOrderAction,\n WithMappers,\n} from '../models/SearchActions';\nimport { Mappers } from '../models/Search';\nimport { Context } from '../models/Enums';\nimport { TimedSearchResponse } from '../models/SearchUtil';\n\nexport const searchSagas = [\n takeEvery(CLEAR_FILTERS, clearFilters),\n takeEvery(DO_SEARCH, doSearch),\n takeEvery(SET_ROUTE_FILTERS, loadFilters),\n takeEvery(SET_SEARCH_ENTRIES, preloadOtherFacets),\n takeEvery(UPDATE_CURRENT_FACET, updateCurrentFacet),\n takeEvery(UPDATE_CURRENT_TAB, updateCurrentTab),\n takeEvery(UPDATE_PAGE_INDEX, updatePageIndex),\n takeEvery(UPDATE_SEARCH_TERM, updateSearchTerm),\n takeEvery(UPDATE_SORT_ORDER, updateSortOrder),\n takeEvery(UPDATE_SELECTED_FILTERS, applySearchFilter),\n];\n\nexport function* setRouteFilters(action: InitListingAction) {\n const { mappers, params, listingType, defaultLang, debug } = action;\n const context = listingType ? Context.listings : Context.facets;\n const state: AppState = yield select();\n const ssr = getIsSsr(state);\n\n // Get current facet from params or state\n let currentFacet = (params && params.facet) || listingType;\n\n // Pick the default facet from initialState\n if (!currentFacet) {\n const tabs = getSearchTabs(state);\n currentFacet =\n tabs.getIn([0, 'defaultFacet'], '') || getFacets(state).keySeq().first();\n }\n\n const nextAction = {\n type: SET_ROUTE_FILTERS,\n context,\n facet: currentFacet,\n mappers,\n params,\n defaultLang,\n ssr,\n debug,\n } as InitListingAction;\n yield put(nextAction);\n\n // Using call instead of triggering from the put\n // to allow this exported saga to continue during SSR\n yield call(ensureSearch, { ...nextAction, ogState: state });\n}\n\nexport function* doSearch(action: TriggerSearchAction) {\n const state: AppState = yield select();\n if (action.config) {\n // If the action contains a config object, we can add this to the\n // state at runtime\n yield put({ ...action, type: APPLY_CONFIG });\n }\n\n const nextAction = {\n ...action,\n type: SET_SEARCH_FILTERS,\n ssr: getIsSsr(state),\n } as InitListingAction;\n yield put(nextAction);\n\n yield call(ensureSearch, { ...nextAction, ogState: state });\n}\n\nfunction* loadFilters(action: InitListingAction) {\n const { facet: facetKey, context, mappers = {} as Mappers } = action;\n const filtersToLoad = (yield select(\n getFiltersToLoad,\n facetKey,\n context\n )) as List<string>;\n if (filtersToLoad.size > 0) {\n yield put({\n type: LOAD_FILTERS,\n filtersToLoad,\n facetKey,\n context,\n });\n const selectedKeys = (yield select(\n getSelectedFilters,\n facetKey,\n context\n )) as Map<string, List<string>>;\n const facet = (yield select(\n getFacet,\n facetKey,\n context\n )) as typeof searchFacet;\n const filters = facet.get('filters', Map()) as Map<\n string,\n typeof filtering\n >;\n const projectId = facet.get('projectId', '') as string;\n\n const filtersToLoadSagas =\n filters &&\n filtersToLoad\n .map((filterKey = '') => {\n return call(loadFilter, {\n facetKey,\n filterKey,\n filter: filters.get(filterKey) as typeof filtering,\n projectId,\n selectedKeys: selectedKeys.get(filterKey) as List<string>,\n context,\n mapper:\n ('filterItems' in mappers && mappers.filterItems) ||\n mapEntriesToFilterItems,\n } as LoadFilterAction);\n })\n .toJS();\n if (filtersToLoadSagas) yield all(filtersToLoadSagas);\n }\n}\n\ntype LoadFilterAction = {\n facetKey: string;\n filterKey: string;\n filter: typeof filtering;\n projectId: string;\n selectedKeys: List<string>;\n context: Context;\n mapper: Mappers['filterItems'];\n};\n\nfunction* loadFilter(action: LoadFilterAction) {\n const {\n facetKey,\n filterKey,\n filter,\n projectId,\n selectedKeys,\n context,\n mapper,\n } = action;\n const { contentTypeId, customWhere, path } =\n 'toJS' in filter\n ? (filter.toJS() as Filter)\n : (filter as unknown as Filter);\n const createStateFrom: LoadFiltersSearchResults = {\n type: LOAD_FILTERS_COMPLETE,\n context,\n error: undefined,\n facetKey,\n filterKey,\n payload: {} as TaxonomyNode | PagedList<Entry>,\n selectedKeys,\n mapper,\n };\n\n try {\n if (contentTypeId) {\n const versionStatus = (yield select(\n selectVersionStatus\n )) as VersionStatus;\n const query = filterQuery(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId],\n versionStatus,\n customWhere\n );\n const payload = (yield cachedSearch.search(\n query,\n 0,\n projectId\n )) as PagedList<Entry>;\n\n if (!payload) throw new Error('No payload returned by search');\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n if (path) {\n const payload = (yield cachedSearch.getTaxonomyNodeByPath(\n path,\n projectId\n )) as TaxonomyNode;\n\n if (!payload)\n throw new Error(`No payload returned for taxonomy path: '${path}'`);\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n } catch (error) {\n createStateFrom.type = LOAD_FILTERS_ERROR;\n createStateFrom.error = error;\n }\n\n const nextAction = mapSearchResultToState<\n LoadFiltersSearchResults,\n LoadFiltersCompleteAction\n >(createStateFrom, filterTemplate);\n yield put(nextAction);\n}\n\nfunction* ensureSearch(action: EnsureSearchAction) {\n const { context, facet, debug } = action;\n try {\n const state = (yield select()) as AppState;\n const nextAction = { ...action, ogState: action.ogState || state };\n\n const [queryParams, runSearch] = generateQueryParams(nextAction, state);\n\n if (debug && (debug === true || debug.executeSearch))\n debugExecuteSearch(nextAction, state);\n\n if (runSearch) {\n yield put({ type: EXECUTE_SEARCH, facet, context });\n yield call(executeSearch, {\n ...nextAction,\n context,\n facet,\n queryParams,\n debug,\n } as ExecuteSearchAction);\n }\n } catch (error: any) {\n log.error(...['Error running search saga:', error, error.stack]);\n }\n}\n\nfunction* executeSearch(action: ExecuteSearchAction) {\n const { context, facet, queryParams, mappers } = action;\n try {\n const state = (yield select()) as AppState;\n let result = {} as TimedSearchResponse;\n let featuredResult: TimedSearchResponse | undefined;\n let featuredQuery: Query;\n const customApi = getCustomApi(state, facet, context);\n\n if (customApi) {\n const apiParams =\n (typeof mappers === 'object' &&\n typeof mappers.customApi === 'function' &&\n mappers.customApi(queryParams)) ||\n ({} as { [key: string]: string });\n\n result.payload = (yield callCustomApi<any>(\n customApi,\n apiParams\n )) as any[];\n result.duration = 1;\n } else {\n if (queryParams.featuredResults) {\n featuredQuery = searchQuery(queryParams, true);\n featuredResult = (yield timedSearch(\n featuredQuery,\n queryParams.linkDepth,\n queryParams.projectId,\n queryParams.env\n )) as TimedSearchResponse;\n // eslint-disable-next-line require-atomic-updates\n queryParams.excludeIds = getItemsFromResult(featuredResult)\n .map(fi => fi?.sys?.id)\n .filter(fi => typeof fi === 'string') as string[];\n }\n const query = searchQuery(queryParams);\n\n result = yield timedSearch(\n query,\n queryParams.linkDepth,\n queryParams.projectId,\n queryParams.env\n );\n }\n\n const createStateFrom: SearchResults = {\n action,\n featuredResult,\n pageIndex:\n (queryParams.internalPaging && queryParams.internalPageIndex) ||\n queryParams.pageIndex,\n prevResults: getResults(state, facet, action.context),\n result,\n state,\n };\n\n const nextAction = mapSearchResultToState<\n SearchResults,\n SetSearchEntriesParams\n >(createStateFrom, facetTemplate);\n yield put(nextAction);\n } catch (error: any) {\n log.error(...['Error running search saga:', error, error.stack]);\n }\n}\n\nfunction* preloadOtherFacets(action: SetSearchEntriesAction) {\n const { preload, context, facet, debug } = action;\n const state = (yield select()) as AppState;\n const currentFacet = getCurrentFacet(state);\n\n if (!preload && facet === currentFacet && context !== Context.listings) {\n const allFacets = getFacets(state).toJS();\n const otherFacets = Object.keys(allFacets).filter(f => f !== currentFacet);\n\n yield all(\n otherFacets.map((preloadFacet = '') => {\n const preloadAction = {\n ...action,\n facet: preloadFacet,\n preload: true,\n };\n const [queryParams, runSearch] = generateQueryParams(\n preloadAction,\n state\n );\n\n if (debug && (debug === true || debug.preloadOtherFacets))\n debugExecuteSearch(preloadAction, state);\n\n return (\n runSearch &&\n call(executeSearch, {\n ...action,\n type: EXECUTE_SEARCH_PRELOAD,\n preload: true,\n facet: preloadFacet,\n queryParams,\n } as ExecuteSearchAction & SetSearchEntriesParams)\n );\n })\n );\n }\n}\n\nfunction* updateCurrentTab(action: WithMappers<UpdateCurrentTabAction>) {\n const { id, mappers } = action;\n const state = (yield select()) as AppState;\n const facets = getFacets(state);\n const tabs = getSearchTabs(state);\n let nextFacet = tabs.getIn([id, 'currentFacet']);\n if (!nextFacet) {\n facets.map((facet = Map(), facetName) => {\n if (\n facet.get('tabId') === id &&\n tabs.getIn([id, 'defaultFacet']) === facetName\n )\n nextFacet = facetName;\n });\n }\n // If the next Tab does not have a defaultFacet,\n // take the first facet for that tab\n if (!nextFacet)\n nextFacet = facets\n .filter((f = Map()) => f.get('tabId') === id)\n .keySeq()\n .first();\n\n yield put(withMappers(updateCurrentFacetAction(nextFacet), mappers));\n}\n\nfunction* clearFilters(action: WithMappers<ClearFiltersAction>) {\n const { mappers } = action;\n const uri = (yield buildUri({}, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateCurrentFacet(action: WithMappers<UpdateCurrentFacetAction>) {\n const { facet, mappers } = action;\n const pageIndex = (yield select(getPageIndex, facet)) as number;\n const uri = (yield buildUri({ facet, pageIndex }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateSearchTerm(action: WithMappers<UpdateSearchTermAction>) {\n const { term, mappers } = action;\n const uri = (yield buildUri({ term }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateSortOrder(action: WithMappers<UpdateSortOrderAction>) {\n const { orderBy, facet, mappers } = action;\n const uri = (yield buildUri({ orderBy, facet }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updatePageIndex(action: WithMappers<UpdatePageIndexAction>) {\n const { pageIndex, mappers } = action;\n const uri = (yield buildUri({ pageIndex }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* applySearchFilter(action: WithMappers<ApplySearchFilterAction>) {\n const { mappers } = action;\n const uri = (yield buildUri({}, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* buildUri(\n {\n facet,\n orderBy,\n pageIndex = 0,\n term,\n }: { facet?: string; orderBy?: string; pageIndex?: number; term?: string },\n mappers: Mappers\n) {\n const state = (yield select()) as AppState;\n const mapUri = (mappers && mappers.navigate) || mapStateToSearchUri;\n const uri = mapUri({ state, facet, orderBy, pageIndex, term });\n // return uri;\n return `${uri.path}${(uri.search && `?${uri.search}`) || ''}${\n (uri.hash && `#${uri.hash}`) || ''\n }`;\n}\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Context } from '../models/Enums';\nimport { Facet, Mappers } from '../models/Search';\nimport { DebugFlags } from '../models/SearchActions';\nimport { AppState } from '../models/SearchState';\nimport { triggerSearch } from '../redux/actions';\nimport {\n getResults,\n getIsLoading,\n getFacet,\n getPaging,\n getSearchTerm,\n getFilters,\n} from '../redux/selectors';\n\ntype UseMiniListProps = {\n id: string;\n config?: Facet;\n debug?: DebugFlags;\n defaultLang?: string;\n excludeIds?: string[];\n mapper?: Mappers['results'];\n mappers?: Mappers;\n params?: { [key: string]: string };\n};\n\nconst useMinilist = (\n {\n id,\n config,\n excludeIds,\n mapper,\n mappers,\n params,\n defaultLang,\n debug,\n }: UseMiniListProps = { id: '' }\n) => {\n const dispatch = useDispatch();\n\n const { facet, filters, isLoading, pagingInfo, results, searchTerm } =\n useSelector((state: AppState) => ({\n facet: getFacet(state, id, Context.minilist).toJS(),\n filters: getFilters(state, id, Context.minilist).toJS(),\n isLoading: getIsLoading(state, Context.minilist, id),\n pagingInfo: getPaging(state, id, Context.minilist).toJS(),\n results: getResults(state, id, Context.minilist).toJS(),\n searchTerm: getSearchTerm(state),\n }));\n\n useEffect(() => {\n if (id && (mapper || (mappers && mappers.results))) {\n dispatch(\n triggerSearch({\n config,\n context: Context.minilist,\n defaultLang,\n facet: id,\n mapper,\n mappers,\n params,\n excludeIds,\n debug,\n })\n );\n }\n }, [dispatch, excludeIds, id, defaultLang, params]);\n\n return {\n filters,\n isLoading,\n pagingInfo,\n results,\n searchTerm,\n title: facet.title,\n };\n};\n\nexport default useMinilist;\n","import { List, Map, OrderedMap } from 'immutable';\nimport { CustomWhereClause } from '../models/Search';\nimport { Filter, FilterItem, SearchState } from '../models/SearchState';\n\nexport const entries = Map({\n isLoading: false,\n isError: false,\n items: List(),\n});\n\nexport const pagingInfo = Map({\n isLoading: false,\n pageCount: 0,\n pageIndex: 0,\n pageSize: 0,\n pagesLoaded: List(),\n prevPageIndex: 0,\n totalCount: 0,\n});\n\nexport const searchFacet = OrderedMap({\n title: null,\n featuredEntries: entries,\n featuredResults: List(),\n entries,\n results: List(),\n queryParams: Map(),\n filters: Map(),\n queryDuration: 0,\n pagingInfo,\n projectId: '',\n});\n\nexport const searchTab = Map({\n currentFacet: undefined,\n facets: OrderedMap(),\n id: 0,\n label: undefined,\n totalCount: '',\n});\n\nexport const filtering = Map({\n isLoading: false,\n isError: false,\n isGrouped: false,\n title: undefined,\n contentTypeId: undefined,\n customWhere: List(),\n fieldId: undefined,\n items: List<typeof filterItem>(),\n} as Omit<Filter, 'customWhere' | 'items'> & { customWhere?: List<CustomWhereClause>; items?: List<typeof filterItem> });\n\nexport const filterItem = Map({\n key: '',\n type: undefined,\n title: undefined,\n path: undefined,\n isSelected: false,\n} as FilterItem);\n\nconst config = Map({\n isLoaded: false,\n isError: false,\n});\n\nconst searchState: SearchState = {\n currentFacet: '',\n term: '',\n facets: OrderedMap(),\n tabs: List(),\n config,\n};\n\nexport const initialState = OrderedMap(searchState);\n","// eslint-disable no-console\nimport { List, Map, OrderedMap, fromJS } from 'immutable';\n\nimport {\n entries,\n filterItem,\n searchFacet,\n initialState,\n filtering,\n} from './schema';\nimport {\n APPLY_CONFIG,\n CLEAR_FILTERS,\n EXECUTE_SEARCH,\n EXECUTE_SEARCH_ERROR,\n LOAD_FILTERS,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n SET_ROUTE_FILTERS,\n SET_SEARCH_FILTERS,\n SET_SEARCH_ENTRIES,\n UPDATE_SEARCH_TERM,\n UPDATE_SELECTED_FILTERS,\n UPDATE_SORT_ORDER,\n UPDATE_PAGE_INDEX,\n} from './types';\nimport { toArray } from '../search/util';\nimport { ConfigTypes, Facet, Listing, SearchConfig } from '../models/Search';\nimport { Context } from '../models/Enums';\n\nconst addConfigToState = (state: typeof initialState, action: any) => {\n const { context, facet, config } = action;\n // Adding or changing the config of a single facet, listing or minilist\n if (context && facet && config) {\n return state.setIn([context, facet], fromJS(config));\n } else if (config) {\n // Changing the entire search config\n const newState = fromJS(config);\n return newState;\n }\n return state;\n};\n\nconst generateSearchFacets = (context: Context, config: SearchConfig) => {\n let facets = OrderedMap<string, OrderedMap<string, typeof searchFacet>>();\n if (config) {\n const thisConfig: ConfigTypes = config[context] || {};\n if (Object.keys(thisConfig).length > 0) {\n Object.entries(thisConfig).map(\n ([facetName, facet]: [string, Facet | Listing]) => {\n const newFacet = searchFacet.merge(fromJS(facet));\n if (!('isDisabled' in facet) || facet.isDisabled !== true)\n facets = facets.set(\n facetName,\n newFacet as OrderedMap<string, typeof searchFacet>\n );\n }\n );\n }\n }\n return facets;\n};\n\nconst generateFiltersState = (\n {\n facet,\n params,\n context,\n isCurrentFacet,\n }: {\n facet: string;\n params: { [k: string]: string };\n context: Context;\n isCurrentFacet: boolean;\n },\n state: typeof initialState\n) => {\n // Remove filters we know about from params\n const filterParams = fromJS({\n ...params,\n facet: undefined,\n orderBy: undefined,\n pageIndex: undefined,\n term: undefined,\n }) as Map<string, string>;\n\n // Get any existing filters and normalise the items[]\n // so we can start off with isSelected is false\n let filters = state\n .getIn([context, facet, 'filters'], Map({}))\n .map((filter: typeof filtering) =>\n isCurrentFacet || filter.get('isGrouped')\n ? filter.set(\n 'items',\n (filter.get('items') as List<typeof filterItem>).map(item =>\n item?.set('isSelected', false)\n ) as List<typeof filterItem>\n )\n : filter\n );\n\n const addFilterItem = (\n filters: Map<string, typeof filtering>,\n paramKey: string,\n paramValue: string\n ) =>\n // Iterate through all filters within the facet,\n // if the paramKey matches the filter key\n // get the existing items list, and see if that filter\n // already exists, if so set isSelected to true,\n // if not create a new filterItem, setting the key only\n // so we can match this key later on when we load the filters\n filters.map((filter = Map(), key) => {\n if (paramKey !== key || (!isCurrentFacet && !filter.get('isGrouped'))) {\n return filter;\n } else {\n const items = (filter.get('items') || List()) as List<\n typeof filterItem\n >;\n const itemIndex = items.findIndex(\n item => (item?.get('key') as unknown as string) === paramValue\n );\n if (items.size > 0 && itemIndex !== -1)\n return filter.setIn(['items', itemIndex, 'isSelected'], true);\n\n return filter.set(\n 'items',\n ((filter.get('items') || List()) as List<typeof filterItem>).push(\n filterItem.set('key', paramValue as any).set('isSelected', true)\n )\n );\n }\n });\n\n // For each value found in filterParams\n // we are looking to split that value into multiple by any comma\n // and then either set isSelected for an existing filterItem\n // or push an item to the filters.{ key }.items[] array\n // giving it only the key (entry guid) that can be taken to filter\n // the search results during SSR without needing to fetch the filters first\n filterParams.map(\n (paramValue, paramName = '') =>\n paramValue &&\n paramValue\n .split(',')\n .map(pVal => (filters = addFilterItem(filters, paramName, pVal)))\n );\n\n return filters;\n};\n\nconst resetFacets = (state: typeof initialState, context: Context) =>\n OrderedMap(\n (state.get(context) as Map<string, typeof searchFacet>).map(\n (v = OrderedMap()) => resetFacet(v)\n )\n );\n\nconst resetFacet = (facet: typeof searchFacet) =>\n facet\n .setIn(['pagingInfo', 'pagesLoaded'], fromJS([]))\n .setIn(['pagingInfo', 'pageIndex'], 0)\n .setIn(['queryDuration'], 0);\n\nexport default (config: SearchConfig) => {\n // Add facets from SearchConfig to initialState\n const initState = initialState\n .set('tabs', fromJS(config.tabs))\n .set('facets', generateSearchFacets(Context.facets, config))\n .set('listings', generateSearchFacets(Context.listings, config))\n .set('minilist', generateSearchFacets(Context.minilist, config));\n\n return (state: typeof initState = initState, action: any) => {\n const context = state.get('context') as Context;\n const current = state.get(\n context !== 'listings' ? 'currentFacet' : 'currentListing'\n ) as string;\n\n switch (action.type) {\n case APPLY_CONFIG: {\n return addConfigToState(state, action);\n }\n case CLEAR_FILTERS: {\n const currentFilters = state.getIn([\n context,\n current,\n 'filters',\n ]) as Map<string, typeof filtering>;\n return state\n .setIn(\n [context, current, 'filters'],\n currentFilters.map(filter => {\n const filterItems = ((filter && filter.get('items')) ||\n []) as List<typeof filterItem>;\n return filter?.set(\n 'items',\n filterItems.map(item => item?.set('isSelected', false)) as List<\n typeof filterItem\n >\n );\n })\n )\n .setIn([context, current, 'queryDuration'], 0)\n .setIn([context, current, 'pagingInfo', 'pagesLoaded'], fromJS([]));\n }\n case EXECUTE_SEARCH: {\n return state.setIn(\n [action.context, action.facet, 'entries', 'isLoading'],\n true\n );\n }\n case EXECUTE_SEARCH_ERROR: {\n return state.setIn(\n [action.context, action.facet, 'entries'],\n entries.set('isError', true).set('error', fromJS(action.error))\n );\n }\n case LOAD_FILTERS: {\n const { facetKey, filtersToLoad } = action;\n const filters = state.getIn([\n action.context,\n facetKey,\n 'filters',\n ]) as Map<string, typeof filtering>;\n\n return state.setIn(\n [action.context, facetKey, 'filters'],\n filters.map((filter = Map(), filterKey) =>\n filtersToLoad.find((f: string) => f === filterKey)\n ? filter.set('isLoading', true)\n : filter\n )\n );\n }\n case LOAD_FILTERS_ERROR:\n case LOAD_FILTERS_COMPLETE: {\n const { facetKey, filterKey, nextFilter } = action;\n const filter = state.getIn([\n action.context,\n facetKey,\n 'filters',\n filterKey,\n ]);\n\n if (\n !(nextFilter.items && nextFilter.items.length > 0) &&\n filter.get('items').size >= nextFilter.items.length\n )\n // Preserve items already in state\n return state.setIn(\n [action.context, facetKey, 'filters', filterKey],\n filter.set('isLoading', false).set('isError', nextFilter.isError)\n );\n\n return state.setIn(\n [action.context, facetKey, 'filters', filterKey],\n filter.merge(fromJS(nextFilter))\n );\n }\n case SET_ROUTE_FILTERS: {\n const { facet, params, context } = action;\n const { term = '', pageIndex, orderBy } = params;\n\n const stateTerm = state.get('term');\n const tabId = state.getIn([context, facet, 'tabId'], 0);\n\n // Reset the facet if the search term has changed, or if the any of\n // the filters have changed\n const resetAllFacets = stateTerm && term !== stateTerm;\n let resetCurrentFacet = false;\n\n // Add filter values in params to the matched filters in state for the current facet\n // causing unfetched filter items to be generated with isSelected: true\n // or existing filter items to be tagged with isSelected: true\n const nextFacets = (\n state.get(context) as OrderedMap<string, typeof searchFacet>\n ).map((stateFacet = Map(), facetName = '') => {\n const isCurrentFacet = facetName === facet;\n const nextFilters = generateFiltersState(\n {\n facet: facetName,\n params,\n context,\n isCurrentFacet,\n },\n state\n );\n\n resetCurrentFacet =\n state.getIn(['config', 'isLoaded'], false) === true &&\n !nextFilters.equals(stateFacet.get('filters'));\n\n return (resetCurrentFacet ? resetFacet(stateFacet) : stateFacet)\n .set('filters', nextFilters)\n .setIn(['queryParams', 'dynamicOrderBy'], toArray(orderBy));\n });\n\n const nextState = state\n .set('context', context)\n .set(context, nextFacets as any)\n .set(\n action.context === Context.facets\n ? 'currentFacet'\n : 'currentListing',\n facet\n )\n .set('term', term)\n .setIn(['tabs', tabId, 'currentFacet'], facet)\n .setIn(\n [context, facet, 'pagingInfo', 'pageIndex'],\n Number(pageIndex) - 1 ||\n (state.getIn([context, facet, 'queryParams', 'loadMorePaging'])\n ? state.getIn([context, facet, 'pagingInfo', 'pageIndex'], 0)\n : 0)\n )\n .setIn(['config', 'isLoaded'], true)\n .setIn(['config', 'ssr'], typeof window === 'undefined');\n\n return resetAllFacets\n ? nextState.set(context, resetFacets(nextState, context) as any)\n : nextState;\n }\n case SET_SEARCH_ENTRIES: {\n const thisContext = action.context || context;\n const currentFacet = state.getIn([thisContext, action.facet]);\n return state.setIn(\n [thisContext, action.facet],\n currentFacet.merge(fromJS(action.nextFacet))\n );\n }\n case SET_SEARCH_FILTERS: {\n // DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS\n // for example in a minilist scenario where the route filters\n // are used for the primary page / listing navigation\n\n // Add filter values in params to the matched filters in state\n // causing unfetched filter items to be generated with isSelected: true\n const filters = generateFiltersState(\n { ...action, isCurrentFacet: true },\n state\n );\n\n const term = action?.params?.term;\n const useSearchTerm = state.getIn(\n [\n action.context || Context.minilist,\n action.facet,\n 'queryParams',\n 'useSearchTerm',\n ],\n false\n );\n\n return state\n .setIn(\n [action.context || Context.minilist, action.facet, 'filters'],\n filters\n )\n .setIn(\n [\n action.context || Context.minilist,\n action.facet,\n 'queryParams',\n 'excludeIds',\n ],\n fromJS(action.excludeIds)\n )\n .set('term', useSearchTerm ? term : state.get('term'))\n .setIn(['config', 'ssr'], typeof window === 'undefined');\n }\n case UPDATE_PAGE_INDEX: {\n const { pageIndex } = action;\n const internalPaging = state.getIn(\n [context, current, 'queryParams', 'internalPaging'],\n false\n );\n\n const currentPageIndex = state.getIn(\n [context, current, 'pagingInfo', 'pageIndex'],\n 0\n );\n\n const nextState = state\n .setIn(\n [context, current, 'pagingInfo', 'pageIndex'],\n Number(pageIndex) || 0\n )\n .setIn(\n [context, current, 'pagingInfo', 'prevPageIndex'],\n currentPageIndex\n )\n .setIn([context, current, 'pagingInfo', 'isLoading'], true);\n\n if (internalPaging) return nextState;\n\n return nextState.setIn([context, current, 'queryDuration'], 0);\n }\n case UPDATE_SEARCH_TERM: {\n return state\n .set('term', action.term)\n .set(context, resetFacets(state, context) as any);\n }\n case UPDATE_SELECTED_FILTERS: {\n const { filter, key } = action;\n\n const isSingleSelect = state.getIn(\n [context, current, 'filters', filter, 'isSingleSelect'],\n false\n );\n const isGrouped = state.getIn(\n [context, current, 'filters', filter, 'isGrouped'],\n false\n );\n\n const currentItems = state.getIn([\n context,\n current,\n 'filters',\n filter,\n 'items',\n ]) as List<typeof filterItem>;\n return state\n .set(\n context,\n isGrouped\n ? (resetFacets(state, context) as any)\n : (state.get(context) as OrderedMap<string, typeof searchFacet>)\n )\n .setIn(\n [context, current],\n resetFacet(state.getIn([context, current]))\n )\n .setIn(\n [context, current, 'filters', filter, 'items'],\n currentItems.map((item = Map()) => {\n if (item.get('key') === key) {\n return item.set('isSelected', !item.get('isSelected'));\n }\n return isSingleSelect ? item.set('isSelected', false) : item;\n })\n );\n }\n case UPDATE_SORT_ORDER: {\n const { orderBy, facet } = action;\n return state\n .set(context, resetFacets(state, context) as any)\n .setIn(\n [context, facet || current, 'queryParams', 'dynamicOrderBy'],\n orderBy ? fromJS(toArray(orderBy)) : ''\n );\n }\n default:\n return state;\n }\n };\n};\n","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const Context = {\n facets: 'facets',\n listings: 'listings',\n minilist: 'minilist',\n};\nexport * from './models';\n\nexport { default as withSearch } from './containers/withSearch';\nexport { default as withListing } from './containers/withListing';\nexport { doSearch, setRouteFilters, searchSagas as sagas } from './redux/sagas';\n\nexport { default as useMinilist } from './hooks/useMinilist.hook';\n\nexport * as actions from './redux/actions';\nexport * as queries from './redux/queries';\nexport { default as reducer } from './redux/reducers';\nexport * as schema from './redux/schema';\nexport * as selectors from './redux/selectors';\nexport * as types from './redux/types';\n"],"names":["toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","ACTION_PREFIX","APPLY_CONFIG","CLEAR_FILTERS","DO_SEARCH","EXECUTE_SEARCH","EXECUTE_SEARCH_ERROR","EXECUTE_SEARCH_PRELOAD","LOAD_FILTERS","LOAD_FILTERS_COMPLETE","LOAD_FILTERS_ERROR","SET_FEATURED_ENTRIES","SET_ROUTE_FILTERS","SET_SEARCH_FILTERS","SET_SEARCH_ENTRIES","SET_SELECTED_FILTER","UPDATE_CURRENT_FACET","UPDATE_CURRENT_TAB","UPDATE_SORT_ORDER","UPDATE_PAGE_INDEX","UPDATE_SEARCH_TERM","UPDATE_SELECTED_FILTERS","withMappers","action","mappers","triggerSearch","config","context","debug","defaultLang","excludeIds","facet","mapper","params","type","initListing","navigate","path","state","clearFilters","updatePageIndex","pageIndex","updateCurrentFacet","updateCurrentTab","id","updateSearchTerm","term","updateSelectedFilters","filter","key","updateSortOrder","orderBy","Context","getSearchContext","getIn","facets","getCurrent","getCurrentFacet","getCurrentListing","getCurrentTab","getFacets","OrderedMap","getTabFacets","v","getFacetTitles","map","Map","title","get","totalCount","toIndexedSeq","toArray","getFacet","facetName","currentFacet","getListing","listing","currentListing","listings","getFilters","getRenderableFilters","f","getFiltersToLoad","filters","loadedFilters","List","i","size","isLoaded","filterKey","toList","getSelectedFilters","isoDateRegex","RegExp","selectedFilters","item","isIsoDate","test","toLowerCase","getResults","current","getIsInternalPaging","getIsLoaded","getIsLoading","getIsSsr","getFeaturedResults","getPaging","getPageIndex","getPrevPageIndex","getPageIsLoading","getPagesLoaded","Set","getTotalCount","getFacetAuthentication","getFeaturedEntryIds","entryIds","entry","getSearchTerm","getSearchTabs","getQueryParams","getQueryParameter","ifnull","getCustomApi","getCustomEnv","getTabsAndFacets","tabs","tab","fieldsToCount","countFields","thisTabFacets","thisTabTotal","find","first","a","b","set","getSearchTotalCount","tabsAndFacets","wholeSearchTotal","t","getFacetsTotalCount","selectFacets","selectListing","selectCurrentPath","selectVersionStatus","withSearch","SearchComponent","Wrapper","props","displayName","name","mapStateToProps","currentPageIndex","currentTabIndex","facetsTotalCount","facetTitles","featuredResults","isLoading","paging","pageIsLoading","results","resultsInfo","searchTerm","searchTotalCount","sortOrder","mapDispatchToProps","connector","connect","withListing","ListingComponent","featured","getClientConfig","project","env","DELIVERY_API_CONFIG","projectId","window","PROXY_DELIVERY_API","rootUrl","responseHandler","CacheNode","constructor","value","next","prev","LruCache","limit","head","tail","node","remove","setHead","CachedSearch","cache","taxonomyLookup","search","query","linkDepth","client","Client","create","request","JSON","stringify","toString","getTaxonomyNodeByPath","taxonomy","getNodeByPath","order","childDepth","then","extendTaxonomyNode","execute","promise","catch","getTaxonomyId","children","n","parts","split","length","cachedSearch","now","Date","performance","fixFreeTextForElastic","s","illegalChars","illegalRegEx","c","join","replace","timedSearch","duration","start","payload","end","getItemsFromResult","result","Array","isArray","items","extractQuotedPhrases","pattern","match","buildUrl","route","qs","queryString","callCustomApi","customApi","apiUri","uri","Error","startsWith","response","fetch","json","removeEmptyAttributes","obj","forEach","val","seperator","areArraysEqualSets","a1","a2","superSet","ai","e","DataFormats","asset","webpage","FilterExpressionTypes","contentType","field","sys","allUris","contentTypeId","dataFormat","filename","includeInSearch","language","versionStatus","Fields","entryDescription","entryTitle","keywords","searchContent","wildcard","fieldExpression","operator","weight","Op","or","fieldId","flat","between","equalToOrIn","undefined","contentTypeIdExpression","contentTypeIds","webpageTemplates","assetTypes","expressions","push","dataFormatExpression","filterExpressions","param","withContentTypeIds","notContentTypeIds","substring","andExpr","and","dataFormatExpr","withExpr","notExpr","not","add","featuredResultsExpression","fieldValue","languagesExpression","languages","includeInSearchExpressions","includeInSearchFields","includeInSearchField","exists","equalTo","defaultExpressions","excludeIdsExpression","expr","orderByExpression","expression","OrderBy","ob","desc","asc","in","handle","betweenValue","valArr","minimum","maximum","console","log","bc","op","customWhereExpressions","where","clause","keys","idx","k","includes","recurseExpr","notKey","notIdx","innerOperator","innerValue","innerField","clauseKey","termExpressions","weightedSearchFields","quotedPhrases","modifiedSearchTerm","qp","trim","operators","containsOp","freeTextOp","wsf","fieldOperators","addRange","freeText","contains","filterQuery","customWhere","Query","pageSize","searchQuery","dynamicOrderBy","fields","isFeatured","count","searchUriTemplate","currentPath","newPath","searchContext","stateFilters","currentSearch","currentQs","parse","mergedSearch","fromJS","merge","hash","$path","$formatting","mapStateToSearchUri","mapJson","mapEntriesToSearchResults","mapperFunc","facetTemplate","nextFacet","isError","featuredEntries","featuredResult","queryDuration","pagingInfo","pageCount","$default","pagesLoaded","loaded","pages","isNaN","l","sort","prevPageIndex","preloaded","prevResults","loadMorePaging","queryParams","nextResults","r","_pageIndex","_pagePosition","loadedPages","firstResultSet","secondResultSet","onlyResultSet","preload","ogState","filterTemplate","facetKey","nextFilter","selectedKeys","isSelected","error","$disable","filterExpressionMapper","expressionType","mapFilterToFilterExpression","mapFiltersToFilterExpression","fkey","selectedValue","selectedItems","itm","queryParamsTemplate","root","filterParams","internalPageIndex","internalPaging","minilist","deduped","groupBy","mapStateToQueryParams","sourceJson","generateQueryParams","runSearch","ssr","willRun","facetIsLoaded","stateParams","filterParamsChanged","queryParam","paramsChanged","selectedValues","inboundValues","debugExecuteSearch","base","mapEntriesToFilterItems","template","mapEntry","searchSagas","takeEvery","doSearch","loadFilters","preloadOtherFacets","applySearchFilter","setRouteFilters","listingType","select","keySeq","nextAction","put","call","ensureSearch","filtersToLoad","filtersToLoadSagas","loadFilter","filterItems","all","createStateFrom","mapSearchResultToState","executeSearch","stack","featuredQuery","apiParams","fi","allFacets","otherFacets","preloadFacet","preloadAction","updateCurrentFacetAction","buildUri","mapUri","useMinilist","dispatch","useDispatch","useSelector","useEffect","searchFacet","searchTab","label","filtering","isGrouped","filterItem","searchState","initialState","addConfigToState","setIn","newState","generateSearchFacets","thisConfig","newFacet","isDisabled","generateFiltersState","isCurrentFacet","addFilterItem","paramKey","paramValue","itemIndex","findIndex","paramName","pVal","resetFacets","resetFacet","initState","currentFilters","stateTerm","tabId","resetAllFacets","resetCurrentFacet","nextFacets","stateFacet","nextFilters","equals","nextState","Number","thisContext","useSearchTerm","isSingleSelect","currentItems"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sources":["../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/ToJs.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/types.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/actions.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/models/Enums.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/selectors.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/containers/withSearch.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/containers/withListing.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/ContensisDeliveryApi.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/performance.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/util.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/schema.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/expressions.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/queries.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/state-to-searchuri.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/searchresult-to-state.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpression.mapper.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpression.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/state-to-queryparams.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/util.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/entry-to-filteritem.mapper.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/sagas.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/hooks/useMinilist.hook.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/schema.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/reducers.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/index.ts"],"sourcesContent":["/* eslint-disable react/display-name */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\n\nexport const toJS =\n <Props extends { [key: string]: any }>(\n WrappedComponent: React.ComponentType<Props>\n ): React.ComponentType<Props> =>\n (wrappedComponentProps: Props) => {\n const KEY = 0;\n const VALUE = 1;\n\n const propsJS = Object.entries(wrappedComponentProps).reduce<Props>(\n (newProps: any, wrappedComponentProp) => {\n const propKey = wrappedComponentProp[KEY];\n const propValue = wrappedComponentProp[VALUE];\n newProps[propKey] =\n propValue && typeof propValue === 'object' && 'toJS' in propValue\n ? propValue.toJS()\n : propValue;\n return newProps as Props;\n },\n {} as Props\n );\n\n return <WrappedComponent {...propsJS} />;\n };\n","const ACTION_PREFIX = '@SEARCH/';\nexport const APPLY_CONFIG = `${ACTION_PREFIX}APPLY_CONFIG`;\nexport const CLEAR_FILTERS = `${ACTION_PREFIX}CLEAR_FILTERS`;\nexport const DO_SEARCH = `${ACTION_PREFIX}DO_SEARCH`;\nexport const EXECUTE_SEARCH = `${ACTION_PREFIX}EXECUTE_SEARCH`;\nexport const EXECUTE_SEARCH_ERROR = `${ACTION_PREFIX}EXECUTE_SEARCH_ERROR`;\nexport const EXECUTE_SEARCH_PRELOAD = `${ACTION_PREFIX}EXECUTE_SEARCH_PRELOAD`;\nexport const LOAD_FILTERS = `${ACTION_PREFIX}LOAD_FILTERS`;\nexport const LOAD_FILTERS_COMPLETE = `${ACTION_PREFIX}LOAD_FILTERS_COMPLETE`;\nexport const LOAD_FILTERS_ERROR = `${ACTION_PREFIX}LOAD_FILTERS_ERROR`;\nexport const SET_FEATURED_ENTRIES = `${ACTION_PREFIX}SET_FEATURED_ENTRIES`;\nexport const SET_ROUTE_FILTERS = `${ACTION_PREFIX}SET_ROUTE_FILTERS`;\nexport const SET_SEARCH_FILTERS = `${ACTION_PREFIX}SET_SEARCH_FILTERS`;\nexport const SET_SEARCH_ENTRIES = `${ACTION_PREFIX}SET_SEARCH_ENTRIES`;\nexport const SET_SELECTED_FILTER = `${ACTION_PREFIX}SET_SELECTED_FILTER`;\nexport const UPDATE_CURRENT_FACET = `${ACTION_PREFIX}UPDATE_CURRENT_FACET`;\nexport const UPDATE_CURRENT_TAB = `${ACTION_PREFIX}UPDATE_CURRENT_TAB`;\nexport const UPDATE_SORT_ORDER = `${ACTION_PREFIX}UPDATE_SORT_ORDER`;\nexport const UPDATE_PAGE_INDEX = `${ACTION_PREFIX}UPDATE_PAGE_INDEX`;\nexport const UPDATE_SEARCH_TERM = `${ACTION_PREFIX}UPDATE_SEARCH_TERM`;\nexport const UPDATE_SELECTED_FILTERS = `${ACTION_PREFIX}UPDATE_SELECTED_FILTERS`;\n","import {\n CLEAR_FILTERS,\n SET_ROUTE_FILTERS,\n UPDATE_PAGE_INDEX,\n UPDATE_SELECTED_FILTERS,\n UPDATE_CURRENT_FACET,\n UPDATE_CURRENT_TAB,\n UPDATE_SEARCH_TERM,\n UPDATE_SORT_ORDER,\n DO_SEARCH,\n} from './types';\nimport { Mappers } from '../models/Search';\nimport {\n ClearFiltersActionCreator,\n InitListingActionCreator,\n TriggerSearchActionCreator,\n} from '../models/SearchActions';\n\nexport const withMappers = <T>(action: T, mappers: Mappers) => {\n return { ...action, mappers };\n};\n\n// export const withMappers2 = (actionFunc, args, mappers) => {\n// return () => ({ ...actionFunc(args), mappers });\n// };\n\nexport const triggerSearch: TriggerSearchActionCreator = ({\n config,\n context,\n debug,\n defaultLang,\n excludeIds,\n facet,\n mapper,\n params,\n}) => {\n return {\n type: DO_SEARCH,\n config,\n context,\n debug,\n defaultLang,\n excludeIds,\n facet,\n mapper,\n params,\n };\n};\n\nexport const initListing: InitListingActionCreator = ({\n context,\n facet,\n mapper,\n params,\n}) => {\n return {\n type: SET_ROUTE_FILTERS,\n context,\n facet,\n mapper,\n params,\n };\n};\n\nexport const navigate = (path: string, state?: any) => {\n return {\n type: '@ROUTING/_SET_ROUTE',\n path,\n state,\n };\n};\n\nexport const clearFilters: ClearFiltersActionCreator = () => {\n return {\n type: CLEAR_FILTERS,\n };\n};\n\nexport const updatePageIndex = (pageIndex: number) => {\n return {\n type: UPDATE_PAGE_INDEX,\n pageIndex,\n };\n};\n\nexport const updateCurrentFacet = (facet: string) => {\n return {\n type: UPDATE_CURRENT_FACET,\n facet,\n };\n};\n\nexport const updateCurrentTab = (id: number) => {\n return {\n type: UPDATE_CURRENT_TAB,\n id,\n };\n};\n\nexport const updateSearchTerm = (term: string) => {\n return {\n type: UPDATE_SEARCH_TERM,\n term,\n };\n};\n\nexport const updateSelectedFilters = (filter: string, key: string) => {\n return {\n type: UPDATE_SELECTED_FILTERS,\n filter,\n key,\n };\n};\n\nexport const updateSortOrder = (orderBy: string, facet?: string) => {\n return {\n type: UPDATE_SORT_ORDER,\n orderBy,\n facet,\n };\n};\n","export enum Context {\n facets = 'facets',\n listings = 'listings',\n minilist = 'minilist',\n}\n// export type Context = 'facets' | 'listings' | 'minilist';\n","import { List, Map, OrderedMap, Set } from 'immutable';\nimport { Entry } from 'contensis-delivery-api/lib/models';\n\nimport { Context } from '../models/Enums';\nimport { Listing } from '../models/Search';\nimport { AppState, Tab } from '../models/SearchState';\nimport {\n filtering,\n filterItem,\n initialState,\n searchFacet,\n searchTab,\n} from './schema';\n\nexport const getSearchContext = (state: AppState): Context =>\n state.getIn(['search', 'context'], Context.facets);\n\nexport const getCurrent = (\n state: Map<'search', typeof initialState>,\n context = Context.facets\n) =>\n context === Context.facets\n ? getCurrentFacet(state)\n : getCurrentListing(state);\n\nexport const getCurrentFacet = (state: AppState): string =>\n state.getIn(['search', 'currentFacet']);\n\nexport const getCurrentListing = (state: AppState): string =>\n state.getIn(['search', 'currentListing']);\n\nexport const getCurrentTab = (state: AppState): Map<string, Tab[keyof Tab]> =>\n state.getIn(['search', Context.facets, getCurrentFacet(state), 'tabId'], 0);\n\nexport const getFacets = (\n state: AppState\n): OrderedMap<string, typeof searchFacet> =>\n state.getIn(['search', Context.facets], OrderedMap());\n\nexport const getTabFacets = (state: AppState) =>\n getFacets(state).filter(\n (v, key) =>\n getFacets(state).getIn([key, 'tabId'], 0) === getCurrentTab(state)\n ) as OrderedMap<string, typeof searchFacet>;\n\nexport const getFacetTitles = (state: AppState) =>\n getFacets(state)\n .map((facet = Map(), key) => ({\n key,\n title: facet.get('title') as string | undefined,\n totalCount: facet.getIn(['pagingInfo', 'totalCount']) as number,\n }))\n .toIndexedSeq()\n .toArray();\n\nexport const getFacet = (\n state: AppState,\n facetName = '',\n context = Context.facets\n) => {\n const currentFacet = facetName || getCurrentFacet(state);\n return state.getIn(['search', context, currentFacet], Map());\n};\n\nexport const getListing = (\n state: AppState,\n listing = ''\n): Map<string, Listing[keyof Listing]> => {\n const currentListing = listing || getCurrentListing(state);\n return state.getIn(['search', Context.listings, currentListing], Map());\n};\n\nexport const getFilters = (\n state: AppState,\n facet: string,\n context = Context.facets\n): Map<string, typeof filtering> => {\n return state.getIn(\n ['search', context, facet || getCurrent(state, context), 'filters'],\n Map()\n );\n};\n\nexport const getRenderableFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n) =>\n getFilters(state, facet, context).filter(\n (f = Map()) => f.get('renderable', true) as boolean\n );\n\nexport const getFiltersToLoad = (\n state: AppState,\n facet: string,\n context = Context.facets\n) => {\n const filters = getFilters(state, facet, context);\n const loadedFilters = filters.map(\n (f = Map()) =>\n ((f.get('items') || List()) as List<typeof filterItem>).filter(i => {\n const title = i?.get('title');\n return typeof title !== 'undefined' && !!title;\n }).size > 0 && f.get('isError', false) === false\n );\n return loadedFilters\n .map((isLoaded, filterKey) => (!isLoaded ? filterKey : null))\n .toList()\n .filter(f => !!f);\n};\n\n// We lowercase the filter key unless it's an ISO date string where the T must be uppercase\nexport const getSelectedFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n) => {\n const filters = getFilters(state, facet, context);\n const isoDateRegex = RegExp(/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d/);\n\n const selectedFilters = filters.map((filter = Map()) =>\n (\n (filter.get('items') as List<typeof filterItem>) ||\n List<typeof filterItem>()\n )\n .filter(item => !!item?.get('isSelected', false))\n .map(item => {\n const key = item?.get('key', '') as string;\n const isIsoDate = isoDateRegex.test(key);\n return isIsoDate ? key : key.toLowerCase();\n })\n );\n return selectedFilters as Map<string, List<string>>;\n};\n\nexport const getResults = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n ['search', context, current || getCurrent(state, context), 'results'],\n List()\n ) as List<any>;\n};\n\nexport const getIsInternalPaging = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return state.getIn(\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'queryParams',\n 'internalPaging',\n ],\n false\n );\n};\n\nexport const getIsLoaded = (\n state: AppState,\n context = Context.facets,\n facet?: string\n) => {\n return !!state.getIn(\n ['search', context, facet || getCurrent(state, context), 'queryDuration'],\n 0\n );\n};\n\nexport const getIsLoading = (\n state: AppState,\n context = Context.facets,\n facet?: string\n) => {\n return state.getIn([\n 'search',\n context,\n facet || getCurrent(state, context),\n 'entries',\n 'isLoading',\n ]);\n};\n\nexport const getIsSsr = (state: AppState): boolean => {\n return state.getIn(['search', 'config', 'ssr'], false);\n};\n\nexport const getFeaturedResults = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n List()\n );\n};\n\nexport const getPaging = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n ['search', context, current || getCurrent(state, context), 'pagingInfo'],\n Map()\n );\n};\n\nexport const getPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pageIndex',\n ]);\n};\n\nexport const getPrevPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'prevPageIndex',\n ]);\n};\nexport const getPageIsLoading = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'isLoading',\n ]);\n};\n\nexport const getPagesLoaded = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pagesLoaded',\n ],\n Set()\n );\n};\n\nexport const getTotalCount = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'totalCount',\n ]);\n};\n\nexport const getFacetAuthentication = (state: AppState, facet: string) =>\n state.getIn(['search', Context.facets, facet, 'authentication']);\n\nexport const getFeaturedEntryIds = (state: AppState) => {\n const currentFacet = getCurrentFacet(state);\n const entryIds = (\n state.getIn([\n 'search',\n Context.facets,\n currentFacet,\n 'featuredEntries',\n 'items',\n ]) as Map<string, Entry[keyof Entry]>\n ).map(entry => entry.getIn(['sys', 'id']) as string);\n return entryIds;\n};\n\nexport const getSearchTerm = (state: AppState) =>\n state.getIn(['search', 'term']);\n\nexport const getSearchTabs = (state: AppState): List<typeof searchTab> =>\n state.getIn(['search', 'tabs']);\n\nexport const getQueryParams = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return state.getIn(\n ['search', context, current || getCurrent(state, context), 'queryParams'],\n Map()\n ) as Map<string, any>;\n};\n\nexport const getQueryParameter = (\n {\n state,\n facet,\n context = Context.facets,\n }: { state: AppState; facet?: string; context?: Context },\n key: string,\n ifnull: any = null\n) => {\n return getQueryParams(state, facet, context).get(key, ifnull) || ifnull;\n};\n\nexport const getCustomApi = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'customApi',\n ]);\n};\n\nexport const getCustomEnv = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return state.getIn([\n 'search',\n context,\n current || getCurrent(state, context),\n 'env',\n ]);\n};\n\nexport const getTabsAndFacets = (state: AppState) => {\n const tabs = getSearchTabs(state);\n const facets = getFacets(state);\n\n return (tabs || List()).map((tab = Map()) => {\n const fieldsToCount = tab.get('totalCount');\n let countFields: List<List<string>>;\n\n if (typeof fieldsToCount === 'string')\n countFields = List([List([fieldsToCount])]);\n\n const thisTabFacets = facets.filter(\n (v, key) => facets.getIn([key, 'tabId'], 0) === tab.get('id')\n ) as OrderedMap<string, typeof searchFacet>;\n\n const thisTabTotal = thisTabFacets\n .map((facet = Map(), facetName) => {\n if (\n !countFields ||\n countFields.find((f = List()) => f.first() === facetName)\n )\n return facet.getIn(['pagingInfo', 'totalCount']);\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n return tab\n .set(Context.facets, thisTabFacets)\n .set('totalCount', thisTabTotal);\n });\n};\n\nexport const getSearchTotalCount = (state: AppState) => {\n const tabsAndFacets = getTabsAndFacets(state);\n const wholeSearchTotal = tabsAndFacets\n .map((t = Map()) => t.get('totalCount'))\n .reduce((a: any, b: any) => a + b, 0);\n return wholeSearchTotal;\n};\n\nexport const getFacetsTotalCount = (state: AppState) => {\n const facets = getFacets(state);\n const wholeSearchTotal = facets\n .map((t = Map()) => t.getIn(['pagingInfo', 'totalCount']))\n .reduce((a, b) => a + b, 0);\n return wholeSearchTotal;\n};\n\n// An exported copy of the relevant selectors scoped by default to a facets context\nexport const selectFacets = {\n getCurrent: getCurrentFacet,\n getCurrentTab,\n getCustomApi,\n getCustomEnv,\n getFacet,\n getFacetTitles,\n getFacets,\n getFacetsTotalCount,\n getFeaturedResults,\n getFilters,\n getFiltersToLoad,\n getIsLoaded,\n getIsLoading,\n getPageIndex,\n getPageIsLoading,\n getPagesLoaded,\n getPaging,\n getQueryParams: (state: AppState, facet: string) =>\n getQueryParams(state, facet, Context.facets),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet: string },\n key: string,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.facets }, key, ifnull),\n getRenderableFilters,\n getResults,\n getTabFacets,\n getTabsAndFacets,\n getTotalCount,\n getSearchTabs,\n getSearchTerm,\n getSearchTotalCount,\n getSelectedFilters,\n};\n\n// An exported copy of the relevant selectors pre-scoped to a listing context\nexport const selectListing = {\n getCurrent: getCurrentListing,\n getFeaturedResults: (state: AppState, listing = '') =>\n getFeaturedResults(state, listing, Context.listings),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings),\n getFiltersToLoad: (state: AppState, listing = '') =>\n getFiltersToLoad(state, listing, Context.listings),\n getListing,\n getIsLoaded: (state: AppState) => getIsLoaded(state, Context.listings),\n getIsLoading: (state: AppState) => getIsLoading(state, Context.listings),\n getPageIndex: (state: AppState, listing = '') =>\n getPageIndex(state, listing, Context.listings),\n getPaging: (state: AppState, listing = '') =>\n getPaging(state, listing, Context.listings),\n getPageIsLoading: (state: AppState, listing = '') =>\n getPageIsLoading(state, listing, Context.listings),\n getPagesLoaded: (state: AppState, listing = '') =>\n getPagesLoaded(state, listing, Context.listings),\n getQueryParams: (state: AppState, listing = '') =>\n getQueryParams(state, listing, Context.listings),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet?: string },\n key: string,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.listings }, key, ifnull),\n getRenderableFilters: (state: AppState, listing = '') =>\n getRenderableFilters(state, listing, Context.listings),\n getResults: (state: AppState, listing = '') =>\n getResults(state, listing, Context.listings),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n state.getIn(['routing', 'currentPath']);\n\nexport const selectVersionStatus = (state: AppState) =>\n state.getIn(['version', 'contensisVersionStatus']);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { toJS } from '../search/ToJs';\nimport {\n clearFilters,\n updateCurrentFacet,\n updateCurrentTab,\n updatePageIndex,\n updateSearchTerm,\n updateSelectedFilters,\n updateSortOrder,\n withMappers,\n} from '../redux/actions';\nimport {\n getCurrentFacet,\n getCurrentTab,\n getFacet,\n getFacetTitles,\n getFacetsTotalCount,\n getFeaturedResults,\n getIsLoading,\n getPageIndex,\n getPageIsLoading,\n getPaging,\n getQueryParameter,\n getRenderableFilters,\n getResults,\n getSearchTerm,\n getSearchTotalCount,\n getTabFacets,\n getTabsAndFacets,\n getTotalCount,\n} from '../redux/selectors';\nimport { Mappers } from '../models/Search';\nimport { SearchProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nconst withSearch =\n (mappers: Mappers) =>\n <Props extends Record<keyof Props, any>>(\n SearchComponent: React.ComponentType<Props>\n ) => {\n const Wrapper: React.FC<Props & SearchProps<any>> = props => {\n return <SearchComponent {...props} />;\n };\n\n Wrapper.displayName = `withSearch(${\n SearchComponent.displayName || SearchComponent.name\n })`;\n\n const mapStateToProps = (state: AppState) => {\n return {\n currentFacet: getCurrentFacet(state),\n currentPageIndex: getPageIndex(state),\n currentTabIndex: getCurrentTab(state),\n facet: getFacet(state),\n facets: getTabFacets(state),\n facetsTotalCount: getFacetsTotalCount(state),\n facetTitles: getFacetTitles(state),\n featuredResults: getFeaturedResults(state),\n filters: getRenderableFilters(state),\n isLoading: getIsLoading(state),\n paging: getPaging(state),\n pageIsLoading: getPageIsLoading(state),\n results: getResults(state),\n resultsInfo: mappers?.resultsInfo && mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n searchTotalCount: getSearchTotalCount(state),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n tabsAndFacets: getTabsAndFacets(state),\n totalCount: getTotalCount(state),\n };\n };\n\n const mapDispatchToProps = {\n clearFilters: () => withMappers(clearFilters(), mappers),\n updateCurrentFacet: (facet: string) =>\n withMappers(updateCurrentFacet(facet), mappers),\n updateCurrentTab: (id: number) =>\n withMappers(updateCurrentTab(id), mappers),\n updatePageIndex: (pageIndex: number) =>\n withMappers(updatePageIndex(pageIndex), mappers),\n updateSearchTerm: (term: string) =>\n withMappers(updateSearchTerm(term), mappers),\n updateSelectedFilters: (filter: string, key: string) =>\n withMappers(updateSelectedFilters(filter, key), mappers),\n updateSortOrder: (orderBy: string) =>\n withMappers(updateSortOrder(orderBy), mappers),\n };\n\n const connector = connect(mapStateToProps, mapDispatchToProps);\n\n return connector(toJS(Wrapper) as any);\n };\n\nexport default withSearch;\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { toJS } from '../search/ToJs';\nimport {\n clearFilters,\n updateCurrentFacet,\n updatePageIndex,\n updateSearchTerm,\n updateSelectedFilters,\n updateSortOrder,\n withMappers,\n} from '../redux/actions';\nimport { selectListing } from '../redux/selectors';\nimport { Mappers } from '../models/Search';\nimport { AppState } from '../models/SearchState';\nimport { ListingProps } from '../models/SearchProps';\n\nconst withListing =\n (mappers: Mappers) =>\n <Props extends Record<keyof Props, any>>(\n ListingComponent: React.FC<Props>\n ) => {\n const Wrapper: React.FC<Props & ListingProps<any>> = props => {\n return <ListingComponent {...props} />;\n };\n\n Wrapper.displayName = `withListing(${\n ListingComponent.displayName || ListingComponent.name\n })`;\n\n const {\n getCurrent,\n getFeaturedResults,\n getIsLoading,\n getListing,\n getPageIndex,\n getPaging,\n getQueryParameter,\n getRenderableFilters,\n getResults,\n getSearchTerm,\n } = selectListing;\n\n const mapStateToProps = (state: AppState) => {\n return {\n currentListing: getCurrent(state),\n currentPageIndex: getPageIndex(state),\n listing: getListing(state),\n featured: getFeaturedResults(state),\n filters: getRenderableFilters(state),\n isLoading: getIsLoading(state),\n paging: getPaging(state),\n results: getResults(state),\n resultsInfo:\n mappers &&\n typeof mappers.resultsInfo === 'function' &&\n mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n };\n };\n\n const mapDispatchToProps = {\n clearFilters: () => withMappers(clearFilters(), mappers),\n updateCurrentFacet: (facet: string) =>\n withMappers(updateCurrentFacet(facet), mappers),\n updatePageIndex: (pageIndex: number) =>\n withMappers(updatePageIndex(pageIndex), mappers),\n updateSearchTerm: (term: string) =>\n withMappers(updateSearchTerm(term), mappers),\n updateSelectedFilters: (filter: string, key: string) =>\n withMappers(updateSelectedFilters(filter, key), mappers),\n updateSortOrder: (orderBy: string) =>\n withMappers(updateSortOrder(orderBy), mappers),\n };\n\n return connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper) as any);\n };\n\nexport default withListing;\n","import { Client } from 'contensis-delivery-api';\n\nconst getClientConfig = (project, env) => {\n let config = DELIVERY_API_CONFIG; /* global DELIVERY_API_CONFIG */\n if (project) {\n config.projectId = project;\n }\n\n if (\n typeof window != 'undefined' &&\n PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n ) {\n // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = env || '';\n config.responseHandler = {\n 404: () => null,\n };\n }\n return config;\n};\nexport * from 'contensis-delivery-api';\n\n// This should only be executed on the client as it relies on the window.\nexport const GetClientSideDeliveryApiStatus = () => {\n if (typeof window != 'undefined') {\n const currentHostname = window.location.hostname;\n return GetDeliveryApiStatusFromHostname(currentHostname);\n }\n return null;\n};\n\nexport const GetDeliveryApiStatusFromHostname = currentHostname => {\n if (currentHostname.indexOf('localhost') > -1) return 'latest';\n\n if (currentHostname.endsWith('contensis.cloud')) {\n if (currentHostname.indexOf('preview.') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n if (currentHostname.endsWith('cloud.contensis.com')) {\n if (currentHostname.indexOf('preview-') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n return 'published';\n};\n\nclass DeliveryApi {\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return client.entries.search(query, linkDepth || 1);\n }\n\n getClient(deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n return Client.create(baseConfig);\n }\n getEntry(id, linkDepth = 1, deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n const client = Client.create(baseConfig);\n // return client.entries.get(id, linkDepth);\n return client.entries.get({ id, linkDepth });\n }\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nclass CacheNode {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n }\n}\n\nclass LruCache {\n constructor(limit = 100) {\n this.map = {};\n this.head = null;\n this.tail = null;\n this.limit = limit || 100;\n this.size = 0;\n }\n\n get(key) {\n if (this.map[key]) {\n let value = this.map[key].value;\n let node = new CacheNode(key, value);\n this.remove(key);\n this.setHead(node);\n return value;\n }\n }\n\n set(key, value) {\n let node = new CacheNode(key, value);\n if (this.map[key]) {\n this.remove(key);\n } else {\n if (this.size >= this.limit) {\n delete this.map[this.tail.key];\n this.size--;\n this.tail = this.tail.prev;\n this.tail.next = null;\n }\n }\n this.setHead(node);\n }\n\n setHead(node) {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.size++;\n this.map[node.key] = node;\n }\n\n remove(key) {\n let node = this.map[key];\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n delete this.map[key];\n this.size--;\n }\n}\n\nclass CachedSearch {\n cache = new LruCache();\n taxonomyLookup = {};\n\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n project + JSON.stringify(query) + linkDepth.toString(),\n () => client.entries.search(query, linkDepth)\n );\n }\n\n getTaxonomyNodeByPath(path, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(`[TAXONOMY NODE] ${path}`, () =>\n client.taxonomy\n .getNodeByPath({ path: path, order: 'defined', childDepth: 2 })\n .then(node => this.extendTaxonomyNode(node))\n );\n }\n\n request(key, execute) {\n if (!this.cache.get(key) || typeof window == 'undefined') {\n let promise = execute();\n this.cache.set(key, promise);\n promise.catch(() => {\n this.cache.remove(key);\n });\n }\n return this.cache.get(key);\n }\n\n extendTaxonomyNode(node) {\n let id = this.getTaxonomyId(node);\n this.taxonomyLookup[id] = node.key;\n return {\n ...node,\n id,\n children: node.children\n ? node.children.map(n => this.extendTaxonomyNode(n))\n : null,\n };\n }\n\n getTaxonomyId(node) {\n if (node.key) {\n let parts = node.key.split('/');\n return parts[parts.length - 1];\n }\n return '';\n }\n}\n\nexport const cachedSearch = new CachedSearch();\n","export const now = () => {\n if (typeof window == 'undefined') {\n return Date.now();\n }\n return window.performance.now();\n};\n","import queryString from 'query-string';\nimport { Map } from 'immutable';\nimport { now } from './performance';\nimport { cachedSearch } from './ContensisDeliveryApi';\n\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { PagedList, Query } from 'contensis-core-api';\nimport { CustomApi } from '../models/Search';\nimport { TimedSearchResponse } from '../models/SearchUtil';\n\nexport function fixFreeTextForElastic(s: string): string {\n const illegalChars = [\n '>',\n '<',\n '=',\n '|',\n '!',\n '{',\n '}',\n '[',\n ']',\n '^',\n '~',\n '*',\n '?',\n ':',\n '\\\\',\n '/',\n ];\n\n const illegalRegEx = new RegExp(\n illegalChars.map(c => '\\\\' + c).join('|'),\n 'g'\n );\n s = s.replace(illegalRegEx, '');\n // s = s.replace(encodedRegEx, ''); // (m) => '\\\\\\\\' + m);\n\n return s;\n}\n\nexport const timedSearch = async (\n query: Query,\n linkDepth = 0,\n projectId?: string,\n env?: string\n): Promise<null | TimedSearchResponse> => {\n if (!query) return null;\n\n let duration = 0;\n\n const start = now();\n const payload = (await cachedSearch.search(\n query,\n linkDepth,\n projectId,\n env\n )) as PagedList<Entry>;\n const end = now();\n\n duration = end - start;\n\n return { duration, payload };\n};\n\nexport const getItemsFromResult = (result?: {\n duration: number;\n payload: PagedList<Entry> | any[];\n}): Entry[] => {\n const { payload } = result || {};\n if (payload) {\n if (Array.isArray(payload)) return payload;\n if (Array.isArray(payload.items)) return payload.items;\n }\n return [];\n};\n\nexport const extractQuotedPhrases = (searchTerm: string): string[] => {\n const pattern = new RegExp(\n /(?=[\"'])(?:\"[^\"\\\\]*(?:\\\\[\\s\\S][^\"\\\\]*)*\"|'[^'\\\\]*(?:\\\\[\\s\\S][^'\\\\]*)*')/gm\n );\n\n return (searchTerm.match(pattern) || []).map(match =>\n match.replace(/\"/g, '')\n );\n};\n\nexport const buildUrl = (\n route: string,\n params: { [key: string]: string }\n): string => {\n const qs = queryString.stringify(params) as string;\n const path = qs ? `${route}?${qs}` : route;\n return path;\n};\n\nexport const callCustomApi = async <T>(\n customApi: Map<string, CustomApi[keyof CustomApi]>,\n filters: { [key: string]: string }\n): Promise<T> => {\n const apiUri = customApi.get('uri', '');\n let uri = buildUrl(apiUri, filters);\n if (!uri) throw new Error('uri is required to use customApi');\n if (typeof window == 'undefined' && uri.startsWith('/'))\n uri = `http://localhost:3001${uri}`;\n\n const response = await fetch(uri);\n return (await response.json()) as T;\n};\n\nexport const removeEmptyAttributes = (obj: any) => {\n Object.entries(obj).forEach(\n ([key, val]) =>\n (val && typeof val === 'object' && removeEmptyAttributes(val)) ||\n ((typeof val === 'undefined' || val === null || val === '') &&\n delete obj[key])\n );\n return obj;\n};\n\nexport const toArray = (obj: string, seperator = ',') =>\n typeof obj === 'undefined' || obj === null\n ? obj\n : Array.isArray(obj)\n ? obj\n : obj.split(seperator);\n\n// assumes array elements are primitive types\nexport const areArraysEqualSets = (a1: any[], a2: any[]) => {\n const superSet = {} as { [key: string]: any };\n for (const ai of a1) {\n const e = ai + typeof ai;\n superSet[e] = 1;\n }\n\n for (const ai of a2) {\n const e = ai + typeof ai;\n if (!superSet[e]) {\n return false;\n }\n superSet[e] = 2;\n }\n\n for (const e in superSet) {\n if (superSet[e] === 1) {\n return false;\n }\n }\n\n return true;\n};\n","export const DataFormats = {\n asset: 'asset',\n entry: 'entry',\n webpage: 'webpage',\n};\n\nexport const FilterExpressionTypes = {\n contentType: 'contentType',\n field: 'field',\n};\n\nconst sys = {\n allUris: 'sys.allUris',\n contentTypeId: 'sys.contentTypeId',\n dataFormat: 'sys.dataFormat',\n filename: 'sys.properties.filename',\n id: 'sys.id',\n includeInSearch: 'sys.metadata.includeInSearch',\n language: 'sys.language',\n uri: 'sys.uri',\n versionStatus: 'sys.versionStatus',\n};\n\nexport const Fields = {\n entryDescription: 'entryDescription',\n entryTitle: 'entryTitle',\n keywords: 'keywords',\n searchContent: 'searchContent',\n sys,\n contentTypeId: 'sys.contentTypeId',\n wildcard: '*',\n};\n","import {\n IExpression,\n ILogicalExpression,\n Op,\n OrderBy,\n VersionStatus,\n} from 'contensis-core-api';\nimport { Fields, DataFormats } from '../search/schema';\nimport { fixFreeTextForElastic, extractQuotedPhrases } from './util';\nimport { CustomWhereClause, WeightedSearchField } from '../models/Search';\nimport { FieldOperators } from '../models/Queries';\n\nexport const fieldExpression = (\n field: string | string[],\n value: any,\n operator: FieldOperators = 'equalTo',\n weight?: number\n): IExpression[] => {\n if (!field || !value) return [];\n if (Array.isArray(field))\n // If an array of fieldIds have been provided, call self for each fieldId\n // to generate expressions that are combined with an 'or' operator\n return [\n Op.or(\n ...field\n .map(fieldId => fieldExpression(fieldId, value, operator, weight))\n .flat()\n ),\n ];\n if (operator === 'between') return between(field, value);\n if (Array.isArray(value)) return equalToOrIn(field, value, operator);\n else\n return !weight\n ? [Op[operator](field, value, undefined, undefined)]\n : [Op[operator](field, value, undefined, undefined).weight(weight)];\n};\n\nexport const contentTypeIdExpression = (\n contentTypeIds: string[],\n webpageTemplates?: string[],\n assetTypes?: string[]\n) => {\n const expressions: ILogicalExpression[] = [];\n if (!contentTypeIds && !webpageTemplates && !assetTypes) return expressions;\n\n if (contentTypeIds && contentTypeIds.length > 0) {\n expressions.push(\n ...dataFormatExpression(contentTypeIds, DataFormats.entry)\n );\n }\n\n if (webpageTemplates && webpageTemplates.length > 0) {\n expressions.push(\n ...dataFormatExpression(webpageTemplates, DataFormats.webpage)\n );\n }\n\n if (assetTypes && assetTypes.length > 0) {\n expressions.push(...dataFormatExpression(assetTypes, DataFormats.asset));\n }\n\n if (expressions.length > 1) return [Op.or(...expressions)];\n\n return expressions;\n};\n\nexport const filterExpressions = (\n filters: { key: string; value: string; operator: FieldOperators }[]\n) => {\n if (!filters) return [];\n const expressions: IExpression[] = [];\n\n filters.map(param => {\n expressions.push(\n ...fieldExpression(param.key, param.value, param.operator || 'in')\n );\n });\n\n return expressions;\n};\n\nexport const dataFormatExpression = (\n contentTypeIds: string[],\n dataFormat = DataFormats.entry\n) => {\n if (contentTypeIds && contentTypeIds.length > 0) {\n /**\n * We have an array of contentTypeIds some may be prefixed with a \"!\"\n * to indicate this is a \"not\" expression\n */\n const withContentTypeIds = contentTypeIds.filter(c => !c.startsWith('!'));\n const notContentTypeIds = contentTypeIds\n .filter(c => c.startsWith('!'))\n .map(id => id.substring(1));\n\n const andExpr = Op.and();\n\n const dataFormatExpr = fieldExpression(\n Fields.sys.dataFormat,\n dataFormat\n )[0];\n\n const withExpr = fieldExpression(\n Fields.sys.contentTypeId,\n withContentTypeIds\n )[0];\n\n const notExpr = Op.not(\n fieldExpression(Fields.sys.contentTypeId, notContentTypeIds)[0]\n );\n\n andExpr.add(dataFormatExpr);\n if (withContentTypeIds.length > 0) andExpr.add(withExpr);\n if (notContentTypeIds.length > 0) andExpr.add(notExpr);\n\n return [andExpr];\n }\n return [];\n};\n\nexport const featuredResultsExpression = ({\n contentTypeId,\n fieldId,\n fieldValue = true,\n}: {\n contentTypeId?: string | string[];\n fieldId?: string | string[];\n fieldValue?: boolean;\n} = {}) => {\n const expressions = [] as IExpression[];\n\n if (contentTypeId) {\n expressions.push(\n ...contentTypeIdExpression(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId]\n )\n );\n }\n\n if (fieldId && fieldValue) {\n expressions.push(...fieldExpression(fieldId, fieldValue));\n }\n\n return expressions;\n};\n\nexport const languagesExpression = (languages: string[]) =>\n fieldExpression(Fields.sys.language, languages);\n\nexport const includeInSearchExpressions = (\n webpageTemplates: string[],\n includeInSearchFields: string[]\n) => {\n const expressions = [] as IExpression[];\n // Or include this expression if we have explicity specified non-default includeInSearch fields\n if (Array.isArray(includeInSearchFields))\n expressions.push(\n ...includeInSearchFields.map(includeInSearchField =>\n Op.or(\n Op.and(\n Op.exists(includeInSearchField, true),\n Op.equalTo(includeInSearchField, true)\n ),\n Op.exists(includeInSearchField, false)\n )\n )\n );\n\n // If webpageTemplates have been specified, include this expression\n // with the default includeInSearch field from classic Contensis.\n if (Array.isArray(webpageTemplates) && webpageTemplates.length > 0)\n expressions.push(\n Op.or(\n Op.and(\n Op.exists(Fields.sys.includeInSearch, true),\n Op.equalTo(Fields.sys.includeInSearch, true)\n ),\n Op.exists(Fields.sys.includeInSearch, false)\n )\n );\n return expressions;\n};\n\nexport const defaultExpressions = (versionStatus: VersionStatus) => {\n return [Op.equalTo(Fields.sys.versionStatus, versionStatus)];\n};\n\nexport const excludeIdsExpression = (excludeIds: string[]) => {\n if (Array.isArray(excludeIds) && excludeIds.length > 0) {\n const [expr] = fieldExpression(Fields.sys.id, excludeIds);\n return [Op.not(expr)];\n } else return [];\n};\n\nexport const orderByExpression = (orderBy: string[]) => {\n let expression = OrderBy;\n if (orderBy && orderBy.length > 0) {\n orderBy.map(\n ob =>\n (expression = ob.startsWith('-')\n ? expression.desc(ob.substring(1))\n : expression.asc(ob))\n );\n }\n return expression;\n};\n\nconst equalToOrIn = (\n field: string,\n value: string | string[],\n operator: FieldOperators = 'equalTo'\n) => {\n if (value.length === 0) return [];\n if (Array.isArray(value)) {\n if (value.length === 1)\n return [Op[operator](field, value[0], undefined, undefined)];\n return [Op.in(field, ...value)];\n }\n return [];\n};\n\nconst between = (field: string, value: string | string[]) => {\n const handle = (betweenValue: string) => {\n const valArr = betweenValue.split('-');\n if (valArr.length > 1) {\n const [minimum, maximum = null] = betweenValue.split('-');\n return Op.between(field, minimum, maximum);\n } else {\n // eslint-disable-next-line no-console\n console.log(\n `[search] You have supplied only one value to a \"between\" operator which must have two values. Your supplied value \"${\n valArr.length && valArr[0]\n }\" has been discarded.`\n );\n return false;\n }\n };\n if (value.length === 0) return [];\n if (Array.isArray(value))\n return [\n Op.or(...(value.map(handle).filter(bc => bc !== false) as IExpression[])),\n ];\n\n // const valArr = value.split('-');\n const op = handle(value);\n return op ? [op] : []; // valArr.length > 1 ? [Op.between(field, ...value.split('-'))] : [];\n};\n\n/**\n * Accept HTTP style objects and map them to\n * their equivalent JS client \"Op\" expressions\n * @param {array} where the where array as you'd provide it to the HTTP API\n * @returns {array} array of constructed Delivery API Operators\n */\nexport const customWhereExpressions = (where?: CustomWhereClause) => {\n if (!where || !Array.isArray(where)) return [];\n\n // Map each clause inside the where array\n return where.map(clause => {\n let expression: IExpression | undefined;\n // Map through each property in the clause so we can\n // capture the values required and reconstruct them as\n // a Delivery API expression\n let operator: 'field' | 'not' | 'and' | 'or' | FieldOperators;\n Object.keys(clause).map((key: string, idx) => {\n // The clause may contain only one key\n if (idx === 0) operator = key as 'not' | 'and' | 'or';\n\n const field: string = (clause as any).field;\n const value = (clause as any)[\n Object.keys(clause).find(k => !['field', 'weight'].includes(k)) || ''\n ];\n const weight: number = (clause as any).weight;\n\n if (idx === 0) {\n if (operator === 'and' || operator === 'or') {\n // These are array expressions so we can call ourself recursively\n // to map these inner values to expressions\n const recurseExpr = customWhereExpressions(\n (clause as any)[operator]\n ) as unknown as IExpression[];\n expression = Op[operator](...recurseExpr);\n }\n\n if (['not'].includes(operator)) {\n // A 'not' expression is an object with only one inner field and inner operator\n Object.keys(value).map((notKey, notIdx) => {\n const innerOperator = notKey as Exclude<\n FieldOperators,\n 'between' | 'distanceWithin' // these are not handled\n >;\n const innerValue = value[notKey];\n const innerField = value.field;\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n if (notIdx === 1) {\n expression = Op.not(Op[innerOperator](innerField, innerValue));\n }\n });\n }\n }\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n operator = Object.keys(clause).find(\n clauseKey => !['field', 'weight'].includes(clauseKey)\n ) as FieldOperators;\n\n if (\n idx === 1 &&\n // operator !== 'and' &&\n // operator !== 'or' &&\n operator !== 'between' &&\n operator !== 'distanceWithin'\n ) {\n expression =\n operator === 'freeText' || operator === 'contains'\n ? Op[operator](field, value)\n : operator === 'in'\n ? Op[operator](field, ...value)\n : Op[operator](field, value);\n\n if (typeof weight === 'number') expression = expression.weight(weight);\n }\n });\n return expression;\n }) as IExpression[];\n};\n\nexport const termExpressions = (\n searchTerm: string,\n weightedSearchFields: WeightedSearchField[]\n) => {\n if (searchTerm && weightedSearchFields && weightedSearchFields.length > 0) {\n // Extract any phrases in quotes to array\n const quotedPhrases = extractQuotedPhrases(searchTerm);\n\n // Modify the search term to remove any quoted phrases to leave any remaining terms\n let modifiedSearchTerm = searchTerm;\n quotedPhrases.forEach(\n qp =>\n (modifiedSearchTerm = modifiedSearchTerm\n .replace(qp, '')\n .replace('\"\"', '')\n .trim())\n );\n\n // Push to the operators array to include in the query\n const operators = [] as IExpression[];\n\n // Helper functions to generate Op expressions\n const containsOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'contains',\n f.weight\n );\n const freeTextOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'freeText',\n f.weight\n );\n\n // For each weighted search field\n weightedSearchFields.forEach(wsf => {\n // Push to field operators\n const fieldOperators: IExpression[] = [];\n\n // Add operator expressions for modified search term\n if (modifiedSearchTerm) {\n if (\n [Fields.keywords, Fields.sys.filename, Fields.sys.uri].includes(\n wsf.fieldId\n )\n ) {\n fieldOperators.push(...containsOp(wsf, modifiedSearchTerm));\n } else {\n if ([Fields.entryTitle].includes(wsf.fieldId)) {\n fieldOperators.push(\n Op.or(\n ...containsOp(wsf, modifiedSearchTerm),\n ...freeTextOp(wsf, modifiedSearchTerm)\n )\n );\n } else {\n fieldOperators.push(...freeTextOp(wsf, modifiedSearchTerm));\n }\n }\n }\n\n // Add operator expressions for any quoted phrases\n quotedPhrases.forEach(qp => fieldOperators.push(...containsOp(wsf, qp)));\n\n // If we are using multiple operators for a field we will\n // wrap each field inside an And operator so we will match\n // all terms/phrases rather than any terms/phrases\n if (fieldOperators.length > 1) {\n operators.push(Op.and(...fieldOperators));\n } else {\n operators.push(...fieldOperators);\n }\n });\n\n // Wrap operators in an Or operator\n return [\n Op.or()\n .addRange(operators)\n .add(Op.freeText(Fields.searchContent, searchTerm)),\n ];\n } else if (searchTerm) {\n // Searching without weightedSearchFields defined will fall back\n // to a default set of search fields with arbritary weights set.\n return [\n Op.or(\n Op.equalTo(Fields.entryTitle, searchTerm).weight(10),\n Op.freeText(Fields.entryTitle, searchTerm).weight(2),\n Op.freeText(Fields.entryDescription, searchTerm).weight(2),\n Op.contains(Fields.keywords, searchTerm).weight(2),\n Op.contains(Fields.sys.uri, searchTerm).weight(2),\n Op.contains(Fields.sys.allUris, searchTerm),\n Op.freeText(Fields.searchContent, searchTerm)\n ),\n ];\n } else {\n return [];\n }\n};\n","import { Query, OrderBy } from 'contensis-core-api';\n// import { Query, OrderBy } from 'contensis-delivery-api';\nimport {\n contentTypeIdExpression,\n customWhereExpressions,\n defaultExpressions,\n excludeIdsExpression,\n featuredResultsExpression,\n filterExpressions,\n includeInSearchExpressions,\n languagesExpression,\n orderByExpression,\n termExpressions,\n} from '../search/expressions';\nimport { Fields } from '../search/schema';\nimport { FilterQuery, SearchQuery } from '../models/Queries';\n\nexport const filterQuery: FilterQuery = (\n contentTypeIds,\n versionStatus,\n customWhere\n) => {\n const query = new Query(\n ...[\n ...contentTypeIdExpression(contentTypeIds),\n ...defaultExpressions(versionStatus),\n ...customWhereExpressions(customWhere),\n ]\n );\n query.orderBy = OrderBy.asc(Fields.entryTitle);\n query.pageSize = 100;\n\n return query;\n};\n\nexport const searchQuery: SearchQuery = (\n {\n assetTypes,\n contentTypeIds,\n customWhere,\n dynamicOrderBy,\n excludeIds,\n featuredResults,\n fields,\n filters,\n includeInSearchFields,\n languages,\n pageSize,\n pageIndex,\n orderBy,\n searchTerm,\n versionStatus,\n webpageTemplates,\n weightedSearchFields,\n },\n isFeatured = false\n) => {\n let expressions = [\n ...termExpressions(searchTerm, weightedSearchFields),\n ...defaultExpressions(versionStatus),\n ...includeInSearchExpressions(webpageTemplates, includeInSearchFields),\n ...languagesExpression(languages),\n ...customWhereExpressions(customWhere),\n ...excludeIdsExpression(excludeIds),\n ];\n if (isFeatured)\n expressions = [\n ...expressions,\n ...featuredResultsExpression(featuredResults),\n ];\n\n if (!isFeatured || (featuredResults && !featuredResults.contentTypeId))\n expressions = [\n ...expressions,\n ...filterExpressions(filters),\n ...contentTypeIdExpression(contentTypeIds, webpageTemplates, assetTypes),\n ];\n\n const query = new Query(...expressions);\n\n if (!searchTerm) query.orderBy = orderByExpression(orderBy);\n if (dynamicOrderBy && dynamicOrderBy.length)\n query.orderBy = orderByExpression(dynamicOrderBy);\n\n if (fields && fields.length > 0 && !isFeatured) {\n query.fields = fields;\n }\n\n query.pageIndex = isFeatured ? 0 : pageIndex;\n query.pageSize =\n isFeatured && typeof featuredResults.count === 'number'\n ? featuredResults.count\n : pageSize;\n return query;\n};\n","import { List, fromJS } from 'immutable';\nimport queryString from 'query-string';\n\nimport mapJson from 'jsonpath-mapper';\nimport { removeEmptyAttributes } from '../search/util';\nimport {\n getSelectedFilters,\n getSearchTerm,\n getCurrentFacet,\n getSearchContext,\n selectCurrentPath,\n} from '../redux/selectors';\nimport { AppState } from '../models/SearchState';\nimport { Context } from '../models/Enums';\n\ntype SearchStateParams = {\n state: AppState;\n facet?: string;\n orderBy?: string;\n pageIndex: number;\n term?: string;\n};\n\nconst searchUriTemplate = {\n path: ({ state, facet, pageIndex }: SearchStateParams) => {\n const currentFacet =\n getSearchContext(state) !== Context.listings &&\n (facet || getCurrentFacet(state));\n const currentPath = selectCurrentPath(state) || '/search';\n const newPath = currentFacet\n ? `${currentPath}/${currentFacet}`\n : currentPath;\n if (pageIndex) return `${newPath}/${pageIndex + 1}`;\n return newPath;\n },\n search: ({ state, facet, orderBy, term }: SearchStateParams) => {\n const searchContext = getSearchContext(state);\n // Lose stateFilters and currentSearch if a new\n // term is passed via an argument\n const stateFilters = term\n ? List()\n : getSelectedFilters(state, facet, searchContext).map(f => f?.join(','));\n const currentSearch =\n !term && state.getIn(['routing', 'location', 'search']);\n const currentQs = removeEmptyAttributes(queryString.parse(currentSearch));\n\n if (orderBy) currentQs.orderBy = orderBy;\n\n const searchTerm = getSearchTerm(state);\n // Use Immutable's merge to merge the stateFilters with any current Qs\n // to build the new Qs.\n const mergedSearch = removeEmptyAttributes(\n fromJS(currentQs).merge(stateFilters).set('term', searchTerm).toJS()\n );\n return queryString.stringify(mergedSearch);\n },\n hash: {\n $path: 'state',\n $formatting: (state: AppState) =>\n state.getIn(['routing', 'location', 'hash'], '').replace('#', ''),\n },\n};\n\nconst mapStateToSearchUri = (params: SearchStateParams) =>\n mapJson(params, searchUriTemplate) as {\n path: Location['pathname'];\n search: Location['search'];\n hash: Location['hash'];\n };\n\nexport default mapStateToSearchUri;\n","import { default as mapSearchResultToState } from 'jsonpath-mapper';\nimport { List } from 'immutable';\n// eslint-disable-next-line import/default\nimport MappingTemplate from 'jsonpath-mapper/dist/models/Template';\nimport { Context } from '../models/Enums';\nimport { QueryParams } from '../models/Queries';\nimport { Mappers } from '../models/Search';\nimport {\n LoadFiltersSearchResults,\n SearchResults,\n} from '../models/SearchActions';\nimport { AppState } from '../models/SearchState';\nimport {\n SET_SEARCH_ENTRIES,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n} from '../redux/types';\nimport { getItemsFromResult } from '../search/util';\n\nconst mapEntriesToSearchResults = (\n {\n mappers,\n mapper,\n context,\n facet,\n }: {\n mappers?: Mappers;\n mapper?: Mappers['results'];\n context: Context;\n facet: string;\n },\n items: any[],\n state: AppState\n) => {\n const mapperFunc = mapper || (mappers && mappers.results);\n return items && typeof mapperFunc === 'function'\n ? mapperFunc(items, facet, context, state)\n : [];\n};\n\nexport const facetTemplate = {\n type: () => SET_SEARCH_ENTRIES,\n context: 'action.context',\n facet: 'action.facet',\n mappers: 'action.mappers',\n nextFacet: {\n entries: {\n isLoading: () => false,\n isError: () => false,\n },\n featuredEntries: {\n isLoading: () => false,\n isError: () => false,\n },\n featuredResults: ({ action, featuredResult, state }: SearchResults) =>\n mapEntriesToSearchResults(\n action,\n getItemsFromResult(featuredResult),\n state\n ),\n queryDuration: 'result.duration',\n pagingInfo: {\n isLoading: () => false,\n pageCount: {\n $path: 'result.payload.pageCount',\n $default: 0,\n },\n totalCount: {\n $path: 'result.payload.totalCount',\n $default: 0,\n },\n pageSize: {\n $path: 'result.payload.pageSize',\n $default: 0,\n },\n pageIndex: 'pageIndex',\n pagesLoaded: {\n $path: 'action.queryParams',\n $formatting: ({ pageIndex, pagesLoaded }: QueryParams) => {\n const loaded = List(pagesLoaded || []);\n const pages = isNaN(loaded.find(l => l === pageIndex) as any)\n ? loaded.push(pageIndex)\n : loaded;\n return pages.toList().sort((a, b) => a - b);\n },\n },\n prevPageIndex: 'action.queryParams.prevPageIndex',\n },\n preloaded: { $path: 'preload', $default: false },\n results: ({\n action,\n pageIndex,\n result,\n prevResults,\n state,\n }: SearchResults) => {\n const { loadMorePaging, pagesLoaded, prevPageIndex } = action.queryParams;\n\n const results = mapEntriesToSearchResults(\n action,\n getItemsFromResult(result),\n state\n );\n\n if (!loadMorePaging) return results;\n\n // add a _pageIndex property to the returned results to help us later\n const nextResults = results.map((r, idx) => ({\n _pageIndex: pageIndex,\n _pagePosition: idx,\n ...r,\n }));\n\n const loadedPages = List(pagesLoaded);\n\n // if pageIndex is found in loadedPages, we have already loaded this page\n if (!isNaN(loadedPages.find(l => l === pageIndex) as any))\n return prevResults;\n\n // Determine where we put the results depending on if we\n // are paging forwards, backwards, or doing a new search\n const firstResultSet = (\n pageIndex > prevPageIndex ? prevResults || [] : nextResults\n ) as any[];\n const secondResultSet = (\n pageIndex > prevPageIndex ? nextResults : prevResults || []\n ) as any[];\n const onlyResultSet = loadedPages.size === 0 ? nextResults : false;\n return onlyResultSet || [...firstResultSet, ...secondResultSet];\n },\n },\n preload: 'action.preload',\n ogState: 'action.ogState',\n debug: 'action.debug',\n} as any;\n\nexport const filterTemplate = {\n type: ({ type }) => type || LOAD_FILTERS_COMPLETE,\n context: 'context',\n facetKey: 'facetKey',\n filterKey: 'filterKey',\n nextFilter: {\n isLoading: () => false,\n isError: ({ type }) => type === LOAD_FILTERS_ERROR,\n items: ({ payload, selectedKeys, mapper }) => {\n if (payload && (payload.items || payload.children)) {\n const items = (payload.items || payload.children).map((item: any) => {\n item.isSelected = selectedKeys?.includes(item?.sys?.id || item.key);\n return item;\n });\n return mapper(items);\n }\n return [];\n },\n },\n error: { $path: 'error', $disable: e => !e },\n} as MappingTemplate<LoadFiltersSearchResults>;\n\nexport default mapSearchResultToState;\n","import { FilterExpressionTypes } from '../search/schema';\nimport mapJson from 'jsonpath-mapper';\n\nconst filterExpressionMapper = {\n // Expression type: so we can identify how to build the query\n expressionType: ({ filter }) =>\n filter.contentTypeId\n ? FilterExpressionTypes.contentType\n : FilterExpressionTypes.field,\n // Key: so we can target the query to a specific field\n key: 'filter.fieldId',\n // Value: so we can filter a specific field by an array of values\n // e.g. taxonomy key or contentTypeId array\n value: 'selectedValue',\n operator: 'filter.fieldOperator',\n};\n\nconst mapFilterToFilterExpression = filter =>\n mapJson(filter, filterExpressionMapper);\n\nexport default mapFilterToFilterExpression;\n","import mapFilterToFilterExpression from './filters-to-filterexpression.mapper';\n\nexport const mapFiltersToFilterExpression = (filters, selectedFilters) => {\n if (!selectedFilters || Object.keys(selectedFilters).length === 0) return [];\n const filterExpressions = [];\n\n // Iterate through the keys in selectedFilters and locate\n // the items that are selected and queryable\n Object.entries(selectedFilters).map(([fkey, selectedValue]) => {\n const filter = filters[fkey];\n if (selectedValue && filter) {\n const selectedItems =\n (filter.items && filter.items.filter(itm => itm.isSelected)) || [];\n\n // Where we have a value for a selectedFilter\n // and a filter is found for the current key\n // map the filter to a filterExpression object\n const expr = mapFilterToFilterExpression({\n filter,\n selectedItems,\n selectedValue,\n });\n filterExpressions.push(expr);\n }\n });\n return filterExpressions;\n};\n","import mapJson from 'jsonpath-mapper';\n\nimport { fromJS, List, Map } from 'immutable';\nimport {\n getFacet,\n getSelectedFilters,\n getQueryParameter,\n getSearchTerm,\n getPageIndex,\n getFilters,\n getCustomEnv,\n getPrevPageIndex,\n getPagesLoaded,\n selectVersionStatus,\n} from '../redux/selectors';\nimport { mapFiltersToFilterExpression } from './filters-to-filterexpression';\nimport { UPDATE_PAGE_INDEX } from '../redux/types';\nimport { QueryParams } from '../models/Queries';\nimport { AppState } from '../models/SearchState';\nimport { Context } from '../models/Enums';\nimport {\n EnsureSearchAction,\n SetSearchEntriesAction,\n} from '../models/SearchActions';\nimport { WeightedSearchField } from '../models/Search';\n\ntype QueryParamsMapperParams = {\n context: Context;\n facet: string;\n action: EnsureSearchAction | SetSearchEntriesAction;\n state: AppState;\n};\n\nconst queryParamsTemplate = {\n assetTypes: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'assetTypes', List()),\n contentTypeIds: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'contentTypeIds', List()),\n customWhere: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'customWhere', List()),\n dynamicOrderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'dynamicOrderBy', List()),\n env: ({ state, facet, context }: QueryParamsMapperParams) =>\n getCustomEnv(state, facet, context),\n excludeIds: ({\n action: { excludeIds },\n }: {\n action: { excludeIds: string | string[] };\n }) => {\n // Exclude current route entry id from minilist searches or any supplied ids\n if (excludeIds)\n return Array.isArray(excludeIds)\n ? excludeIds\n : excludeIds.split(',').map(id => id.trim());\n return null;\n },\n featuredResults: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'featuredResults', null),\n fields: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'fields', List()),\n filters: ({ state, facet, context }: QueryParamsMapperParams) => {\n const stateFilters = getFilters(state, facet, context).toJS();\n const selectedFilters = getSelectedFilters(state, facet, context).toJS();\n // Use another mapping function to map the filter parameters for the query\n const filterParams = mapFiltersToFilterExpression(\n stateFilters,\n selectedFilters\n );\n return filterParams;\n },\n includeInSearchFields: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'includeInSearch', List()),\n internalPageIndex: ({ action, state }: QueryParamsMapperParams) =>\n getPageIndex(state, '', action.context),\n internalPaging: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'internalPaging', false),\n languages: ({ action }: QueryParamsMapperParams) =>\n action.defaultLang ? [action.defaultLang] : [],\n linkDepth: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'linkDepth', 0),\n loadMorePaging: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'loadMorePaging', false),\n orderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'orderBy', List()),\n pageIndex: (root: QueryParamsMapperParams) => {\n const { action, state } = root;\n if (getQueryParameter(root, 'internalPaging', false)) return 0;\n if (action.type === UPDATE_PAGE_INDEX) return action.params.pageIndex;\n return !action.preload ? getPageIndex(state, '', action.context) : 0;\n },\n pageSize: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'pageSize'),\n pagesLoaded: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPagesLoaded(state, facet, context),\n prevPageIndex: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPrevPageIndex(state, facet, context),\n projectId: ({ state, facet, context }: QueryParamsMapperParams) =>\n getFacet(state, facet, context).get('projectId'),\n searchTerm: (root: QueryParamsMapperParams) =>\n root.context !== Context.minilist ||\n getQueryParameter(root, 'useSearchTerm', false)\n ? getSearchTerm(root.state)\n : '',\n selectedFilters: ({ state, facet, context }: QueryParamsMapperParams) =>\n getSelectedFilters(state, facet, context).map(f => f?.join(',')),\n versionStatus: ({ state }: QueryParamsMapperParams) =>\n selectVersionStatus(state),\n weightedSearchFields: (root: QueryParamsMapperParams) => {\n const wsf = getQueryParameter(root, 'weightedSearchFields', List()) as List<\n Map<string, keyof WeightedSearchField>\n >;\n const deduped = wsf\n .groupBy((v = Map()) => v.get('fieldId'))\n .map((v = Map()) => v.first())\n .toList();\n return deduped;\n // return wsf;\n },\n webpageTemplates: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'webpageTemplates', List()),\n};\n\nconst mapStateToQueryParams = (sourceJson: QueryParamsMapperParams) =>\n fromJS(mapJson(sourceJson, queryParamsTemplate)).toJS() as QueryParams;\n\nexport default mapStateToQueryParams;\n","import { areArraysEqualSets } from '../search/util';\nimport {\n getSelectedFilters,\n getIsLoaded,\n getQueryParams,\n getPageIndex,\n getIsInternalPaging,\n getSearchTerm,\n} from './selectors';\nimport { Context } from '../models/Enums';\nimport mapStateToQueryParams from '../transformations/state-to-queryparams.mapper';\nimport { QueryParams, SearchQueryOptions } from '../models/Queries';\nimport { AppState } from '../models/SearchState';\nimport {\n EnsureSearchAction,\n SetSearchEntriesAction,\n} from '../models/SearchActions';\n\n/**\n * 1, Generates all the parameters required to run the search query.\n * 2, Tells us if we should run the search.\n * @param {object} action\n * @param {ImmutableMap} state\n * @returns [queryParams, runSearch]\n */\nexport const generateQueryParams = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState\n): [SearchQueryOptions, boolean] => {\n const { context, facet } = action;\n // Map parameters using state and some additional\n // inputs from the action\n const queryParams = mapStateToQueryParams({\n context,\n facet,\n action,\n state,\n });\n\n return [queryParams, runSearch(action, state, queryParams)];\n};\n\n/**\n * Checks if we have already loaded everything we're asking for and tells us to run the search or not\n * @param action\n * @param state\n */\nexport const runSearch = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState,\n queryParams: SearchQueryOptions\n) => {\n const {\n context,\n defaultLang,\n facet,\n ogState = state,\n preload,\n ssr,\n } = action as EnsureSearchAction & SetSearchEntriesAction;\n\n let willRun = false;\n\n const facetIsLoaded = defaultLang\n ? false\n : getIsLoaded(state, context, facet);\n const stateParams = getQueryParams(\n ogState,\n facet,\n context\n ).toJS() as QueryParams;\n stateParams.pageIndex = getPageIndex(ogState, facet, context);\n stateParams.searchTerm = getSearchTerm(ogState);\n\n if (\n (context === Context.facets && ssr) ||\n // context === Context.minilist ||\n preload ||\n !facetIsLoaded ||\n filterParamsChanged(action) ||\n defaultLang\n ) {\n willRun = true;\n } else {\n // Don't execute the search if the inbound query params\n // are the same as what we already have in state\n Object.entries(stateParams).forEach(([param, value]) => {\n const queryParam = queryParams[param as keyof SearchQueryOptions];\n if (JSON.stringify(value) !== JSON.stringify(queryParam)) {\n willRun = true;\n }\n });\n }\n\n const internalPaging = getIsInternalPaging(ogState, facet, context);\n if (internalPaging && facetIsLoaded) {\n willRun = false;\n }\n\n return willRun;\n};\n\n/**\n * This will tell us if filter parameters have been\n * changed by some external event such as a route change\n * @param action\n * @returns true or false\n */\nexport const filterParamsChanged = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state?: AppState\n) => {\n const {\n context,\n facet,\n params,\n ogState = state,\n } = action as EnsureSearchAction & SetSearchEntriesAction;\n const selectedFilters = getSelectedFilters(\n ogState as AppState,\n facet,\n context\n ).toJS() as { [key: string]: string[] };\n\n const paramsChanged = Object.entries(selectedFilters).map(\n ([filterKey, selectedValues]) => {\n const inboundValues =\n (params && params[filterKey] && params[filterKey].split(',')) || [];\n\n if (!areArraysEqualSets(selectedValues, inboundValues)) return true;\n }\n );\n\n return paramsChanged.filter(f => f === true).length > 0;\n};\n\n/* eslint-disable no-console */\nexport const debugExecuteSearch = (\n action: EnsureSearchAction | SetSearchEntriesAction,\n state: AppState\n) => {\n const [queryParams, runSearch] = generateQueryParams(action, state);\n\n console.log(\n 'runSearch',\n runSearch,\n 'action',\n action,\n 'filterParamsChanged',\n filterParamsChanged(action, state),\n 'getIsLoaded(state, context, facet)',\n getIsLoaded(state, action.context, action.facet)\n );\n const stateParams = getQueryParams(\n action.ogState || state,\n action.facet,\n action.context\n ).toJS() as QueryParams;\n stateParams.pageIndex = getPageIndex(\n action.ogState || state,\n action.facet,\n action.context\n );\n stateParams.searchTerm = getSearchTerm(action.ogState || state);\n console.log(stateParams, queryParams);\n\n console.log(\n 'getSelectedFilters',\n getSelectedFilters(\n action.ogState || state,\n action.facet,\n action.context\n ).toJS(),\n 'params',\n action.params\n );\n};\n","import { default as mapEntry } from 'jsonpath-mapper';\nimport { Fields } from '../search/schema';\n\n// *** FILTER ITEM MAPPING ***\n\n// Base mapping, fields that are the same across all mappings\n// to save repeating these elements in every mapper, spread this\n// into your discrete mappings\nconst base = {\n contentTypeId: Fields.sys.contentTypeId,\n title: 'entryTitle',\n key: 'sys.id',\n path: 'sys.slug',\n isSelected: 'isSelected',\n};\n\nconst mapEntriesToFilterItems = entries => {\n if (!entries) return [];\n return entries.map(entry => {\n const template = base;\n if (template) {\n return mapEntry(entry, template);\n }\n return entry;\n });\n};\n\nexport default mapEntriesToFilterItems;\n","import * as log from 'loglevel';\nimport { takeEvery, put, select, call, all } from 'redux-saga/effects';\nimport { List, Map } from 'immutable';\nimport { PagedList, Query, VersionStatus } from 'contensis-core-api/lib/models';\nimport { Entry, TaxonomyNode } from 'contensis-delivery-api/lib/models';\n\nimport { cachedSearch } from '../search/ContensisDeliveryApi';\nimport { callCustomApi, timedSearch, getItemsFromResult } from '../search/util';\n\nimport {\n CLEAR_FILTERS,\n DO_SEARCH,\n EXECUTE_SEARCH,\n EXECUTE_SEARCH_PRELOAD,\n LOAD_FILTERS,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n SET_ROUTE_FILTERS,\n SET_SEARCH_ENTRIES,\n UPDATE_SEARCH_TERM,\n UPDATE_PAGE_INDEX,\n UPDATE_CURRENT_FACET,\n UPDATE_SELECTED_FILTERS,\n UPDATE_CURRENT_TAB,\n UPDATE_SORT_ORDER,\n SET_SEARCH_FILTERS,\n APPLY_CONFIG,\n} from './types';\nimport {\n navigate,\n updateCurrentFacet as updateCurrentFacetAction,\n withMappers,\n} from './actions';\nimport {\n getCurrentFacet,\n getPageIndex,\n getFacets,\n getSearchTabs,\n getCustomApi,\n getSelectedFilters,\n getFacet,\n getIsSsr,\n getFiltersToLoad,\n getResults,\n selectVersionStatus,\n} from './selectors';\nimport { searchQuery, filterQuery } from './queries';\nimport mapStateToSearchUri from '../transformations/state-to-searchuri';\nimport mapSearchResultToState, {\n facetTemplate,\n filterTemplate,\n} from '../transformations/searchresult-to-state.mapper';\nimport { filtering, searchFacet } from './schema';\nimport { generateQueryParams, debugExecuteSearch } from './util';\nimport mapEntriesToFilterItems from '../transformations/entry-to-filteritem.mapper';\nimport { AppState, Filter } from '../models/SearchState';\nimport {\n ApplySearchFilterAction,\n ClearFiltersAction,\n EnsureSearchAction,\n ExecuteSearchAction,\n InitListingAction,\n LoadFiltersCompleteAction,\n LoadFiltersSearchResults,\n SearchResults,\n SetSearchEntriesAction,\n SetSearchEntriesParams,\n TriggerSearchAction,\n UpdateCurrentFacetAction,\n UpdateCurrentTabAction,\n UpdatePageIndexAction,\n UpdateSearchTermAction,\n UpdateSortOrderAction,\n WithMappers,\n} from '../models/SearchActions';\nimport { Mappers } from '../models/Search';\nimport { Context } from '../models/Enums';\nimport { TimedSearchResponse } from '../models/SearchUtil';\n\nexport const searchSagas = [\n takeEvery(CLEAR_FILTERS, clearFilters),\n takeEvery(DO_SEARCH, doSearch),\n takeEvery(SET_ROUTE_FILTERS, loadFilters),\n takeEvery(SET_SEARCH_ENTRIES, preloadOtherFacets),\n takeEvery(UPDATE_CURRENT_FACET, updateCurrentFacet),\n takeEvery(UPDATE_CURRENT_TAB, updateCurrentTab),\n takeEvery(UPDATE_PAGE_INDEX, updatePageIndex),\n takeEvery(UPDATE_SEARCH_TERM, updateSearchTerm),\n takeEvery(UPDATE_SORT_ORDER, updateSortOrder),\n takeEvery(UPDATE_SELECTED_FILTERS, applySearchFilter),\n];\n\nexport function* setRouteFilters(action: InitListingAction) {\n const { mappers, params, listingType, defaultLang, debug } = action;\n const context = listingType ? Context.listings : Context.facets;\n const state: AppState = yield select();\n const ssr = getIsSsr(state);\n\n // Get current facet from params or state\n let currentFacet = (params && params.facet) || listingType;\n\n // Pick the default facet from initialState\n if (!currentFacet) {\n const tabs = getSearchTabs(state);\n currentFacet =\n tabs.getIn([0, 'defaultFacet'], '') || getFacets(state).keySeq().first();\n }\n\n const nextAction = {\n type: SET_ROUTE_FILTERS,\n context,\n facet: currentFacet,\n mappers,\n params,\n defaultLang,\n ssr,\n debug,\n } as InitListingAction;\n yield put(nextAction);\n\n // Using call instead of triggering from the put\n // to allow this exported saga to continue during SSR\n yield call(ensureSearch, { ...nextAction, ogState: state });\n}\n\nexport function* doSearch(action: TriggerSearchAction) {\n const state: AppState = yield select();\n if (action.config) {\n // If the action contains a config object, we can add this to the\n // state at runtime\n yield put({ ...action, type: APPLY_CONFIG });\n }\n\n const nextAction = {\n ...action,\n type: SET_SEARCH_FILTERS,\n ssr: getIsSsr(state),\n } as InitListingAction;\n yield put(nextAction);\n\n yield call(ensureSearch, { ...nextAction, ogState: state });\n}\n\nfunction* loadFilters(action: InitListingAction) {\n const { facet: facetKey, context, mappers = {} as Mappers } = action;\n const filtersToLoad = (yield select(\n getFiltersToLoad,\n facetKey,\n context\n )) as List<string>;\n if (filtersToLoad.size > 0) {\n yield put({\n type: LOAD_FILTERS,\n filtersToLoad,\n facetKey,\n context,\n });\n const selectedKeys = (yield select(\n getSelectedFilters,\n facetKey,\n context\n )) as Map<string, List<string>>;\n const facet = (yield select(\n getFacet,\n facetKey,\n context\n )) as typeof searchFacet;\n const filters = facet.get('filters', Map()) as Map<\n string,\n typeof filtering\n >;\n const projectId = facet.get('projectId', '') as string;\n\n const filtersToLoadSagas =\n filters &&\n filtersToLoad\n .map((filterKey = '') => {\n return call(loadFilter, {\n facetKey,\n filterKey,\n filter: filters.get(filterKey) as typeof filtering,\n projectId,\n selectedKeys: selectedKeys.get(filterKey) as List<string>,\n context,\n mapper:\n ('filterItems' in mappers && mappers.filterItems) ||\n mapEntriesToFilterItems,\n } as LoadFilterAction);\n })\n .toJS();\n if (filtersToLoadSagas) yield all(filtersToLoadSagas);\n }\n}\n\ntype LoadFilterAction = {\n facetKey: string;\n filterKey: string;\n filter: typeof filtering;\n projectId: string;\n selectedKeys: List<string>;\n context: Context;\n mapper: Mappers['filterItems'];\n};\n\nfunction* loadFilter(action: LoadFilterAction) {\n const {\n facetKey,\n filterKey,\n filter,\n projectId,\n selectedKeys,\n context,\n mapper,\n } = action;\n const { contentTypeId, customWhere, path } =\n 'toJS' in filter\n ? (filter.toJS() as Filter)\n : (filter as unknown as Filter);\n const createStateFrom: LoadFiltersSearchResults = {\n type: LOAD_FILTERS_COMPLETE,\n context,\n error: undefined,\n facetKey,\n filterKey,\n payload: {} as TaxonomyNode | PagedList<Entry>,\n selectedKeys,\n mapper,\n };\n\n try {\n if (contentTypeId) {\n const versionStatus = (yield select(\n selectVersionStatus\n )) as VersionStatus;\n const query = filterQuery(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId],\n versionStatus,\n customWhere\n );\n const payload = (yield cachedSearch.search(\n query,\n 0,\n projectId\n )) as PagedList<Entry>;\n\n if (!payload) throw new Error('No payload returned by search');\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n if (path) {\n const payload = (yield cachedSearch.getTaxonomyNodeByPath(\n path,\n projectId\n )) as TaxonomyNode;\n\n if (!payload)\n throw new Error(`No payload returned for taxonomy path: '${path}'`);\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n } catch (error) {\n createStateFrom.type = LOAD_FILTERS_ERROR;\n createStateFrom.error = error;\n }\n\n const nextAction = mapSearchResultToState<\n LoadFiltersSearchResults,\n LoadFiltersCompleteAction\n >(createStateFrom, filterTemplate);\n yield put(nextAction);\n}\n\nfunction* ensureSearch(action: EnsureSearchAction) {\n const { context, facet, debug } = action;\n try {\n const state = (yield select()) as AppState;\n const nextAction = { ...action, ogState: action.ogState || state };\n\n const [queryParams, runSearch] = generateQueryParams(nextAction, state);\n\n if (debug && (debug === true || debug.executeSearch))\n debugExecuteSearch(nextAction, state);\n\n if (runSearch) {\n yield put({ type: EXECUTE_SEARCH, facet, context });\n yield call(executeSearch, {\n ...nextAction,\n context,\n facet,\n queryParams,\n debug,\n } as ExecuteSearchAction);\n }\n } catch (error: any) {\n log.error(...['Error running search saga:', error, error.stack]);\n }\n}\n\nfunction* executeSearch(action: ExecuteSearchAction) {\n const { context, facet, queryParams, mappers } = action;\n try {\n const state = (yield select()) as AppState;\n let result = {} as TimedSearchResponse;\n let featuredResult: TimedSearchResponse | undefined;\n let featuredQuery: Query;\n const customApi = getCustomApi(state, facet, context);\n\n if (customApi) {\n const apiParams =\n (typeof mappers === 'object' &&\n typeof mappers.customApi === 'function' &&\n mappers.customApi(queryParams)) ||\n ({} as { [key: string]: string });\n\n result.payload = (yield callCustomApi<any>(\n customApi,\n apiParams\n )) as any[];\n result.duration = 1;\n } else {\n if (queryParams.featuredResults) {\n featuredQuery = searchQuery(queryParams, true);\n featuredResult = (yield timedSearch(\n featuredQuery,\n queryParams.linkDepth,\n queryParams.projectId,\n queryParams.env\n )) as TimedSearchResponse;\n // eslint-disable-next-line require-atomic-updates\n queryParams.excludeIds = getItemsFromResult(featuredResult)\n .map(fi => fi?.sys?.id)\n .filter(fi => typeof fi === 'string') as string[];\n }\n const query = searchQuery(queryParams);\n\n result = yield timedSearch(\n query,\n queryParams.linkDepth,\n queryParams.projectId,\n queryParams.env\n );\n }\n\n const createStateFrom: SearchResults = {\n action,\n featuredResult,\n pageIndex:\n (queryParams.internalPaging && queryParams.internalPageIndex) ||\n queryParams.pageIndex,\n prevResults: getResults(state, facet, action.context),\n result,\n state,\n };\n\n const nextAction = mapSearchResultToState<\n SearchResults,\n SetSearchEntriesParams\n >(createStateFrom, facetTemplate);\n yield put(nextAction);\n } catch (error: any) {\n log.error(...['Error running search saga:', error, error.stack]);\n }\n}\n\nfunction* preloadOtherFacets(action: SetSearchEntriesAction) {\n const { preload, context, facet, debug } = action;\n const state = (yield select()) as AppState;\n const currentFacet = getCurrentFacet(state);\n\n if (!preload && facet === currentFacet && context !== Context.listings) {\n const allFacets = getFacets(state).toJS();\n const otherFacets = Object.keys(allFacets).filter(f => f !== currentFacet);\n\n yield all(\n otherFacets.map((preloadFacet = '') => {\n const preloadAction = {\n ...action,\n facet: preloadFacet,\n preload: true,\n };\n const [queryParams, runSearch] = generateQueryParams(\n preloadAction,\n state\n );\n\n if (debug && (debug === true || debug.preloadOtherFacets))\n debugExecuteSearch(preloadAction, state);\n\n return (\n runSearch &&\n call(executeSearch, {\n ...action,\n type: EXECUTE_SEARCH_PRELOAD,\n preload: true,\n facet: preloadFacet,\n queryParams,\n } as ExecuteSearchAction & SetSearchEntriesParams)\n );\n })\n );\n }\n}\n\nfunction* updateCurrentTab(action: WithMappers<UpdateCurrentTabAction>) {\n const { id, mappers } = action;\n const state = (yield select()) as AppState;\n const facets = getFacets(state);\n const tabs = getSearchTabs(state);\n let nextFacet = tabs.getIn([id, 'currentFacet']);\n if (!nextFacet) {\n facets.map((facet = Map(), facetName) => {\n if (\n facet.get('tabId') === id &&\n tabs.getIn([id, 'defaultFacet']) === facetName\n )\n nextFacet = facetName;\n });\n }\n // If the next Tab does not have a defaultFacet,\n // take the first facet for that tab\n if (!nextFacet)\n nextFacet = facets\n .filter((f = Map()) => f.get('tabId') === id)\n .keySeq()\n .first();\n\n yield put(withMappers(updateCurrentFacetAction(nextFacet), mappers));\n}\n\nfunction* clearFilters(action: WithMappers<ClearFiltersAction>) {\n const { mappers } = action;\n const uri = (yield buildUri({}, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateCurrentFacet(action: WithMappers<UpdateCurrentFacetAction>) {\n const { facet, mappers } = action;\n const pageIndex = (yield select(getPageIndex, facet)) as number;\n const uri = (yield buildUri({ facet, pageIndex }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateSearchTerm(action: WithMappers<UpdateSearchTermAction>) {\n const { term, mappers } = action;\n const uri = (yield buildUri({ term }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updateSortOrder(action: WithMappers<UpdateSortOrderAction>) {\n const { orderBy, facet, mappers } = action;\n const uri = (yield buildUri({ orderBy, facet }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* updatePageIndex(action: WithMappers<UpdatePageIndexAction>) {\n const { pageIndex, mappers } = action;\n const uri = (yield buildUri({ pageIndex }, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* applySearchFilter(action: WithMappers<ApplySearchFilterAction>) {\n const { mappers } = action;\n const uri = (yield buildUri({}, mappers)) as string;\n yield put(navigate(uri));\n}\n\nfunction* buildUri(\n {\n facet,\n orderBy,\n pageIndex = 0,\n term,\n }: { facet?: string; orderBy?: string; pageIndex?: number; term?: string },\n mappers: Mappers\n) {\n const state = (yield select()) as AppState;\n const mapUri = (mappers && mappers.navigate) || mapStateToSearchUri;\n const uri = mapUri({ state, facet, orderBy, pageIndex, term });\n // return uri;\n return `${uri.path}${(uri.search && `?${uri.search}`) || ''}${\n (uri.hash && `#${uri.hash}`) || ''\n }`;\n}\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Context } from '../models/Enums';\nimport { Facet, Mappers } from '../models/Search';\nimport { DebugFlags } from '../models/SearchActions';\nimport { AppState } from '../models/SearchState';\nimport { triggerSearch } from '../redux/actions';\nimport {\n getResults,\n getIsLoading,\n getFacet,\n getPaging,\n getSearchTerm,\n getFilters,\n} from '../redux/selectors';\n\ntype UseMiniListProps = {\n id: string;\n config?: Facet;\n debug?: DebugFlags;\n defaultLang?: string;\n excludeIds?: string[];\n mapper?: Mappers['results'];\n mappers?: Mappers;\n params?: { [key: string]: string };\n};\n\nconst useMinilist = (\n {\n id,\n config,\n excludeIds,\n mapper,\n mappers,\n params,\n defaultLang,\n debug,\n }: UseMiniListProps = { id: '' }\n) => {\n const dispatch = useDispatch();\n\n const { facet, filters, isLoading, pagingInfo, results, searchTerm } =\n useSelector((state: AppState) => ({\n facet: getFacet(state, id, Context.minilist).toJS(),\n filters: getFilters(state, id, Context.minilist).toJS(),\n isLoading: getIsLoading(state, Context.minilist, id),\n pagingInfo: getPaging(state, id, Context.minilist).toJS(),\n results: getResults(state, id, Context.minilist).toJS(),\n searchTerm: getSearchTerm(state),\n }));\n\n useEffect(() => {\n if (id && (mapper || (mappers && mappers.results))) {\n dispatch(\n triggerSearch({\n config,\n context: Context.minilist,\n defaultLang,\n facet: id,\n mapper,\n mappers,\n params,\n excludeIds,\n debug,\n })\n );\n }\n }, [dispatch, excludeIds, id, defaultLang, params]);\n\n return {\n filters,\n isLoading,\n pagingInfo,\n results,\n searchTerm,\n title: facet.title,\n };\n};\n\nexport default useMinilist;\n","import { List, Map, OrderedMap } from 'immutable';\nimport { CustomWhereClause } from '../models/Search';\nimport { Filter, FilterItem, SearchState } from '../models/SearchState';\n\nexport const entries = Map({\n isLoading: false,\n isError: false,\n items: List(),\n});\n\nexport const pagingInfo = Map({\n isLoading: false,\n pageCount: 0,\n pageIndex: 0,\n pageSize: 0,\n pagesLoaded: List(),\n prevPageIndex: 0,\n totalCount: 0,\n});\n\nexport const searchFacet = OrderedMap({\n title: null,\n featuredEntries: entries,\n featuredResults: List(),\n entries,\n results: List(),\n queryParams: Map(),\n filters: Map(),\n queryDuration: 0,\n pagingInfo,\n projectId: '',\n});\n\nexport const searchTab = Map({\n currentFacet: undefined,\n facets: OrderedMap(),\n id: 0,\n label: undefined,\n totalCount: '',\n});\n\nexport const filtering = Map({\n isLoading: false,\n isError: false,\n isGrouped: false,\n title: undefined,\n contentTypeId: undefined,\n customWhere: List(),\n fieldId: undefined,\n items: List<typeof filterItem>(),\n} as Omit<Filter, 'customWhere' | 'items'> & { customWhere?: List<CustomWhereClause>; items?: List<typeof filterItem> });\n\nexport const filterItem = Map({\n key: '',\n type: undefined,\n title: undefined,\n path: undefined,\n isSelected: false,\n} as FilterItem);\n\nconst config = Map({\n isLoaded: false,\n isError: false,\n});\n\nconst searchState: SearchState = {\n currentFacet: '',\n term: '',\n facets: OrderedMap(),\n tabs: List(),\n config,\n};\n\nexport const initialState = OrderedMap(searchState);\n","// eslint-disable no-console\nimport { List, Map, OrderedMap, fromJS } from 'immutable';\n\nimport {\n entries,\n filterItem,\n searchFacet,\n initialState,\n filtering,\n} from './schema';\nimport {\n APPLY_CONFIG,\n CLEAR_FILTERS,\n EXECUTE_SEARCH,\n EXECUTE_SEARCH_ERROR,\n LOAD_FILTERS,\n LOAD_FILTERS_COMPLETE,\n LOAD_FILTERS_ERROR,\n SET_ROUTE_FILTERS,\n SET_SEARCH_FILTERS,\n SET_SEARCH_ENTRIES,\n UPDATE_SEARCH_TERM,\n UPDATE_SELECTED_FILTERS,\n UPDATE_SORT_ORDER,\n UPDATE_PAGE_INDEX,\n} from './types';\nimport { toArray } from '../search/util';\nimport { ConfigTypes, Facet, Listing, SearchConfig } from '../models/Search';\nimport { Context } from '../models/Enums';\n\nconst addConfigToState = (state: typeof initialState, action: any) => {\n const { context, facet, config } = action;\n // Adding or changing the config of a single facet, listing or minilist\n if (context && facet && config) {\n return state.setIn([context, facet], fromJS(config));\n } else if (config) {\n // Changing the entire search config\n const newState = fromJS(config);\n return newState;\n }\n return state;\n};\n\nconst generateSearchFacets = (context: Context, config: SearchConfig) => {\n let facets = OrderedMap<string, OrderedMap<string, typeof searchFacet>>();\n if (config) {\n const thisConfig: ConfigTypes = config[context] || {};\n if (Object.keys(thisConfig).length > 0) {\n Object.entries(thisConfig).map(\n ([facetName, facet]: [string, Facet | Listing]) => {\n const newFacet = searchFacet.merge(fromJS(facet));\n if (!('isDisabled' in facet) || facet.isDisabled !== true)\n facets = facets.set(\n facetName,\n newFacet as OrderedMap<string, typeof searchFacet>\n );\n }\n );\n }\n }\n return facets;\n};\n\nconst generateFiltersState = (\n {\n facet,\n params,\n context,\n isCurrentFacet,\n }: {\n facet: string;\n params: { [k: string]: string };\n context: Context;\n isCurrentFacet: boolean;\n },\n state: typeof initialState\n) => {\n // Remove filters we know about from params\n const filterParams = fromJS({\n ...params,\n facet: undefined,\n orderBy: undefined,\n pageIndex: undefined,\n term: undefined,\n }) as Map<string, string>;\n\n // Get any existing filters and normalise the items[]\n // so we can start off with isSelected is false\n let filters = state\n .getIn([context, facet, 'filters'], Map({}))\n .map((filter: typeof filtering) =>\n isCurrentFacet || filter.get('isGrouped')\n ? filter.set(\n 'items',\n (filter.get('items') as List<typeof filterItem>).map(item =>\n item?.set('isSelected', false)\n ) as List<typeof filterItem>\n )\n : filter\n );\n\n const addFilterItem = (\n filters: Map<string, typeof filtering>,\n paramKey: string,\n paramValue: string\n ) =>\n // Iterate through all filters within the facet,\n // if the paramKey matches the filter key\n // get the existing items list, and see if that filter\n // already exists, if so set isSelected to true,\n // if not create a new filterItem, setting the key only\n // so we can match this key later on when we load the filters\n filters.map((filter = Map(), key) => {\n if (paramKey !== key || (!isCurrentFacet && !filter.get('isGrouped'))) {\n return filter;\n } else {\n const items = (filter.get('items') || List()) as List<\n typeof filterItem\n >;\n const itemIndex = items.findIndex(\n item => (item?.get('key') as unknown as string) === paramValue\n );\n if (items.size > 0 && itemIndex !== -1)\n return filter.setIn(['items', itemIndex, 'isSelected'], true);\n\n return filter.set(\n 'items',\n ((filter.get('items') || List()) as List<typeof filterItem>).push(\n filterItem.set('key', paramValue as any).set('isSelected', true)\n )\n );\n }\n });\n\n // For each value found in filterParams\n // we are looking to split that value into multiple by any comma\n // and then either set isSelected for an existing filterItem\n // or push an item to the filters.{ key }.items[] array\n // giving it only the key (entry guid) that can be taken to filter\n // the search results during SSR without needing to fetch the filters first\n filterParams.map(\n (paramValue, paramName = '') =>\n paramValue &&\n paramValue\n .split(',')\n .map(pVal => (filters = addFilterItem(filters, paramName, pVal)))\n );\n\n return filters;\n};\n\nconst resetFacets = (state: typeof initialState, context: Context) =>\n OrderedMap(\n (state.get(context) as Map<string, typeof searchFacet>).map(\n (v = OrderedMap()) => resetFacet(v)\n )\n );\n\nconst resetFacet = (facet: typeof searchFacet) =>\n facet\n .setIn(['pagingInfo', 'pagesLoaded'], fromJS([]))\n .setIn(['pagingInfo', 'pageIndex'], 0)\n .setIn(['queryDuration'], 0);\n\nexport default (config: SearchConfig) => {\n // Add facets from SearchConfig to initialState\n const initState = initialState\n .set('tabs', fromJS(config.tabs))\n .set('facets', generateSearchFacets(Context.facets, config))\n .set('listings', generateSearchFacets(Context.listings, config))\n .set('minilist', generateSearchFacets(Context.minilist, config));\n\n return (state: typeof initState = initState, action: any) => {\n const context = state.get('context') as Context;\n const current = state.get(\n context !== 'listings' ? 'currentFacet' : 'currentListing'\n ) as string;\n\n switch (action.type) {\n case APPLY_CONFIG: {\n return addConfigToState(state, action);\n }\n case CLEAR_FILTERS: {\n const currentFilters = state.getIn([\n context,\n current,\n 'filters',\n ]) as Map<string, typeof filtering>;\n return state\n .setIn(\n [context, current, 'filters'],\n currentFilters.map(filter => {\n const filterItems = ((filter && filter.get('items')) ||\n []) as List<typeof filterItem>;\n return filter?.set(\n 'items',\n filterItems.map(item => item?.set('isSelected', false)) as List<\n typeof filterItem\n >\n );\n })\n )\n .setIn([context, current, 'queryDuration'], 0)\n .setIn([context, current, 'pagingInfo', 'pagesLoaded'], fromJS([]));\n }\n case EXECUTE_SEARCH: {\n return state.setIn(\n [action.context, action.facet, 'entries', 'isLoading'],\n true\n );\n }\n case EXECUTE_SEARCH_ERROR: {\n return state.setIn(\n [action.context, action.facet, 'entries'],\n entries.set('isError', true).set('error', fromJS(action.error))\n );\n }\n case LOAD_FILTERS: {\n const { facetKey, filtersToLoad } = action;\n const filters = state.getIn([\n action.context,\n facetKey,\n 'filters',\n ]) as Map<string, typeof filtering>;\n\n return state.setIn(\n [action.context, facetKey, 'filters'],\n filters.map((filter = Map(), filterKey) =>\n filtersToLoad.find((f: string) => f === filterKey)\n ? filter.set('isLoading', true)\n : filter\n )\n );\n }\n case LOAD_FILTERS_ERROR:\n case LOAD_FILTERS_COMPLETE: {\n const { facetKey, filterKey, nextFilter } = action;\n const filter = state.getIn([\n action.context,\n facetKey,\n 'filters',\n filterKey,\n ]);\n\n if (\n !(nextFilter.items && nextFilter.items.length > 0) &&\n filter.get('items').size >= nextFilter.items.length\n )\n // Preserve items already in state\n return state.setIn(\n [action.context, facetKey, 'filters', filterKey],\n filter.set('isLoading', false).set('isError', nextFilter.isError)\n );\n\n return state.setIn(\n [action.context, facetKey, 'filters', filterKey],\n filter.merge(fromJS(nextFilter))\n );\n }\n case SET_ROUTE_FILTERS: {\n const { facet, params, context } = action;\n const { term = '', pageIndex, orderBy } = params;\n\n const stateTerm = state.get('term');\n const tabId = state.getIn([context, facet, 'tabId'], 0);\n\n // Reset the facet if the search term has changed, or if the any of\n // the filters have changed\n const resetAllFacets = stateTerm && term !== stateTerm;\n let resetCurrentFacet = false;\n\n // Add filter values in params to the matched filters in state for the current facet\n // causing unfetched filter items to be generated with isSelected: true\n // or existing filter items to be tagged with isSelected: true\n const nextFacets = (\n state.get(context) as OrderedMap<string, typeof searchFacet>\n ).map((stateFacet = Map(), facetName = '') => {\n const isCurrentFacet = facetName === facet;\n const nextFilters = generateFiltersState(\n {\n facet: facetName,\n params,\n context,\n isCurrentFacet,\n },\n state\n );\n\n resetCurrentFacet =\n state.getIn(['config', 'isLoaded'], false) === true &&\n !nextFilters.equals(stateFacet.get('filters'));\n\n return (resetCurrentFacet ? resetFacet(stateFacet) : stateFacet)\n .set('filters', nextFilters)\n .setIn(['queryParams', 'dynamicOrderBy'], toArray(orderBy));\n });\n\n const nextState = state\n .set('context', context)\n .set(context, nextFacets as any)\n .set(\n action.context === Context.facets\n ? 'currentFacet'\n : 'currentListing',\n facet\n )\n .set('term', term)\n .setIn(['tabs', tabId, 'currentFacet'], facet)\n .setIn(\n [context, facet, 'pagingInfo', 'pageIndex'],\n Number(pageIndex) - 1 ||\n (state.getIn([context, facet, 'queryParams', 'loadMorePaging'])\n ? state.getIn([context, facet, 'pagingInfo', 'pageIndex'], 0)\n : 0)\n )\n .setIn(['config', 'isLoaded'], true)\n .setIn(['config', 'ssr'], typeof window === 'undefined');\n\n return resetAllFacets\n ? nextState.set(context, resetFacets(nextState, context) as any)\n : nextState;\n }\n case SET_SEARCH_ENTRIES: {\n const thisContext = action.context || context;\n const currentFacet = state.getIn([thisContext, action.facet]);\n return state.setIn(\n [thisContext, action.facet],\n currentFacet.merge(fromJS(action.nextFacet))\n );\n }\n case SET_SEARCH_FILTERS: {\n // DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS\n // for example in a minilist scenario where the route filters\n // are used for the primary page / listing navigation\n\n // Add filter values in params to the matched filters in state\n // causing unfetched filter items to be generated with isSelected: true\n const filters = generateFiltersState(\n { ...action, isCurrentFacet: true },\n state\n );\n\n const term = action?.params?.term;\n const useSearchTerm = state.getIn(\n [\n action.context || Context.minilist,\n action.facet,\n 'queryParams',\n 'useSearchTerm',\n ],\n false\n );\n\n return state\n .setIn(\n [action.context || Context.minilist, action.facet, 'filters'],\n filters\n )\n .setIn(\n [\n action.context || Context.minilist,\n action.facet,\n 'queryParams',\n 'excludeIds',\n ],\n fromJS(action.excludeIds)\n )\n .set('term', useSearchTerm ? term : state.get('term'))\n .setIn(['config', 'ssr'], typeof window === 'undefined');\n }\n case UPDATE_PAGE_INDEX: {\n const { pageIndex } = action;\n const internalPaging = state.getIn(\n [context, current, 'queryParams', 'internalPaging'],\n false\n );\n\n const currentPageIndex = state.getIn(\n [context, current, 'pagingInfo', 'pageIndex'],\n 0\n );\n\n const nextState = state\n .setIn(\n [context, current, 'pagingInfo', 'pageIndex'],\n Number(pageIndex) || 0\n )\n .setIn(\n [context, current, 'pagingInfo', 'prevPageIndex'],\n currentPageIndex\n )\n .setIn([context, current, 'pagingInfo', 'isLoading'], true);\n\n if (internalPaging) return nextState;\n\n return nextState.setIn([context, current, 'queryDuration'], 0);\n }\n case UPDATE_SEARCH_TERM: {\n return state\n .set('term', action.term)\n .set(context, resetFacets(state, context) as any);\n }\n case UPDATE_SELECTED_FILTERS: {\n const { filter, key } = action;\n\n const isSingleSelect = state.getIn(\n [context, current, 'filters', filter, 'isSingleSelect'],\n false\n );\n const isGrouped = state.getIn(\n [context, current, 'filters', filter, 'isGrouped'],\n false\n );\n\n const currentItems = state.getIn([\n context,\n current,\n 'filters',\n filter,\n 'items',\n ]) as List<typeof filterItem>;\n return state\n .set(\n context,\n isGrouped\n ? (resetFacets(state, context) as any)\n : (state.get(context) as OrderedMap<string, typeof searchFacet>)\n )\n .setIn(\n [context, current],\n resetFacet(state.getIn([context, current]))\n )\n .setIn(\n [context, current, 'filters', filter, 'items'],\n currentItems.map((item = Map()) => {\n if (item.get('key') === key) {\n return item.set('isSelected', !item.get('isSelected'));\n }\n return isSingleSelect ? item.set('isSelected', false) : item;\n })\n );\n }\n case UPDATE_SORT_ORDER: {\n const { orderBy, facet } = action;\n return state\n .set(context, resetFacets(state, context) as any)\n .setIn(\n [context, facet || current, 'queryParams', 'dynamicOrderBy'],\n orderBy ? fromJS(toArray(orderBy)) : ''\n );\n }\n default:\n return state;\n }\n };\n};\n","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const Context = {\n facets: 'facets',\n listings: 'listings',\n minilist: 'minilist',\n};\nexport * from './models';\n\nexport { default as withSearch } from './containers/withSearch';\nexport { default as withListing } from './containers/withListing';\nexport { doSearch, setRouteFilters, searchSagas as sagas } from './redux/sagas';\n\nexport { default as useMinilist } from './hooks/useMinilist.hook';\n\nexport * as actions from './redux/actions';\nexport * as queries from './redux/queries';\nexport { default as reducer } from './redux/reducers';\nexport * as schema from './redux/schema';\nexport * as selectors from './redux/selectors';\nexport * as types from './redux/types';\n"],"names":["toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","ACTION_PREFIX","APPLY_CONFIG","CLEAR_FILTERS","DO_SEARCH","EXECUTE_SEARCH","EXECUTE_SEARCH_ERROR","EXECUTE_SEARCH_PRELOAD","LOAD_FILTERS","LOAD_FILTERS_COMPLETE","LOAD_FILTERS_ERROR","SET_FEATURED_ENTRIES","SET_ROUTE_FILTERS","SET_SEARCH_FILTERS","SET_SEARCH_ENTRIES","SET_SELECTED_FILTER","UPDATE_CURRENT_FACET","UPDATE_CURRENT_TAB","UPDATE_SORT_ORDER","UPDATE_PAGE_INDEX","UPDATE_SEARCH_TERM","UPDATE_SELECTED_FILTERS","withMappers","action","mappers","triggerSearch","config","context","debug","defaultLang","excludeIds","facet","mapper","params","type","initListing","navigate","path","state","clearFilters","updatePageIndex","pageIndex","updateCurrentFacet","updateCurrentTab","id","updateSearchTerm","term","updateSelectedFilters","filter","key","updateSortOrder","orderBy","Context","getSearchContext","getIn","facets","getCurrent","getCurrentFacet","getCurrentListing","getCurrentTab","getFacets","OrderedMap","getTabFacets","v","getFacetTitles","map","Map","title","get","totalCount","toIndexedSeq","toArray","getFacet","facetName","currentFacet","getListing","listing","currentListing","listings","getFilters","getRenderableFilters","f","getFiltersToLoad","filters","loadedFilters","List","i","size","isLoaded","filterKey","toList","getSelectedFilters","isoDateRegex","RegExp","selectedFilters","item","isIsoDate","test","toLowerCase","getResults","current","getIsInternalPaging","getIsLoaded","getIsLoading","getIsSsr","getFeaturedResults","getPaging","getPageIndex","getPrevPageIndex","getPageIsLoading","getPagesLoaded","Set","getTotalCount","getFacetAuthentication","getFeaturedEntryIds","entryIds","entry","getSearchTerm","getSearchTabs","getQueryParams","getQueryParameter","ifnull","getCustomApi","getCustomEnv","getTabsAndFacets","tabs","tab","fieldsToCount","countFields","thisTabFacets","thisTabTotal","find","first","a","b","set","getSearchTotalCount","tabsAndFacets","wholeSearchTotal","t","getFacetsTotalCount","selectFacets","selectListing","selectCurrentPath","selectVersionStatus","withSearch","SearchComponent","Wrapper","props","displayName","name","mapStateToProps","currentPageIndex","currentTabIndex","facetsTotalCount","facetTitles","featuredResults","isLoading","paging","pageIsLoading","results","resultsInfo","searchTerm","searchTotalCount","sortOrder","mapDispatchToProps","connector","connect","withListing","ListingComponent","featured","getClientConfig","project","env","DELIVERY_API_CONFIG","projectId","window","PROXY_DELIVERY_API","rootUrl","responseHandler","CacheNode","constructor","value","next","prev","LruCache","limit","head","tail","node","remove","setHead","CachedSearch","cache","taxonomyLookup","search","query","linkDepth","client","Client","create","request","JSON","stringify","toString","getTaxonomyNodeByPath","taxonomy","getNodeByPath","order","childDepth","then","extendTaxonomyNode","execute","promise","catch","getTaxonomyId","children","n","parts","split","length","cachedSearch","now","Date","performance","fixFreeTextForElastic","s","illegalChars","illegalRegEx","c","join","replace","timedSearch","duration","start","payload","end","getItemsFromResult","result","Array","isArray","items","extractQuotedPhrases","pattern","match","buildUrl","route","qs","queryString","callCustomApi","customApi","apiUri","uri","Error","startsWith","response","fetch","json","removeEmptyAttributes","obj","forEach","val","seperator","areArraysEqualSets","a1","a2","superSet","ai","e","DataFormats","asset","webpage","FilterExpressionTypes","contentType","field","sys","allUris","contentTypeId","dataFormat","filename","includeInSearch","language","versionStatus","Fields","entryDescription","entryTitle","keywords","searchContent","wildcard","fieldExpression","operator","weight","Op","or","fieldId","flat","between","equalToOrIn","undefined","contentTypeIdExpression","contentTypeIds","webpageTemplates","assetTypes","expressions","push","dataFormatExpression","filterExpressions","param","withContentTypeIds","notContentTypeIds","substring","andExpr","and","dataFormatExpr","withExpr","notExpr","not","add","featuredResultsExpression","fieldValue","languagesExpression","languages","includeInSearchExpressions","includeInSearchFields","includeInSearchField","exists","equalTo","defaultExpressions","excludeIdsExpression","expr","orderByExpression","expression","OrderBy","ob","desc","asc","in","handle","betweenValue","valArr","minimum","maximum","console","log","bc","op","customWhereExpressions","where","clause","keys","idx","k","includes","recurseExpr","notKey","notIdx","innerOperator","innerValue","innerField","clauseKey","termExpressions","weightedSearchFields","quotedPhrases","modifiedSearchTerm","qp","trim","operators","containsOp","freeTextOp","wsf","fieldOperators","addRange","freeText","contains","filterQuery","customWhere","Query","pageSize","searchQuery","dynamicOrderBy","fields","isFeatured","count","searchUriTemplate","currentPath","newPath","searchContext","stateFilters","currentSearch","currentQs","parse","mergedSearch","fromJS","merge","hash","$path","$formatting","mapStateToSearchUri","mapJson","mapEntriesToSearchResults","mapperFunc","facetTemplate","nextFacet","isError","featuredEntries","featuredResult","queryDuration","pagingInfo","pageCount","$default","pagesLoaded","loaded","pages","isNaN","l","sort","prevPageIndex","preloaded","prevResults","loadMorePaging","queryParams","nextResults","r","_pageIndex","_pagePosition","loadedPages","firstResultSet","secondResultSet","onlyResultSet","preload","ogState","filterTemplate","facetKey","nextFilter","selectedKeys","isSelected","error","$disable","filterExpressionMapper","expressionType","mapFilterToFilterExpression","mapFiltersToFilterExpression","fkey","selectedValue","selectedItems","itm","queryParamsTemplate","root","filterParams","internalPageIndex","internalPaging","minilist","deduped","groupBy","mapStateToQueryParams","sourceJson","generateQueryParams","runSearch","ssr","willRun","facetIsLoaded","stateParams","filterParamsChanged","queryParam","paramsChanged","selectedValues","inboundValues","debugExecuteSearch","base","mapEntriesToFilterItems","template","mapEntry","searchSagas","takeEvery","doSearch","loadFilters","preloadOtherFacets","applySearchFilter","setRouteFilters","listingType","select","keySeq","nextAction","put","call","ensureSearch","filtersToLoad","filtersToLoadSagas","loadFilter","filterItems","all","createStateFrom","mapSearchResultToState","executeSearch","stack","featuredQuery","apiParams","fi","allFacets","otherFacets","preloadFacet","preloadAction","updateCurrentFacetAction","buildUri","mapUri","useMinilist","dispatch","useDispatch","useSelector","useEffect","searchFacet","searchTab","label","filtering","isGrouped","filterItem","searchState","initialState","addConfigToState","setIn","newState","generateSearchFacets","thisConfig","newFacet","isDisabled","generateFiltersState","isCurrentFacet","addFilterItem","paramKey","paramValue","itemIndex","findIndex","paramName","pVal","resetFacets","resetFacet","initState","currentFilters","stateTerm","tabId","resetAllFacets","resetCurrentFacet","nextFacets","stateFacet","nextFilters","equals","nextState","Number","thisContext","useSearchTerm","isSingleSelect","currentItems"],"mappings":"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"}
|