@zengenti/contensis-react-base 3.0.0-beta.50 → 3.0.0-beta.53

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/cjs/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/getIn.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/filter-to-filterexpression.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpressions.mapper.ts","../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.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/sagas.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/index.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/hooks/useListing.hook.tsx","../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 import/default */\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 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 = (\n filter: string,\n key: string,\n isUnknownItem = false\n) => {\n return {\n type: UPDATE_SELECTED_FILTERS,\n filter,\n key,\n isUnknownItem,\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 { jpath } from 'jsonpath-mapper';\n\n// Find a fromJS function from global that is dynamically loaded in createStore\n// or replace with a stub function for non-immutable gets\nexport const makeFromJS = (\n returnType: 'immutable' | 'js' = (globalThis as any).STATE_TYPE || 'immutable'\n) =>\n returnType === 'immutable'\n ? (globalThis as any).immutable?.fromJSOrdered ||\n (globalThis as any).immutable?.fromJS ||\n ((v: any) => v)\n : (v: any) => v;\n\nconst getImmutableOrJS = <\n S extends Record<string, unknown>,\n T extends keyof S | any\n>(\n state: S,\n stateKey: T | T[],\n fallbackValue?: any,\n returnType: 'immutable' | 'js' = (globalThis as any).STATE_TYPE || 'immutable'\n) => {\n // Find a fromJS function from global that is dynamically loaded in createStore\n // or replace with a stub function for non-immutable gets\n const fromJS = makeFromJS(returnType);\n\n if (\n state &&\n 'get' in state &&\n typeof state.get === 'function' &&\n 'getIn' in state &&\n typeof state.getIn === 'function' &&\n 'toJS' in state &&\n typeof state.toJS === 'function'\n ) {\n if (Array.isArray(stateKey))\n return fromJS(state.getIn(stateKey, fallbackValue));\n return fromJS(state.get(stateKey, fallbackValue)) as S[T | any];\n }\n\n if (Array.isArray(stateKey) && state && typeof state === 'object') {\n const result = jpath(stateKey.join('.'), state);\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n }\n\n const result =\n state && typeof state === 'object' ? state[stateKey as string] : undefined;\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n};\n\nexport default getImmutableOrJS;\n","import { Context } from '../models/Enums';\nimport { QueryParams as QueryParams2 } from '../models/Queries';\nimport { CustomApi, QueryParams } from '../models/Search';\nimport {\n AppState,\n Facet,\n Facets,\n Filters,\n Paging,\n SelectedFilters,\n Tab,\n TabAndFacets,\n} from '../models/SearchState';\nimport getIn, { makeFromJS } from './getIn';\n\ntype StateType = 'immutable' | 'js';\n\nexport const getSearchContext = (state: AppState): Context =>\n getIn(state, ['search', 'context'], Context.facets);\n\nexport const getCurrent = (state: AppState, context = Context.facets) =>\n context === Context.facets\n ? getCurrentFacet(state)\n : getCurrentListing(state);\n\nexport const getCurrentFacet = (state: AppState): string =>\n getIn(state, ['search', 'currentFacet']);\n\nexport const getCurrentListing = (state: AppState): string =>\n getIn(state, ['search', 'currentListing']);\n\nexport const getCurrentTab = (state: AppState): Map<string, Tab[keyof Tab]> =>\n getIn(state, ['search', Context.facets, getCurrentFacet(state), 'tabId'], 0);\n\nexport const getFacets = (state: AppState, returnType?: StateType): Facets =>\n getIn(state, ['search', Context.facets], {}, returnType);\n\nexport const getTabFacets = (state: AppState) =>\n Object.fromEntries(\n Object.entries(getFacets(state, 'js')).filter(\n ([key]) =>\n getIn(getFacets(state), [key, 'tabId'], 0) === getCurrentTab(state)\n )\n );\n\nexport const getFacetTitles = (state: AppState) =>\n Object.entries(getFacets(state, 'js')).map(([key, facet = {}]) => ({\n key,\n title: facet.title as string | undefined,\n totalCount: facet.pagingInfo?.totalCount as number,\n }));\n\nexport const getFacet = (\n state: AppState,\n facetName = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n const currentFacet = facetName || getCurrentFacet(state);\n return getIn(\n state,\n ['search', context, currentFacet],\n {},\n returnType\n ) as Facet;\n};\n\nexport const getListing = (state: AppState, listing = '') => {\n const currentListing = listing || getCurrentListing(state);\n return getIn(\n state,\n ['search', Context.listings, currentListing],\n {}\n ) as Facet;\n};\n\nexport const getFilters = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n): Filters => {\n return getIn(\n state,\n ['search', context, facet || getCurrent(state, context), 'filters'],\n {},\n returnType\n );\n};\n\nexport const getRenderableFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n): Filters =>\n Object.fromEntries(\n Object.entries(getFilters(state, facet, context, 'js')).filter(\n ([, f = {}]) => (typeof f.renderable !== 'boolean' ? true : f.renderable)\n )\n );\n\nexport const getFiltersToLoad = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n) => {\n const filters = getFilters(state, facet, context, returnType);\n const loadedFilters = Object.entries(filters).map(([key, f = {}]) => [\n key,\n (f.items || []).filter(i => {\n const title = i?.title;\n return typeof title !== 'undefined' && !!title;\n }).length > 0 && (f.isError || false) === false,\n ]);\n return loadedFilters\n .map(([filterKey, isLoaded]) => (!isLoaded ? filterKey : null))\n .filter(f => !!f) as string[];\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 returnType?: StateType\n): SelectedFilters => {\n const filters = getFilters(state, facet, context, 'js');\n const isoDateRegex = RegExp(/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d/);\n\n const selectedFilters = Object.fromEntries(\n Object.entries(filters).map(([key, filter = {}]) => [\n key,\n (filter.items || [])\n .filter(item => !!(item.isSelected || false))\n .map(item => {\n const key = item?.key || '';\n const isIsoDate = isoDateRegex.test(key);\n return isIsoDate\n ? key\n : typeof key.toLowerCase !== 'undefined'\n ? key.toLowerCase()\n : key;\n }),\n ])\n );\n const fromJS = makeFromJS(returnType);\n return fromJS(selectedFilters);\n};\n\nexport const getResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'results'],\n [],\n returnType\n ) as any[];\n};\n\nexport const getIsInternalPaging = (\n state: AppState,\n current: string,\n context = Context.facets\n): boolean => {\n return getIn(\n state,\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 !!getIn(\n state,\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): boolean => {\n return getIn(state, [\n 'search',\n context,\n facet || getCurrent(state, context),\n 'entries',\n 'isLoading',\n ]);\n};\n\nexport const getIsSsr = (state: AppState): boolean =>\n getIn(state, ['search', 'config', 'ssr'], false);\n\nexport const getFeaturedResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n [],\n returnType\n ) as any[];\n};\n\nexport const getPaging = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n): Paging => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'pagingInfo'],\n {},\n returnType\n );\n};\n\nexport const getPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\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): number => {\n return getIn(state, [\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): boolean => {\n return getIn(state, [\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): number[] => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pagesLoaded',\n ],\n [],\n 'js'\n );\n};\n\nexport const getTotalCount = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'totalCount',\n ]);\n};\n\nexport const getSearchTerm = (state: AppState): string =>\n getIn(state, ['search', 'term']);\n\nexport const getSearchTabs = (state: AppState, returnType?: StateType): Tab[] =>\n getIn(state, ['search', 'tabs'], [], returnType);\n\nexport const getQueryParams = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'queryParams'],\n {},\n 'js'\n ) as Record<string, any>;\n};\n\nexport const getQueryParameter = <\n K extends keyof QueryParams,\n K2 extends keyof QueryParams2\n>(\n {\n state,\n facet,\n context = Context.facets,\n }: { state: AppState; facet?: string; context?: Context },\n key: K | K2,\n ifnull: any = null\n): QueryParams[K] | QueryParams2[K2] => {\n return getIn(getQueryParams(state, facet, context), key, ifnull, 'js');\n};\n\nexport const getCustomApi = (\n state: AppState,\n current: string,\n context = Context.facets,\n returnType?: StateType\n): CustomApi => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'customApi'],\n null,\n returnType\n );\n};\n\nexport const getCustomEnv = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'env',\n ]);\n};\n\nexport const getTabsAndFacets = (state: AppState, returnType?: StateType) => {\n const tabs = getSearchTabs(state, 'js');\n const facets = getFacets(state, 'js');\n\n const tabsAndFacets = (tabs || []).map((tab = {} as Tab) => {\n const fieldsToCount = tab.totalCount;\n let countFields: string[][];\n\n if (typeof fieldsToCount === 'string') countFields = [[fieldsToCount]];\n\n const thisTabFacets = Object.entries(facets).filter(\n ([key]) => getIn(facets, [key, 'tabId'], 0) === tab.id\n ) as [string, Facet][];\n\n const thisTabTotal = thisTabFacets\n .map(([facetName, facet = {}]) => {\n if (!countFields || countFields.find((f = []) => f?.[0] === facetName))\n return getIn(facet, ['pagingInfo', 'totalCount']);\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n return {\n ...tab,\n [Context.facets]: Object.fromEntries(thisTabFacets),\n totalCount: thisTabTotal,\n } as TabAndFacets;\n });\n\n const fromJS = makeFromJS(returnType);\n return fromJS(tabsAndFacets);\n};\n\nexport const getSearchTotalCount = (state: AppState) => {\n const tabsAndFacets = getTabsAndFacets(state, 'js');\n const wholeSearchTotal = tabsAndFacets\n .map((t = {} as TabAndFacets) => t.totalCount)\n .reduce((a: number, b: number) => a + b, 0);\n return wholeSearchTotal;\n};\n\nexport const getFacetsTotalCount = (state: AppState) => {\n const facets = getFacets(state);\n const wholeSearchTotal = Object.entries(facets)\n .map(([, t = {}]) => t.pagingInfo?.totalCount || 0)\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: keyof QueryParams | keyof QueryParams2,\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, 'js'),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings, 'js'),\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, 'js'),\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: keyof QueryParams | keyof QueryParams2,\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, 'js'),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings, 'js'),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n getIn(state, ['routing', 'currentPath']);\n\nexport const selectCurrentProject = (state: AppState) =>\n getIn(state, ['routing', 'currentProject']);\n\nexport const selectVersionStatus = (state: AppState) =>\n getIn(state, ['version', 'contensisVersionStatus']);\n","// eslint-disable-next-line import/default\nimport 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\nconst withSearch =\n (mappers: Mappers) =>\n <Props extends Record<string, 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: (\n filter: string,\n key: string,\n isUnknownItem = false\n ) =>\n withMappers(updateSelectedFilters(filter, key, isUnknownItem), 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 */\n// eslint-disable-next-line import/default\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<string, any>>(ListingComponent: React.FC<Props>) => {\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: (\n filter: string,\n key: string,\n isUnknownItem = false\n ) =>\n withMappers(updateSelectedFilters(filter, key, isUnknownItem), 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","// eslint-disable-next-line import/default\nimport { stringify } from 'query-string';\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 return payload as any;\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 = stringify(params) as string;\n const path = qs ? `${route}?${qs}` : route;\n return path;\n};\n\nexport const callCustomApi = async <T>(\n customApi: CustomApi,\n filters: { [key: string]: string }\n): Promise<T> => {\n const apiUri = customApi.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 | null, seperator = ',') =>\n typeof obj === 'undefined' || obj === null\n ? obj\n : Array.isArray(obj)\n ? (obj as string[])\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, FilterExpression } 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 ? equalToOrIn(field, value, operator)\n : [equalToOrIn(field, value, operator)[0].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 = (filters: FilterExpression[]) => {\n if (!filters) return [];\n const expressions: IExpression[] = [];\n filters.map(selectedFilter => {\n if (selectedFilter.logicOperator === 'and')\n // using 'and' logic operator we loop through each filter\n // and loop through all values to add an expression for each filter value\n selectedFilter.values.forEach(value =>\n expressions.push(\n ...fieldExpression(\n selectedFilter.key,\n value,\n selectedFilter.fieldOperator || 'equalTo'\n )\n )\n );\n else if (selectedFilter.logicOperator === 'not') {\n const fieldExpressions = fieldExpression(\n selectedFilter.key,\n selectedFilter.values,\n selectedFilter.fieldOperator || 'in'\n );\n fieldExpressions.forEach(expr => {\n expressions.push(Op.not(expr));\n });\n }\n // using 'or' logic operator we loop over each filter\n // and simply add the array of values to an expression with an 'in' operator\n else\n expressions.push(\n ...fieldExpression(\n selectedFilter.key,\n selectedFilter.values,\n selectedFilter.fieldOperator || 'in'\n )\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 && withExpr) andExpr.add(withExpr);\n if (notContentTypeIds.length > 0 && notExpr) 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 (operator === 'equalTo') return [Op.in(field, ...value)];\n return [\n Op.or(\n ...value.map(innerValue => {\n switch (operator) {\n case 'between':\n case 'distanceWithin':\n // Not implemented\n return Op.equalTo(field, innerValue);\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return Op[operator](field, innerValue, false, undefined);\n default:\n return Op[operator](field, innerValue);\n }\n })\n ),\n ];\n }\n switch (operator) {\n case 'between':\n case 'distanceWithin':\n // Not implemented\n return [Op.equalTo(field, value)];\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return [Op[operator](field, value, false, undefined)];\n default:\n return [Op[operator](field, value)];\n }\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] = valArr;\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\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 op = handle(value);\n return op ? [op] : [];\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 '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 =\n innerOperator === 'between'\n ? Op.not(\n Op[innerOperator](\n innerField,\n innerValue[0],\n innerValue[1]\n )\n )\n : 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 : operator === 'exists'\n ? Op[operator](field, value)\n : operator === 'between'\n ? Op[operator](field, value[0], value[1])\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 merge from 'deepmerge';\n// eslint-disable-next-line import/default\nimport { parse, stringify } from 'query-string';\nimport mapJson from 'jsonpath-mapper';\n\nimport getIn from '../redux/getIn';\nimport {\n getSelectedFilters,\n getSearchTerm,\n getCurrentFacet,\n getSearchContext,\n selectCurrentPath,\n} from '../redux/selectors';\nimport { removeEmptyAttributes } from '../search/util';\n\nimport { Context } from '../models/Enums';\nimport { NavigateMapper, SearchUriMapping } from '../models/Search';\nimport { AppState } from '../models/SearchState';\n\nconst searchUriTemplate: SearchUriMapping = {\n path: ({ state, facet, pageIndex }) => {\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 }) => {\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 ? {}\n : Object.fromEntries(\n Object.entries(\n getSelectedFilters(state, facet, searchContext, 'js')\n ).map(([key, f]) => [key, f?.join(',')])\n );\n const currentSearch =\n !term && getIn(state, ['routing', 'location', 'search']);\n const currentQs = removeEmptyAttributes(parse(currentSearch));\n\n if (orderBy) currentQs.orderBy = orderBy;\n\n const searchTerm = getSearchTerm(state);\n // Merge the stateFilters with any current qs to build the new qs\n const mergedSearch = removeEmptyAttributes({\n ...merge(currentQs, stateFilters),\n term: searchTerm,\n });\n\n return stringify(mergedSearch);\n },\n hash: (state: AppState) =>\n getIn(state, ['routing', 'location', 'hash'], '').replace('#', ''),\n};\n\nconst mapStateToSearchUri: NavigateMapper = params =>\n mapJson(params, searchUriTemplate);\n\nexport default mapStateToSearchUri;\n","import { default as mapSearchResultToState } from 'jsonpath-mapper';\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 = [...(pagesLoaded || [])];\n if (isNaN(loaded.find(l => l === pageIndex) as any)) {\n loaded.push(pageIndex);\n }\n return loaded.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 = 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.length === 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';\nimport { FilterExpression } from '../models/Queries';\nimport { Filter } from '../models/SearchState';\n\nconst filterExpressionMapper = {\n // Expression type: so we can identify how to build the query\n expressionType: ({ contentTypeId }: Filter) =>\n contentTypeId\n ? FilterExpressionTypes.contentType\n : FilterExpressionTypes.field,\n // Key: so we can target the query to a specific field\n key: 'fieldId',\n // Value: so we can filter a specific field by an array of values\n // e.g. taxonomy key or contentTypeId array\n values: 'selectedValues',\n fieldOperator: 'fieldOperator',\n logicOperator: 'logicOperator',\n};\n\nconst mapFilterToFilterExpression = (\n filter: Filter & { selectedValues: string[] }\n) => mapJson(filter, filterExpressionMapper) as FilterExpression;\n\nexport default mapFilterToFilterExpression;\n","import mapFilterToFilterExpression from './filter-to-filterexpression.mapper';\n\nimport { FilterExpression } from '../models/Queries';\nimport { Filters, SelectedFilters } from '../models/SearchState';\n\nexport const mapFiltersToFilterExpression = (\n filters: Filters,\n selectedFilters: SelectedFilters\n) => {\n if (!selectedFilters || Object.keys(selectedFilters).length === 0) return [];\n const filterExpressions: FilterExpression[] = [];\n\n // Iterate through the keys in selectedFilters and locate\n // the items that are selected and queryable\n Object.entries(selectedFilters).map(([fkey, selectedValues]) => {\n const filter = filters[fkey];\n if (selectedValues && filter) {\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 selectedValues,\n });\n filterExpressions.push(expr);\n }\n });\n return filterExpressions;\n};\n","import mapJson from 'jsonpath-mapper';\n\nimport {\n getFacet,\n getSelectedFilters,\n getQueryParameter,\n getSearchTerm,\n getPageIndex,\n getFilters,\n getCustomEnv,\n getPrevPageIndex,\n getPagesLoaded,\n selectCurrentProject,\n selectVersionStatus,\n} from '../redux/selectors';\nimport { mapFiltersToFilterExpression } from './filters-to-filterexpressions.mapper';\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', []),\n contentTypeIds: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'contentTypeIds', []),\n customWhere: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'customWhere', []),\n dynamicOrderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'dynamicOrderBy', []),\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', []),\n filters: ({ state, facet, context }: QueryParamsMapperParams) => {\n const stateFilters = getFilters(state, facet, context, 'js');\n const selectedFilters = getSelectedFilters(state, facet, context, 'js');\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', []),\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', []),\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\n ? getPageIndex(state, action.facet, action.context)\n : 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)?.projectId || selectCurrentProject(state),\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 Object.fromEntries(\n Object.entries(getSelectedFilters(state, facet, context, 'js')).map(\n ([key, f]) => [key, f?.join(',')]\n )\n ),\n versionStatus: ({ state }: QueryParamsMapperParams) =>\n selectVersionStatus(state),\n weightedSearchFields: (root: QueryParamsMapperParams) => {\n const wsf = getQueryParameter(\n root,\n 'weightedSearchFields',\n []\n ) as WeightedSearchField[];\n const deduped = wsf.filter(\n (v, i, a) => a.findIndex(t => t.fieldId === v.fieldId) === i\n );\n return deduped;\n // return wsf;\n },\n webpageTemplates: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'webpageTemplates', []),\n};\n\nconst mapStateToQueryParams = (sourceJson: QueryParamsMapperParams) =>\n mapJson(sourceJson, queryParamsTemplate) 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 {AppState} 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 = {\n ...getQueryParams(ogState, facet, context),\n } 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 'js'\n ) 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 = {\n ...getQueryParams(action.ogState || state, action.facet, action.context),\n pageIndex: getPageIndex(\n action.ogState || state,\n action.facet,\n action.context\n ),\n searchTerm: getSearchTerm(action.ogState || state),\n } as QueryParams;\n console.log(stateParams, queryParams);\n\n console.log(\n 'getSelectedFilters',\n getSelectedFilters(\n action.ogState || state,\n action.facet,\n action.context,\n 'js'\n ),\n 'params',\n action.params\n );\n};\n","import { default as mapEntry } from 'jsonpath-mapper';\nimport { FilterItemsMapper } from '../models/Search';\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: FilterItemsMapper = 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 as any;\n });\n};\n\nexport default mapEntriesToFilterItems;\n","import * as log from 'loglevel';\nimport { takeEvery, put, select, call, all } from 'redux-saga/effects';\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 { generateQueryParams, debugExecuteSearch } from './util';\nimport mapEntriesToFilterItems from '../transformations/entry-to-filteritem.mapper';\nimport { AppState, Facet, Filter } from '../models/SearchState';\nimport {\n ApplySearchFilterAction,\n ClearFiltersAction,\n EnsureSearchAction,\n ExecuteSearchAction,\n InitListingAction,\n LoadFiltersCompleteAction,\n LoadFiltersSearchResults,\n SearchResults,\n SetRouteFiltersOptions,\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\nconst toJS = (obj: any) =>\n obj && 'toJS' in obj && typeof obj.toJS === 'function' ? obj.toJS() : obj;\n\nexport function* setRouteFilters(\n action: InitListingAction | SetRouteFiltersOptions\n) {\n const { mappers, params, listingType, defaultLang, debug } = action;\n const context = listingType ? Context.listings : Context.facets;\n const state: AppState = toJS(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, 'js');\n currentFacet =\n tabs?.[0].defaultFacet || Object.keys(getFacets(state, 'js'))?.[0] || '';\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 // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\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 });\n}\n\nexport function* doSearch(action: TriggerSearchAction) {\n const state: AppState = toJS(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 facet: action.facet || action.params?.facet,\n } as InitListingAction;\n\n if (\n nextAction.facet &&\n (action.config ||\n Object.keys(getFacet(state, nextAction.facet, action.context, 'js'))\n .length > 0)\n ) {\n yield put(nextAction);\n\n // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\n\n yield call(ensureSearch, { ...nextAction, ogState });\n }\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 'js'\n )) as string[];\n if (filtersToLoad.length > 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 'js'\n )) as {\n [k: string]: string[];\n };\n const facet = (yield select(getFacet, facetKey, context, 'js')) as Facet;\n const filters = facet.filters || {};\n const projectId = facet.projectId;\n\n const filtersToLoadSagas =\n filters &&\n filtersToLoad.map((filterKey = '') => {\n return call(loadFilter, {\n facetKey,\n filterKey,\n filter: filters[filterKey],\n projectId,\n selectedKeys: selectedKeys[filterKey],\n context,\n mapper:\n ('filterItems' in mappers && mappers.filterItems) ||\n mapEntriesToFilterItems,\n } as LoadFilterAction);\n });\n if (filtersToLoadSagas) yield all(filtersToLoadSagas);\n }\n}\n\ntype LoadFilterAction = {\n facetKey: string;\n filterKey: string;\n filter: Filter;\n projectId: string;\n selectedKeys: 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 } = filter 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 = {\n ...action,\n ogState: action.ogState || { search: state.search },\n };\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 // eslint-disable-next-line import/namespace\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, 'js');\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, 'js'),\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 // eslint-disable-next-line import/namespace\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, 'js');\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, 'js');\n const tabs = getSearchTabs(state, 'js');\n let nextFacet = tabs?.[id].currentFacet;\n if (!nextFacet) {\n Object.entries(facets).map(([facetName, facet]) => {\n if (facet.tabId === id && tabs?.[id].defaultFacet === facetName)\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 = Object.entries(facets).filter(([, f]) => f.tabId === id)[0][0];\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?.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 { Mappers } from '../models/Search';\nimport mapStateToSearchUri from './state-to-searchuri';\n\nexport default {\n results: entries => entries,\n navigate: mapStateToSearchUri,\n} as Mappers;\n","import { useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport {\n clearFilters,\n updateCurrentFacet,\n updatePageIndex,\n updateSearchTerm,\n updateSelectedFilters,\n updateSortOrder,\n withMappers,\n} from '../redux/actions';\nimport defaultMappers from '../transformations';\nimport { Context } from '../models/Enums';\nimport { ListingProps, UseListingProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\nimport {\n getPaging,\n getResults,\n getSelectedFilters,\n selectListing,\n} from '../redux/selectors';\nimport { Mappers } from '../models/Search';\nconst {\n getCurrent,\n getFeaturedResults,\n getIsLoading,\n getListing,\n getPageIndex,\n getPageIsLoading,\n getQueryParameter,\n getRenderableFilters,\n getSearchTerm,\n} = selectListing;\n\nconst makeSelectListingProps = () =>\n createSelector(\n (state: AppState) => state,\n (_: any, mappers: Mappers) => mappers,\n (state: AppState, mappers: Mappers) => ({\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 pageIsLoading: getPageIsLoading(state),\n paging: getPaging(state, '', Context.listings, 'js'),\n results: getResults(state, '', Context.listings, 'js'),\n resultsInfo:\n mappers &&\n typeof mappers.resultsInfo === 'function' &&\n mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n selectedFilters: getSelectedFilters(state, '', Context.listings, 'js'),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n })\n );\n\nconst useListing = <SearchResults extends Record<string, any>>(\n { mappers }: UseListingProps = {\n id: '',\n }\n) => {\n const dispatch = useDispatch();\n\n const m = mappers || defaultMappers;\n\n const selectListingProps = useMemo(makeSelectListingProps, [m]);\n\n const dispatchProps = {\n clearFilters: () => dispatch(withMappers(clearFilters(), m)),\n updateCurrentFacet: (facet: string) =>\n dispatch(withMappers(updateCurrentFacet(facet), m)),\n updatePageIndex: (pageIndex: number) =>\n dispatch(withMappers(updatePageIndex(pageIndex), m)),\n updateSearchTerm: (term: string) =>\n dispatch(withMappers(updateSearchTerm(term), m)),\n updateSelectedFilters: (\n filter: string,\n key: string,\n isUnknownItem = false\n ) =>\n dispatch(\n withMappers(updateSelectedFilters(filter, key, isUnknownItem), m)\n ),\n updateSortOrder: (orderBy: string) =>\n dispatch(withMappers(updateSortOrder(orderBy), m)),\n };\n\n const {\n currentListing,\n currentPageIndex,\n featured,\n filters,\n isLoading,\n listing,\n paging,\n pageIsLoading,\n results,\n resultsInfo,\n searchTerm,\n selectedFilters,\n sortOrder,\n } = useSelector((state: AppState) => selectListingProps(state, m));\n\n return {\n currentListing,\n currentPageIndex,\n featured,\n filters,\n isLoading,\n listing,\n pageIsLoading,\n paging,\n results,\n resultsInfo,\n searchTerm,\n selectedFilters,\n sortOrder,\n title: listing.title,\n ...dispatchProps,\n } as ListingProps<SearchResults>;\n};\n\nexport default useListing;\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\n\nimport { Context } from '../models/Enums';\nimport { MinilistProps, UseMinilistProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\n\nimport { triggerSearch } from '../redux/actions';\nimport {\n getResults,\n getIsLoading,\n getFacet,\n getPaging,\n getSearchTerm,\n getFilters,\n} from '../redux/selectors';\n\nconst makeSelectMinilistProps = () =>\n createSelector(\n (state: AppState) => state,\n (_: any, id: string) => id,\n (state: AppState, id: string) => ({\n facet: getFacet(state, id, Context.minilist, 'js'),\n filters: getFilters(state, id, Context.minilist, 'js'),\n isLoading: getIsLoading(state, Context.minilist, id),\n pagingInfo: getPaging(state, id, Context.minilist, 'js'),\n results: getResults(state, id, Context.minilist, 'js'),\n searchTerm: getSearchTerm(state),\n })\n );\n\nconst useMinilist = <SearchResults extends Record<string, any>>(\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 selectMinilistProps = useMemo(makeSelectMinilistProps, [id]);\n\n const { facet, filters, isLoading, pagingInfo, results, searchTerm } =\n useSelector((state: AppState) => selectMinilistProps(state, id));\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 paging: pagingInfo,\n results,\n searchTerm,\n title: facet.title,\n } as MinilistProps<SearchResults>;\n};\n\nexport default useMinilist;\n","import { CustomWhereClause } from '../models/Search';\nimport { Filter, FilterItem, SearchState } from '../models/SearchState';\n\nexport const entries = {\n isLoading: false,\n isError: false,\n items: [],\n};\n\nexport const pagingInfo = {\n isLoading: false,\n pageCount: 0,\n pageIndex: 0,\n pageSize: 0,\n pagesLoaded: [],\n prevPageIndex: 0,\n totalCount: 0,\n};\n\nexport const searchFacet = {\n title: null,\n featuredEntries: entries,\n featuredResults: [],\n entries,\n results: [],\n queryParams: {},\n filters: {},\n queryDuration: 0,\n pagingInfo,\n projectId: '',\n};\n\nexport const searchTab = {\n currentFacet: undefined,\n facets: {},\n id: 0,\n label: undefined,\n totalCount: '',\n};\n\nexport const filtering = {\n isLoading: false,\n isError: false,\n isGrouped: false,\n title: undefined,\n contentTypeId: undefined,\n customWhere: [],\n fieldId: undefined,\n items: [],\n} as Omit<Filter, 'customWhere' | 'items'> & {\n customWhere?: CustomWhereClause[];\n items?: FilterItem[];\n};\n\nexport const filterItem = {\n key: '',\n type: undefined,\n title: undefined,\n path: undefined,\n isSelected: false,\n} as FilterItem;\n\nconst config = {\n isLoaded: false,\n isError: false,\n};\n\nconst searchState: SearchState = {\n context: 'facets',\n currentFacet: '',\n currentListing: '',\n facets: {},\n listings: {},\n minilist: {},\n term: '',\n tabs: [],\n config,\n};\n\nexport const initialState = searchState;\n","import { Draft, produce } from 'immer';\nimport equals from 'deep-equal';\nimport merge from 'deepmerge';\n\nimport { entries, filterItem, searchFacet, initialState } 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 {\n ConfigTypes,\n SearchFacet,\n Listing,\n SearchConfig,\n} from '../models/Search';\nimport { Context } from '../models/Enums';\nimport {\n Facet,\n Facets,\n SearchState,\n Filter,\n Filters,\n FilterItem,\n} from '../models/SearchState';\n\nconst addConfigToState = (state: SearchState, action: any) => {\n const { context, facet, config } = action as {\n context: keyof typeof Context;\n facet: string;\n config: any;\n };\n // Adding or changing the config of a single facet, listing or minilist\n if (context && facet && config) {\n state[context][facet] = { ...searchFacet, ...config };\n } else if (config) {\n // Changing the entire search config\n state = config;\n }\n return state;\n};\n\nconst generateSearchFacets = (context: Context, config: SearchConfig) => {\n const facets = {} as Facets;\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, SearchFacet | Listing]) => {\n const newFacet = merge(searchFacet, facet);\n if (!('isDisabled' in facet) || facet.isDisabled !== true)\n facets[facetName] = newFacet;\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: keyof typeof Context;\n isCurrentFacet: boolean;\n },\n state: SearchState\n) => {\n // Remove filters we know about from params\n const filterParams = {\n ...params,\n facet: undefined,\n orderBy: undefined,\n pageIndex: undefined,\n term: undefined,\n } as { [k: string]: string | undefined };\n\n // Get any existing filters and normalise the items[]\n // so we can start off with isSelected is false\n let filters: [string, Filter][] = Object.entries(\n (state[context][facet].filters || []) as Filters\n ).map(([key, filter]: [string, Filter]) => {\n if (isCurrentFacet || filter.isGrouped) {\n return [\n key,\n {\n ...filter,\n items: filter.items?.map(item => ({ ...item, isSelected: false })),\n } as Filter,\n ];\n }\n return [key, filter];\n });\n\n const addFilterItem = (\n filters: [string, Filter][],\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<[string, Filter]>(([key, filter]) => {\n if (paramKey !== key || (!isCurrentFacet && !filter.isGrouped)) {\n return [key, filter];\n } else {\n const items = (filter.items || []) as FilterItem[];\n const itemIndex = items.findIndex(item => item?.key === paramValue);\n if (items.length > 0 && itemIndex !== -1) {\n items[itemIndex].isSelected = true;\n } else {\n items.push({\n ...filterItem,\n key: paramValue,\n isSelected: true,\n });\n }\n\n return [\n key,\n {\n ...filter,\n items,\n } as Filter,\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 Object.entries(filterParams).map(([paramName = '', paramValue]) => {\n if (typeof paramValue === 'string')\n return paramValue\n .split(',')\n .map(pVal => (filters = addFilterItem(filters, paramName, pVal)));\n if (typeof paramValue === 'boolean')\n filters = addFilterItem(filters, paramName, paramValue);\n });\n\n return Object.fromEntries(filters) as Filters;\n};\n\nconst resetFacets = (state: SearchState, context: keyof typeof Context) =>\n Object.fromEntries(\n Object.entries(state[context] as Facets).map(([k, v]) => [k, resetFacet(v)])\n ) as Facets;\n\nconst resetFacet = (facet: Facet) => {\n facet.pagingInfo.pagesLoaded = [];\n facet.pagingInfo.pageIndex = 0;\n facet.queryDuration = 0;\n return facet;\n};\n\nexport default (config: SearchConfig) => {\n // Add facets from SearchConfig to initialState\n const initState: SearchState = {\n ...initialState,\n tabs: config.tabs as any,\n facets: generateSearchFacets(Context.facets, config),\n listings: generateSearchFacets(Context.listings, config),\n minilist: generateSearchFacets(Context.minilist, config),\n };\n\n return produce(\n (\n state: Draft<SearchState> = initState,\n action: {\n [key: string]: any;\n context: keyof typeof Context;\n facet: string;\n params: { [key: string]: string };\n }\n ) => {\n const context = state.context as keyof typeof Context;\n const current =\n context !== 'listings' ? state.currentFacet : state.currentListing;\n\n switch (action.type) {\n case APPLY_CONFIG: {\n state = addConfigToState(state, action);\n return state;\n }\n case CLEAR_FILTERS: {\n const currentFilters = state[context][current].filters as Filters;\n\n state[context][current].filters = Object.fromEntries(\n Object.entries(currentFilters).map(([key, filter]) => {\n const filterItems = (filter.items || []) as FilterItem[];\n\n filter.items = filterItems.map(item => ({\n ...item,\n isSelected: false,\n })) as FilterItem[];\n\n return [key, filter];\n })\n );\n state[context][current].queryDuration = 0;\n state[context][current].pagingInfo.pagesLoaded = [];\n\n return;\n }\n case EXECUTE_SEARCH: {\n state[action.context][action.facet].entries.isLoading = true;\n return;\n }\n case EXECUTE_SEARCH_ERROR: {\n state[action.context][action.facet].entries = {\n ...entries,\n isError: true,\n error: action.error,\n };\n return;\n }\n case LOAD_FILTERS: {\n const { facetKey, filtersToLoad } = action;\n const filters = state[action.context][facetKey].filters as Filters;\n\n Object.entries(filters).map(([filterKey, filter]) => {\n if (filtersToLoad.find((f: string) => f === filterKey))\n return { ...filter, isLoading: true } as Filter;\n return filter;\n });\n\n state[action.context][facetKey].filters = Object.fromEntries(\n Object.entries(filters).map(([filterKey, filter]) => {\n if (filtersToLoad.find((f: string) => f === filterKey))\n return [filterKey, { ...filter, isLoading: true }];\n return [filterKey, filter];\n })\n );\n\n return;\n }\n case LOAD_FILTERS_ERROR:\n case LOAD_FILTERS_COMPLETE: {\n const { facetKey, filterKey, nextFilter } = action;\n const filter = state[action.context][facetKey].filters[\n filterKey\n ] as Filter;\n\n if (\n !(nextFilter.items && nextFilter.items.length > 0) &&\n (filter.items || []).length >= nextFilter.items.length\n ) {\n // Preserve items already in state\n state[action.context][facetKey].filters[filterKey] = {\n ...filter,\n isLoading: false,\n isError: nextFilter.isError,\n };\n return;\n }\n\n state[action.context][facetKey].filters[filterKey] = merge(\n filter,\n nextFilter,\n {\n arrayMerge: (source, inbound) => inbound,\n }\n );\n\n return;\n }\n case SET_ROUTE_FILTERS: {\n const { facet, params, context } = action;\n const { term = '', pageIndex, orderBy } = params;\n\n const stateTerm = state.term;\n const tabId = state[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 = Object.fromEntries(\n Object.entries(state[context] as Facets).map(\n ([facetName = '', stateFacet]) => {\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.config.isLoaded === true &&\n !equals(nextFilters, stateFacet.filters);\n\n stateFacet = resetCurrentFacet\n ? resetFacet(stateFacet)\n : stateFacet;\n stateFacet.filters = nextFilters;\n stateFacet.queryParams.dynamicOrderBy = toArray(orderBy) || [];\n return [facetName, stateFacet];\n }\n )\n );\n\n state.context = context;\n state[context] = nextFacets;\n state[\n action.context === Context.facets\n ? 'currentFacet'\n : 'currentListing'\n ] = facet;\n state.term = term;\n state.tabs[tabId].currentFacet = facet;\n state[context][facet].pagingInfo.pageIndex =\n Number(pageIndex) - 1 ||\n (state[context][facet].queryParams.loadMorePaging\n ? state[context][facet].pagingInfo.pageIndex || 0\n : 0);\n state.config.isLoaded = true;\n state.config.ssr = typeof window === 'undefined';\n\n if (resetAllFacets) state[context] = resetFacets(state, context);\n\n return;\n }\n case SET_SEARCH_ENTRIES: {\n const thisContext = action.context || context;\n const currentFacet = state[thisContext][action.facet];\n state[thisContext][action.facet] = merge(\n currentFacet,\n action.nextFacet,\n {\n arrayMerge: (source, inbound) => inbound,\n }\n );\n return;\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 =\n state[action.context || Context.minilist][action.facet].queryParams\n .useSearchTerm || false;\n state[action.context || Context.minilist][action.facet].filters =\n filters;\n state[action.context || Context.minilist][\n action.facet\n ].queryParams.excludeIds = action.excludeIds;\n state.term = useSearchTerm ? term : state.term;\n state.config.ssr = typeof window === 'undefined';\n\n return;\n }\n case UPDATE_PAGE_INDEX: {\n const { pageIndex } = action;\n const internalPaging =\n state[context][current].queryParams.internalPaging || false;\n\n const currentPageIndex =\n state[context][current].pagingInfo.pageIndex || 0;\n\n state[context][current].pagingInfo.pageIndex = Number(pageIndex) || 0;\n state[context][current].pagingInfo.prevPageIndex = currentPageIndex;\n state[context][current].pagingInfo.isLoading = true;\n\n if (internalPaging) return;\n\n state[context][current].queryDuration = 0;\n return;\n }\n case UPDATE_SEARCH_TERM: {\n state.term = action.term;\n state[context] = resetFacets(state, context);\n\n return;\n }\n case UPDATE_SELECTED_FILTERS: {\n const { filter, key, isUnknownItem } = action;\n\n const isSingleSelect =\n state[context][current].filters[filter].isSingleSelect || false;\n const isGrouped =\n state[context][current].filters[filter].isGrouped || false;\n\n const currentItems = state[context][current].filters[filter].items;\n if (isGrouped) state[context] = resetFacets(state, context);\n state[context][current] = resetFacet(state[context][current]);\n\n if (\n isUnknownItem &&\n currentItems?.findIndex(item => item?.key === key) === -1\n ) {\n currentItems?.push({\n key,\n isSelected: false,\n });\n }\n state[context][current].filters[filter].items = currentItems?.map(\n item => {\n if (item.key === key) {\n return { ...item, isSelected: !item.isSelected };\n }\n if (isSingleSelect) return { ...item, isSelected: false };\n return item;\n }\n );\n\n return;\n }\n case UPDATE_SORT_ORDER: {\n const { orderBy, facet } = action;\n state[context] = resetFacets(state, context);\n const currentFacet = facet || current;\n state[context][currentFacet].queryParams.dynamicOrderBy = orderBy\n ? toArray(orderBy) || []\n : [];\n\n return;\n }\n default:\n return;\n }\n },\n initState\n );\n};\n","export 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 useListing } from './hooks/useListing.hook';\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","React","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","isUnknownItem","updateSortOrder","orderBy","Context","makeFromJS","returnType","globalThis","STATE_TYPE","immutable","fromJSOrdered","fromJS","v","getImmutableOrJS","stateKey","fallbackValue","get","getIn","Array","isArray","result","jpath","join","undefined","getSearchContext","facets","getCurrent","getCurrentFacet","getCurrentListing","getCurrentTab","getFacets","getTabFacets","fromEntries","getFacetTitles","map","title","totalCount","pagingInfo","getFacet","facetName","currentFacet","getListing","listing","currentListing","listings","getFilters","getRenderableFilters","f","renderable","getFiltersToLoad","filters","loadedFilters","items","i","length","isError","filterKey","isLoaded","getSelectedFilters","isoDateRegex","RegExp","selectedFilters","item","isSelected","isIsoDate","test","toLowerCase","getResults","current","getIsInternalPaging","getIsLoaded","getIsLoading","getIsSsr","getFeaturedResults","getPaging","getPageIndex","getPrevPageIndex","getPageIsLoading","getPagesLoaded","getTotalCount","getSearchTerm","getSearchTabs","getQueryParams","getQueryParameter","ifnull","getCustomApi","getCustomEnv","getTabsAndFacets","tabs","tabsAndFacets","tab","fieldsToCount","countFields","thisTabFacets","thisTabTotal","find","a","b","getSearchTotalCount","wholeSearchTotal","t","getFacetsTotalCount","selectFacets","selectListing","selectCurrentPath","selectCurrentProject","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","size","node","remove","setHead","set","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","cachedSearch","now","Date","performance","fixFreeTextForElastic","s","illegalChars","illegalRegEx","c","replace","timedSearch","duration","start","payload","end","getItemsFromResult","extractQuotedPhrases","pattern","match","buildUrl","route","qs","callCustomApi","customApi","apiUri","uri","Error","startsWith","response","fetch","json","removeEmptyAttributes","obj","forEach","val","toArray","seperator","areArraysEqualSets","a1","a2","superSet","ai","e","DataFormats","asset","entry","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","contentTypeIdExpression","contentTypeIds","webpageTemplates","assetTypes","expressions","push","dataFormatExpression","filterExpressions","selectedFilter","logicOperator","values","fieldOperator","fieldExpressions","expr","not","withContentTypeIds","notContentTypeIds","substring","andExpr","and","dataFormatExpr","withExpr","notExpr","add","featuredResultsExpression","fieldValue","languagesExpression","languages","includeInSearchExpressions","includeInSearchFields","includeInSearchField","exists","equalTo","defaultExpressions","excludeIdsExpression","orderByExpression","expression","OrderBy","ob","desc","asc","in","innerValue","handle","betweenValue","valArr","minimum","maximum","console","log","bc","op","customWhereExpressions","where","clause","keys","idx","k","includes","recurseExpr","notKey","notIdx","innerOperator","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","merge","hash","mapStateToSearchUri","mapJson","mapEntriesToSearchResults","mapperFunc","facetTemplate","nextFacet","featuredEntries","featuredResult","queryDuration","pageCount","$path","$default","pagesLoaded","$formatting","loaded","isNaN","l","sort","prevPageIndex","preloaded","prevResults","loadMorePaging","queryParams","nextResults","r","_pageIndex","_pagePosition","loadedPages","firstResultSet","secondResultSet","onlyResultSet","preload","ogState","filterTemplate","facetKey","nextFilter","selectedKeys","error","$disable","filterExpressionMapper","expressionType","mapFilterToFilterExpression","mapFiltersToFilterExpression","fkey","selectedValues","queryParamsTemplate","root","filterParams","internalPageIndex","internalPaging","minilist","deduped","findIndex","mapStateToQueryParams","sourceJson","generateQueryParams","runSearch","ssr","willRun","facetIsLoaded","stateParams","filterParamsChanged","param","queryParam","paramsChanged","inboundValues","debugExecuteSearch","base","mapEntriesToFilterItems","template","mapEntry","searchSagas","takeEvery","doSearch","loadFilters","preloadOtherFacets","applySearchFilter","setRouteFilters","listingType","select","defaultFacet","nextAction","put","call","ensureSearch","filtersToLoad","filtersToLoadSagas","loadFilter","filterItems","all","createStateFrom","mapSearchResultToState","executeSearch","stack","featuredQuery","apiParams","fi","allFacets","otherFacets","preloadFacet","preloadAction","tabId","updateCurrentFacetAction","buildUri","mapUri","makeSelectListingProps","createSelector","_","useListing","dispatch","useDispatch","m","defaultMappers","selectListingProps","useMemo","dispatchProps","useSelector","makeSelectMinilistProps","useMinilist","selectMinilistProps","useEffect","searchFacet","searchTab","label","filtering","isGrouped","filterItem","searchState","initialState","addConfigToState","generateSearchFacets","thisConfig","newFacet","isDisabled","generateFiltersState","isCurrentFacet","addFilterItem","paramKey","paramValue","itemIndex","paramName","pVal","resetFacets","resetFacet","initState","produce","currentFilters","arrayMerge","source","inbound","stateTerm","resetAllFacets","resetCurrentFacet","nextFacets","stateFacet","nextFilters","equals","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/getIn.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/filter-to-filterexpression.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpressions.mapper.ts","../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.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/sagas.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/index.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/hooks/useFacets.hook.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/hooks/useListing.hook.tsx","../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 import/default */\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 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 = (\n filter: string,\n key: string,\n isUnknownItem = false\n) => {\n return {\n type: UPDATE_SELECTED_FILTERS,\n filter,\n key,\n isUnknownItem,\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 { jpath } from 'jsonpath-mapper';\n\n// Find a fromJS function from global that is dynamically loaded in createStore\n// or replace with a stub function for non-immutable gets\nexport const makeFromJS = (\n returnType: 'immutable' | 'js' = (globalThis as any).STATE_TYPE || 'immutable'\n) =>\n returnType === 'immutable'\n ? (globalThis as any).immutable?.fromJSOrdered ||\n (globalThis as any).immutable?.fromJS ||\n ((v: any) => v)\n : (v: any) => v;\n\nconst getImmutableOrJS = <\n S extends Record<string, unknown>,\n T extends keyof S | any\n>(\n state: S,\n stateKey: T | T[],\n fallbackValue?: any,\n returnType: 'immutable' | 'js' = (globalThis as any).STATE_TYPE || 'immutable'\n) => {\n // Find a fromJS function from global that is dynamically loaded in createStore\n // or replace with a stub function for non-immutable gets\n const fromJS = makeFromJS(returnType);\n\n if (\n state &&\n 'get' in state &&\n typeof state.get === 'function' &&\n 'getIn' in state &&\n typeof state.getIn === 'function' &&\n 'toJS' in state &&\n typeof state.toJS === 'function'\n ) {\n if (Array.isArray(stateKey))\n return fromJS(state.getIn(stateKey, fallbackValue));\n return fromJS(state.get(stateKey, fallbackValue)) as S[T | any];\n }\n\n if (Array.isArray(stateKey) && state && typeof state === 'object') {\n const result = jpath(stateKey.join('.'), state);\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n }\n\n const result =\n state && typeof state === 'object' ? state[stateKey as string] : undefined;\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n};\n\nexport default getImmutableOrJS;\n","import { Context } from '../models/Enums';\nimport { QueryParams as QueryParams2 } from '../models/Queries';\nimport { CustomApi, QueryParams } from '../models/Search';\nimport {\n AppState,\n Facet,\n Facets,\n Filters,\n Paging,\n SelectedFilters,\n Tab,\n TabAndFacets,\n} from '../models/SearchState';\nimport getIn, { makeFromJS } from './getIn';\n\ntype StateType = 'immutable' | 'js';\n\nexport const getSearchContext = (state: AppState): Context =>\n getIn(state, ['search', 'context'], Context.facets);\n\nexport const getCurrent = (state: AppState, context = Context.facets) =>\n context === Context.facets\n ? getCurrentFacet(state)\n : getCurrentListing(state);\n\nexport const getCurrentFacet = (state: AppState): string =>\n getIn(state, ['search', 'currentFacet']);\n\nexport const getCurrentListing = (state: AppState): string =>\n getIn(state, ['search', 'currentListing']);\n\nexport const getCurrentTab = (state: AppState): number =>\n getIn(state, ['search', Context.facets, getCurrentFacet(state), 'tabId'], 0);\n\nexport const getFacets = (state: AppState, returnType?: StateType): Facets =>\n getIn(state, ['search', Context.facets], {}, returnType);\n\nexport const getTabFacets = (state: AppState) =>\n Object.fromEntries(\n Object.entries(getFacets(state, 'js')).filter(\n ([key]) =>\n getIn(getFacets(state), [key, 'tabId'], 0) === getCurrentTab(state)\n )\n );\n\nexport const getFacetTitles = (state: AppState) =>\n Object.entries(getFacets(state, 'js')).map(([key, facet = {}]) => ({\n key,\n title: facet.title as string | undefined,\n totalCount: facet.pagingInfo?.totalCount as number,\n }));\n\nexport const getFacet = (\n state: AppState,\n facetName = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n const currentFacet = facetName || getCurrentFacet(state);\n return getIn(\n state,\n ['search', context, currentFacet],\n {},\n returnType\n ) as Facet;\n};\n\nexport const getListing = (state: AppState, listing = '') => {\n const currentListing = listing || getCurrentListing(state);\n return getIn(\n state,\n ['search', Context.listings, currentListing],\n {}\n ) as Facet;\n};\n\nexport const getFilters = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n): Filters => {\n return getIn(\n state,\n ['search', context, facet || getCurrent(state, context), 'filters'],\n {},\n returnType\n );\n};\n\nexport const getRenderableFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n): Filters =>\n Object.fromEntries(\n Object.entries(getFilters(state, facet, context, 'js')).filter(\n ([, f = {}]) => (typeof f.renderable !== 'boolean' ? true : f.renderable)\n )\n );\n\nexport const getFiltersToLoad = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n) => {\n const filters = getFilters(state, facet, context, returnType);\n const loadedFilters = Object.entries(filters).map(([key, f = {}]) => [\n key,\n (f.items || []).filter(i => {\n const title = i?.title;\n return typeof title !== 'undefined' && !!title;\n }).length > 0 && (f.isError || false) === false,\n ]);\n return loadedFilters\n .map(([filterKey, isLoaded]) => (!isLoaded ? filterKey : null))\n .filter(f => !!f) as string[];\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 returnType?: StateType\n): SelectedFilters => {\n const filters = getFilters(state, facet, context, 'js');\n const isoDateRegex = RegExp(/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d/);\n\n const selectedFilters = Object.fromEntries(\n Object.entries(filters).map(([key, filter = {}]) => [\n key,\n (filter.items || [])\n .filter(item => !!(item.isSelected || false))\n .map(item => {\n const key = item?.key || '';\n const isIsoDate = isoDateRegex.test(key);\n return isIsoDate\n ? key\n : typeof key.toLowerCase !== 'undefined'\n ? key.toLowerCase()\n : key;\n }),\n ])\n );\n const fromJS = makeFromJS(returnType);\n return fromJS(selectedFilters);\n};\n\nexport const getResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'results'],\n [],\n returnType\n ) as any[];\n};\n\nexport const getIsInternalPaging = (\n state: AppState,\n current: string,\n context = Context.facets\n): boolean => {\n return getIn(\n state,\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 !!getIn(\n state,\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): boolean => {\n return getIn(state, [\n 'search',\n context,\n facet || getCurrent(state, context),\n 'entries',\n 'isLoading',\n ]);\n};\n\nexport const getIsSsr = (state: AppState): boolean =>\n getIn(state, ['search', 'config', 'ssr'], false);\n\nexport const getFeaturedResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n [],\n returnType\n ) as any[];\n};\n\nexport const getPaging = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n): Paging => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'pagingInfo'],\n {},\n returnType\n );\n};\n\nexport const getPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\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): number => {\n return getIn(state, [\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): boolean => {\n return getIn(state, [\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): number[] => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pagesLoaded',\n ],\n [],\n 'js'\n );\n};\n\nexport const getTotalCount = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'totalCount',\n ]);\n};\n\nexport const getSearchTerm = (state: AppState): string =>\n getIn(state, ['search', 'term']);\n\nexport const getSearchTabs = (state: AppState, returnType?: StateType): Tab[] =>\n getIn(state, ['search', 'tabs'], [], returnType);\n\nexport const getQueryParams = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'queryParams'],\n {},\n 'js'\n ) as Record<string, any>;\n};\n\nexport const getQueryParameter = <\n K extends keyof QueryParams,\n K2 extends keyof QueryParams2\n>(\n {\n state,\n facet,\n context = Context.facets,\n }: { state: AppState; facet?: string; context?: Context },\n key: K | K2,\n ifnull: any = null\n): QueryParams[K] | QueryParams2[K2] => {\n return getIn(getQueryParams(state, facet, context), key, ifnull, 'js');\n};\n\nexport const getCustomApi = (\n state: AppState,\n current: string,\n context = Context.facets,\n returnType?: StateType\n): CustomApi => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'customApi'],\n null,\n returnType\n );\n};\n\nexport const getCustomEnv = (\n state: AppState,\n current: string,\n context = Context.facets\n) => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'env',\n ]);\n};\n\nexport const getTabsAndFacets = (state: AppState, returnType?: StateType) => {\n const tabs = getSearchTabs(state, 'js');\n const facets = getFacets(state, 'js');\n\n const tabsAndFacets = (tabs || []).map((tab = {} as Tab) => {\n const fieldsToCount = tab.totalCount;\n let countFields: string[][];\n\n if (typeof fieldsToCount === 'string') countFields = [[fieldsToCount]];\n\n const thisTabFacets = Object.entries(facets).filter(\n ([key]) => getIn(facets, [key, 'tabId'], 0) === tab.id\n ) as [string, Facet][];\n\n const thisTabTotal = thisTabFacets\n .map(([facetName, facet = {}]) => {\n if (!countFields || countFields.find((f = []) => f?.[0] === facetName))\n return getIn(facet, ['pagingInfo', 'totalCount']);\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n return {\n ...tab,\n [Context.facets]: Object.fromEntries(thisTabFacets),\n totalCount: thisTabTotal,\n } as TabAndFacets;\n });\n\n const fromJS = makeFromJS(returnType);\n return fromJS(tabsAndFacets);\n};\n\nexport const getSearchTotalCount = (state: AppState) => {\n const tabsAndFacets = getTabsAndFacets(state, 'js');\n const wholeSearchTotal = tabsAndFacets\n .map((t = {} as TabAndFacets) => t.totalCount)\n .reduce((a: number, b: number) => a + b, 0);\n return wholeSearchTotal;\n};\n\nexport const getFacetsTotalCount = (state: AppState) => {\n const facets = getFacets(state);\n const wholeSearchTotal = Object.entries(facets)\n .map(([, t = {}]) => t.pagingInfo?.totalCount || 0)\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: keyof QueryParams | keyof QueryParams2,\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, 'js'),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings, 'js'),\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, 'js'),\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: keyof QueryParams | keyof QueryParams2,\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, 'js'),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings, 'js'),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n getIn(state, ['routing', 'currentPath']);\n\nexport const selectCurrentProject = (state: AppState) =>\n getIn(state, ['routing', 'currentProject']);\n\nexport const selectVersionStatus = (state: AppState) =>\n getIn(state, ['version', 'contensisVersionStatus']);\n","// eslint-disable-next-line import/default\nimport 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 getSelectedFilters,\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\nconst withSearch =\n (mappers: Mappers) =>\n <Props extends Record<string, 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 selectedFilters: getSelectedFilters(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: (\n filter: string,\n key: string,\n isUnknownItem = false\n ) =>\n withMappers(updateSelectedFilters(filter, key, isUnknownItem), 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 */\n// eslint-disable-next-line import/default\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 { getSelectedFilters, 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<string, any>>(ListingComponent: React.FC<Props>) => {\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 selectedFilters: getSelectedFilters(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: (\n filter: string,\n key: string,\n isUnknownItem = false\n ) =>\n withMappers(updateSelectedFilters(filter, key, isUnknownItem), 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","// eslint-disable-next-line import/default\nimport { stringify } from 'query-string';\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 return payload as any;\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 = stringify(params) as string;\n const path = qs ? `${route}?${qs}` : route;\n return path;\n};\n\nexport const callCustomApi = async <T>(\n customApi: CustomApi,\n filters: { [key: string]: string }\n): Promise<T> => {\n const apiUri = customApi.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 | null, seperator = ',') =>\n typeof obj === 'undefined' || obj === null\n ? obj\n : Array.isArray(obj)\n ? (obj as string[])\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, FilterExpression } 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 || (Array.isArray(value) && value.length === 0))\n 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\n if (operator === 'between') return between(field, value);\n if (Array.isArray(value)) return equalToOrIn(field, value, operator);\n else\n return !weight\n ? equalToOrIn(field, value, operator)\n : [equalToOrIn(field, value, operator)[0].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 = (filters: FilterExpression[]) => {\n if (!filters) return [];\n const expressions: IExpression[] = [];\n filters.map(selectedFilter => {\n if (selectedFilter.logicOperator === 'and')\n // using 'and' logic operator we loop through each filter\n // and loop through all values to add an expression for each filter value\n selectedFilter.values.forEach(value =>\n expressions.push(\n ...fieldExpression(\n selectedFilter.key,\n value,\n selectedFilter.fieldOperator || 'equalTo'\n )\n )\n );\n else if (selectedFilter.logicOperator === 'not') {\n const fieldExpressions = fieldExpression(\n selectedFilter.key,\n selectedFilter.values,\n selectedFilter.fieldOperator || 'in'\n );\n fieldExpressions.forEach(expr => {\n expressions.push(Op.not(expr));\n });\n }\n // using 'or' logic operator we loop over each filter\n // and simply add the array of values to an expression with an 'in' operator\n else\n expressions.push(\n ...fieldExpression(\n selectedFilter.key,\n selectedFilter.values,\n selectedFilter.fieldOperator || 'in'\n )\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 && withExpr) andExpr.add(withExpr);\n if (notContentTypeIds.length > 0 && notExpr) 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 (operator === 'equalTo' || operator === 'in')\n return [Op.in(field, ...value)];\n return [\n Op.or(\n ...value.map(innerValue => {\n switch (operator) {\n case 'between':\n case 'distanceWithin':\n // Not implemented\n return Op.equalTo(field, innerValue);\n case 'exists':\n return Op.exists(field, innerValue as any);\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return Op[operator](field, innerValue, false, undefined);\n default:\n return Op[operator](field, innerValue);\n }\n })\n ),\n ];\n }\n switch (operator) {\n case 'between':\n case 'distanceWithin':\n // Not implemented\n return [Op.equalTo(field, value)];\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return [Op[operator](field, value, false, undefined)];\n default:\n return [Op[operator](field, value)];\n }\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] = valArr;\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\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 op = handle(value);\n return op ? [op] : [];\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 '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 =\n innerOperator === 'between'\n ? Op.not(\n Op[innerOperator](\n innerField,\n innerValue[0],\n innerValue[1]\n )\n )\n : 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 : operator === 'exists'\n ? Op[operator](field, value)\n : operator === 'between'\n ? Op[operator](field, value[0], value[1])\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 merge from 'deepmerge';\n// eslint-disable-next-line import/default\nimport { parse, stringify } from 'query-string';\nimport mapJson from 'jsonpath-mapper';\n\nimport getIn from '../redux/getIn';\nimport {\n getSelectedFilters,\n getSearchTerm,\n getCurrentFacet,\n getSearchContext,\n selectCurrentPath,\n} from '../redux/selectors';\nimport { removeEmptyAttributes } from '../search/util';\n\nimport { Context } from '../models/Enums';\nimport { NavigateMapper, SearchUriMapping } from '../models/Search';\nimport { AppState } from '../models/SearchState';\n\nconst searchUriTemplate: SearchUriMapping = {\n path: ({ state, facet, pageIndex }) => {\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 }) => {\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 ? {}\n : Object.fromEntries(\n Object.entries(\n getSelectedFilters(state, facet, searchContext, 'js')\n ).map(([key, f]) => [key, f?.join(',')])\n );\n const currentSearch =\n !term && getIn(state, ['routing', 'location', 'search']);\n const currentQs = removeEmptyAttributes(parse(currentSearch));\n\n if (orderBy) currentQs.orderBy = orderBy;\n\n const searchTerm = getSearchTerm(state);\n // Merge the stateFilters with any current qs to build the new qs\n const mergedSearch = removeEmptyAttributes({\n ...merge(currentQs, stateFilters),\n term: searchTerm,\n });\n\n return stringify(mergedSearch);\n },\n hash: (state: AppState) =>\n getIn(state, ['routing', 'location', 'hash'], '').replace('#', ''),\n};\n\nconst mapStateToSearchUri: NavigateMapper = params =>\n mapJson(params, searchUriTemplate);\n\nexport default mapStateToSearchUri;\n","import { default as mapSearchResultToState } from 'jsonpath-mapper';\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 = [...(pagesLoaded || [])];\n if (isNaN(loaded.find(l => l === pageIndex) as any)) {\n loaded.push(pageIndex);\n }\n return loaded.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 = 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.length === 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';\nimport { FilterExpression } from '../models/Queries';\nimport { Filter } from '../models/SearchState';\n\nconst filterExpressionMapper = {\n // Expression type: so we can identify how to build the query\n expressionType: ({ contentTypeId }: Filter) =>\n contentTypeId\n ? FilterExpressionTypes.contentType\n : FilterExpressionTypes.field,\n // Key: so we can target the query to a specific field\n key: 'fieldId',\n // Value: so we can filter a specific field by an array of values\n // e.g. taxonomy key or contentTypeId array\n values: 'selectedValues',\n fieldOperator: 'fieldOperator',\n logicOperator: 'logicOperator',\n};\n\nconst mapFilterToFilterExpression = (\n filter: Filter & { selectedValues: string[] }\n) => mapJson(filter, filterExpressionMapper) as FilterExpression;\n\nexport default mapFilterToFilterExpression;\n","import mapFilterToFilterExpression from './filter-to-filterexpression.mapper';\n\nimport { FilterExpression } from '../models/Queries';\nimport { Filters, SelectedFilters } from '../models/SearchState';\n\nexport const mapFiltersToFilterExpression = (\n filters: Filters,\n selectedFilters: SelectedFilters\n) => {\n if (!selectedFilters || Object.keys(selectedFilters).length === 0) return [];\n const filterExpressions: FilterExpression[] = [];\n\n // Iterate through the keys in selectedFilters and locate\n // the items that are selected and queryable\n Object.entries(selectedFilters).map(([fkey, selectedValues]) => {\n const filter = filters[fkey];\n if (selectedValues && filter) {\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 selectedValues,\n });\n filterExpressions.push(expr);\n }\n });\n return filterExpressions;\n};\n","import mapJson from 'jsonpath-mapper';\n\nimport {\n getFacet,\n getSelectedFilters,\n getQueryParameter,\n getSearchTerm,\n getPageIndex,\n getFilters,\n getCustomEnv,\n getPrevPageIndex,\n getPagesLoaded,\n selectCurrentProject,\n selectVersionStatus,\n} from '../redux/selectors';\nimport { mapFiltersToFilterExpression } from './filters-to-filterexpressions.mapper';\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', []),\n contentTypeIds: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'contentTypeIds', []),\n customWhere: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'customWhere', []),\n dynamicOrderBy: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'dynamicOrderBy', []),\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', []),\n filters: ({ state, facet, context }: QueryParamsMapperParams) => {\n const stateFilters = getFilters(state, facet, context, 'js');\n const selectedFilters = getSelectedFilters(state, facet, context, 'js');\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', []),\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', []),\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\n ? getPageIndex(state, action.facet, action.context)\n : 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)?.projectId || selectCurrentProject(state),\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 Object.fromEntries(\n Object.entries(getSelectedFilters(state, facet, context, 'js')).map(\n ([key, f]) => [key, f?.join(',')]\n )\n ),\n versionStatus: ({ state }: QueryParamsMapperParams) =>\n selectVersionStatus(state),\n weightedSearchFields: (root: QueryParamsMapperParams) => {\n const wsf = getQueryParameter(\n root,\n 'weightedSearchFields',\n []\n ) as WeightedSearchField[];\n const deduped = wsf.filter(\n (v, i, a) => a.findIndex(t => t.fieldId === v.fieldId) === i\n );\n return deduped;\n // return wsf;\n },\n webpageTemplates: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'webpageTemplates', []),\n};\n\nconst mapStateToQueryParams = (sourceJson: QueryParamsMapperParams) =>\n mapJson(sourceJson, queryParamsTemplate) 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 {AppState} 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 = {\n ...getQueryParams(ogState, facet, context),\n } 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 'js'\n ) 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 = {\n ...getQueryParams(action.ogState || state, action.facet, action.context),\n pageIndex: getPageIndex(\n action.ogState || state,\n action.facet,\n action.context\n ),\n searchTerm: getSearchTerm(action.ogState || state),\n } as QueryParams;\n console.log(stateParams, queryParams);\n\n console.log(\n 'getSelectedFilters',\n getSelectedFilters(\n action.ogState || state,\n action.facet,\n action.context,\n 'js'\n ),\n 'params',\n action.params\n );\n};\n","import { default as mapEntry } from 'jsonpath-mapper';\nimport { FilterItemsMapper } from '../models/Search';\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: FilterItemsMapper = 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 as any;\n });\n};\n\nexport default mapEntriesToFilterItems;\n","import * as log from 'loglevel';\nimport { takeEvery, put, select, call, all } from 'redux-saga/effects';\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 { generateQueryParams, debugExecuteSearch } from './util';\nimport mapEntriesToFilterItems from '../transformations/entry-to-filteritem.mapper';\nimport { AppState, Facet, Filter } from '../models/SearchState';\nimport {\n ApplySearchFilterAction,\n ClearFiltersAction,\n EnsureSearchAction,\n ExecuteSearchAction,\n InitListingAction,\n LoadFiltersCompleteAction,\n LoadFiltersSearchResults,\n SearchResults,\n SetRouteFiltersOptions,\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\nconst toJS = (obj: any) =>\n obj && 'toJS' in obj && typeof obj.toJS === 'function' ? obj.toJS() : obj;\n\nexport function* setRouteFilters(\n action: InitListingAction | SetRouteFiltersOptions\n) {\n const { mappers, params, listingType, defaultLang, debug } = action;\n const context = listingType ? Context.listings : Context.facets;\n const state: AppState = toJS(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, 'js');\n currentFacet =\n tabs?.[0].defaultFacet || Object.keys(getFacets(state, 'js'))?.[0] || '';\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 // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\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 });\n}\n\nexport function* doSearch(action: TriggerSearchAction) {\n const state: AppState = toJS(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 facet: action.facet || action.params?.facet,\n } as InitListingAction;\n\n if (\n nextAction.facet &&\n (action.config ||\n Object.keys(getFacet(state, nextAction.facet, action.context, 'js'))\n .length > 0)\n ) {\n yield put(nextAction);\n\n // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\n\n yield call(ensureSearch, { ...nextAction, ogState });\n }\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 'js'\n )) as string[];\n if (filtersToLoad.length > 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 'js'\n )) as {\n [k: string]: string[];\n };\n const facet = (yield select(getFacet, facetKey, context, 'js')) as Facet;\n const filters = facet.filters || {};\n const projectId = facet.projectId;\n\n const filtersToLoadSagas =\n filters &&\n filtersToLoad.map((filterKey = '') => {\n return call(loadFilter, {\n facetKey,\n filterKey,\n filter: filters[filterKey],\n projectId,\n selectedKeys: selectedKeys[filterKey],\n context,\n mapper:\n ('filterItems' in mappers && mappers.filterItems) ||\n mapEntriesToFilterItems,\n } as LoadFilterAction);\n });\n if (filtersToLoadSagas) yield all(filtersToLoadSagas);\n }\n}\n\ntype LoadFilterAction = {\n facetKey: string;\n filterKey: string;\n filter: Filter;\n projectId: string;\n selectedKeys: 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 } = filter 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 = {\n ...action,\n ogState: action.ogState || { search: state.search },\n };\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 // eslint-disable-next-line import/namespace\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, 'js');\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, 'js'),\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 // eslint-disable-next-line import/namespace\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, 'js');\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, 'js');\n const tabs = getSearchTabs(state, 'js');\n let nextFacet = tabs?.[id].currentFacet;\n if (!nextFacet) {\n Object.entries(facets).map(([facetName, facet]) => {\n if (facet.tabId === id && tabs?.[id].defaultFacet === facetName)\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 = Object.entries(facets).filter(([, f]) => f.tabId === id)[0][0];\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?.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 { Mappers } from '../models/Search';\nimport mapStateToSearchUri from './state-to-searchuri';\n\nexport default {\n results: entries => entries,\n navigate: mapStateToSearchUri,\n} as Mappers;\n","import { useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport {\n clearFilters,\n updateCurrentFacet,\n updateCurrentTab,\n updatePageIndex,\n updateSearchTerm,\n updateSelectedFilters,\n updateSortOrder,\n withMappers,\n} from '../redux/actions';\nimport defaultMappers from '../transformations';\nimport { Context } from '../models/Enums';\nimport { SearchProps, UseFacetsProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\nimport {\n getPaging,\n getResults,\n getSelectedFilters,\n selectFacets,\n} from '../redux/selectors';\nimport { Mappers } from '../models/Search';\nconst {\n getCurrent,\n getCurrentTab,\n getFacet,\n getFacetsTotalCount,\n getFacetTitles,\n getFeaturedResults,\n getIsLoading,\n getPageIndex,\n getPageIsLoading,\n getQueryParameter,\n getRenderableFilters,\n getSearchTerm,\n getSearchTotalCount,\n getTabFacets,\n getTabsAndFacets,\n getTotalCount,\n} = selectFacets;\n\nconst makeSelectFacetsProps = () =>\n createSelector(\n (state: AppState) => state,\n (_: any, mappers: Mappers) => mappers,\n (state: AppState, mappers: Mappers) => ({\n currentFacet: getCurrent(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 featured: getFeaturedResults(state),\n filters: getRenderableFilters(state),\n isLoading: getIsLoading(state),\n pageIsLoading: getPageIsLoading(state),\n paging: getPaging(state, '', Context.facets, 'js'),\n results: getResults(state, '', Context.facets, 'js'),\n resultsInfo:\n mappers &&\n typeof mappers.resultsInfo === 'function' &&\n mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n searchTotalCount: getSearchTotalCount(state),\n selectedFilters: getSelectedFilters(state, '', Context.facets, 'js'),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n tabsAndFacets: getTabsAndFacets(state),\n totalCount: getTotalCount(state),\n })\n );\n\nconst useFacets = <SearchResults extends Record<string, any>>(\n { mappers }: UseFacetsProps = {\n id: '',\n }\n) => {\n const dispatch = useDispatch();\n\n const m = mappers || defaultMappers;\n\n const selectListingProps = useMemo(makeSelectFacetsProps, [m]);\n\n const dispatchProps = {\n clearFilters: () => dispatch(withMappers(clearFilters(), m)),\n updateCurrentFacet: (facet: string) =>\n dispatch(withMappers(updateCurrentFacet(facet), m)),\n updateCurrentTab: (id: number) => withMappers(updateCurrentTab(id), m),\n updatePageIndex: (pageIndex: number) =>\n dispatch(withMappers(updatePageIndex(pageIndex), m)),\n updateSearchTerm: (term: string) =>\n dispatch(withMappers(updateSearchTerm(term), m)),\n updateSelectedFilters: (\n filter: string,\n key: string,\n isUnknownItem = false\n ) =>\n dispatch(\n withMappers(updateSelectedFilters(filter, key, isUnknownItem), m)\n ),\n updateSortOrder: (orderBy: string) =>\n dispatch(withMappers(updateSortOrder(orderBy), m)),\n };\n\n const {\n currentFacet,\n currentPageIndex,\n currentTabIndex,\n facet,\n facets,\n facetsTotalCount,\n facetTitles,\n featured,\n filters,\n isLoading,\n paging,\n pageIsLoading,\n results,\n resultsInfo,\n searchTerm,\n searchTotalCount,\n selectedFilters,\n sortOrder,\n tabsAndFacets,\n totalCount,\n } = useSelector((state: AppState) => selectListingProps(state, m));\n\n return {\n currentFacet,\n currentPageIndex,\n currentTabIndex,\n facet,\n facets,\n facetsTotalCount,\n facetTitles,\n featured,\n filters,\n isLoading,\n paging,\n pageIsLoading,\n results,\n resultsInfo,\n searchTerm,\n searchTotalCount,\n selectedFilters,\n sortOrder,\n tabsAndFacets,\n totalCount,\n ...dispatchProps,\n } as SearchProps<SearchResults>;\n};\n\nexport default useFacets;\n","import { useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport {\n clearFilters,\n updateCurrentFacet,\n updatePageIndex,\n updateSearchTerm,\n updateSelectedFilters,\n updateSortOrder,\n withMappers,\n} from '../redux/actions';\nimport defaultMappers from '../transformations';\nimport { Context } from '../models/Enums';\nimport { ListingProps, UseListingProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\nimport {\n getPaging,\n getResults,\n getSelectedFilters,\n selectListing,\n} from '../redux/selectors';\nimport { Mappers } from '../models/Search';\nconst {\n getCurrent,\n getFeaturedResults,\n getIsLoading,\n getListing,\n getPageIndex,\n getPageIsLoading,\n getQueryParameter,\n getRenderableFilters,\n getSearchTerm,\n} = selectListing;\n\nconst makeSelectListingProps = () =>\n createSelector(\n (state: AppState) => state,\n (_: any, mappers: Mappers) => mappers,\n (state: AppState, mappers: Mappers) => ({\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 pageIsLoading: getPageIsLoading(state),\n paging: getPaging(state, '', Context.listings, 'js'),\n results: getResults(state, '', Context.listings, 'js'),\n resultsInfo:\n mappers &&\n typeof mappers.resultsInfo === 'function' &&\n mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n selectedFilters: getSelectedFilters(state, '', Context.listings, 'js'),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n })\n );\n\nconst useListing = <SearchResults extends Record<string, any>>(\n { mappers }: UseListingProps = {\n id: '',\n }\n) => {\n const dispatch = useDispatch();\n\n const m = mappers || defaultMappers;\n\n const selectListingProps = useMemo(makeSelectListingProps, [m]);\n\n const dispatchProps = {\n clearFilters: () => dispatch(withMappers(clearFilters(), m)),\n updateCurrentFacet: (facet: string) =>\n dispatch(withMappers(updateCurrentFacet(facet), m)),\n updatePageIndex: (pageIndex: number) =>\n dispatch(withMappers(updatePageIndex(pageIndex), m)),\n updateSearchTerm: (term: string) =>\n dispatch(withMappers(updateSearchTerm(term), m)),\n updateSelectedFilters: (\n filter: string,\n key: string,\n isUnknownItem = false\n ) =>\n dispatch(\n withMappers(updateSelectedFilters(filter, key, isUnknownItem), m)\n ),\n updateSortOrder: (orderBy: string) =>\n dispatch(withMappers(updateSortOrder(orderBy), m)),\n };\n\n const {\n currentListing,\n currentPageIndex,\n featured,\n filters,\n isLoading,\n listing,\n paging,\n pageIsLoading,\n results,\n resultsInfo,\n searchTerm,\n selectedFilters,\n sortOrder,\n } = useSelector((state: AppState) => selectListingProps(state, m));\n\n return {\n currentListing,\n currentPageIndex,\n featured,\n filters,\n isLoading,\n listing,\n pageIsLoading,\n paging,\n results,\n resultsInfo,\n searchTerm,\n selectedFilters,\n sortOrder,\n title: listing.title,\n ...dispatchProps,\n } as ListingProps<SearchResults>;\n};\n\nexport default useListing;\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\n\nimport { Context } from '../models/Enums';\nimport { MinilistProps, UseMinilistProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\n\nimport { triggerSearch } from '../redux/actions';\nimport {\n getResults,\n getIsLoading,\n getFacet,\n getPaging,\n getSearchTerm,\n getFilters,\n} from '../redux/selectors';\n\nconst makeSelectMinilistProps = () =>\n createSelector(\n (state: AppState) => state,\n (_: any, id: string) => id,\n (state: AppState, id: string) => ({\n facet: getFacet(state, id, Context.minilist, 'js'),\n filters: getFilters(state, id, Context.minilist, 'js'),\n isLoading: getIsLoading(state, Context.minilist, id),\n pagingInfo: getPaging(state, id, Context.minilist, 'js'),\n results: getResults(state, id, Context.minilist, 'js'),\n searchTerm: getSearchTerm(state),\n })\n );\n\nconst useMinilist = <SearchResults extends Record<string, any>>(\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 selectMinilistProps = useMemo(makeSelectMinilistProps, [id]);\n\n const { facet, filters, isLoading, pagingInfo, results, searchTerm } =\n useSelector((state: AppState) => selectMinilistProps(state, id));\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 paging: pagingInfo,\n results,\n searchTerm,\n title: facet.title,\n } as MinilistProps<SearchResults>;\n};\n\nexport default useMinilist;\n","import { CustomWhereClause } from '../models/Search';\nimport { Filter, FilterItem, SearchState } from '../models/SearchState';\n\nexport const entries = {\n isLoading: false,\n isError: false,\n items: [],\n};\n\nexport const pagingInfo = {\n isLoading: false,\n pageCount: 0,\n pageIndex: 0,\n pageSize: 0,\n pagesLoaded: [],\n prevPageIndex: 0,\n totalCount: 0,\n};\n\nexport const searchFacet = {\n title: null,\n featuredEntries: entries,\n featuredResults: [],\n entries,\n results: [],\n queryParams: {},\n filters: {},\n queryDuration: 0,\n pagingInfo,\n projectId: '',\n};\n\nexport const searchTab = {\n currentFacet: undefined,\n facets: {},\n id: 0,\n label: undefined,\n totalCount: '',\n};\n\nexport const filtering = {\n isLoading: false,\n isError: false,\n isGrouped: false,\n title: undefined,\n contentTypeId: undefined,\n customWhere: [],\n fieldId: undefined,\n items: [],\n} as Omit<Filter, 'customWhere' | 'items'> & {\n customWhere?: CustomWhereClause[];\n items?: FilterItem[];\n};\n\nexport const filterItem = {\n key: '',\n type: undefined,\n title: undefined,\n path: undefined,\n isSelected: false,\n} as FilterItem;\n\nconst config = {\n isLoaded: false,\n isError: false,\n};\n\nconst searchState: SearchState = {\n context: 'facets',\n currentFacet: '',\n currentListing: '',\n facets: {},\n listings: {},\n minilist: {},\n term: '',\n tabs: [],\n config,\n};\n\nexport const initialState = searchState;\n","import { Draft, produce } from 'immer';\nimport equals from 'deep-equal';\nimport merge from 'deepmerge';\n\nimport { entries, filterItem, searchFacet, initialState } 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 {\n ConfigTypes,\n SearchFacet,\n Listing,\n SearchConfig,\n} from '../models/Search';\nimport { Context } from '../models/Enums';\nimport {\n Facet,\n Facets,\n SearchState,\n Filter,\n Filters,\n FilterItem,\n} from '../models/SearchState';\n\nconst addConfigToState = (state: SearchState, action: any) => {\n const { context, facet, config } = action as {\n context: keyof typeof Context;\n facet: string;\n config: any;\n };\n // Adding or changing the config of a single facet, listing or minilist\n if (context && facet && config) {\n state[context][facet] = { ...searchFacet, ...config };\n } else if (config) {\n // Changing the entire search config\n state = config;\n }\n return state;\n};\n\nconst generateSearchFacets = (context: Context, config: SearchConfig) => {\n const facets = {} as Facets;\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, SearchFacet | Listing]) => {\n const newFacet = merge(searchFacet, facet);\n if (!('isDisabled' in facet) || facet.isDisabled !== true)\n facets[facetName] = newFacet;\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: keyof typeof Context;\n isCurrentFacet: boolean;\n },\n state: SearchState\n) => {\n // Remove filters we know about from params\n const filterParams = {\n ...params,\n facet: undefined,\n orderBy: undefined,\n pageIndex: undefined,\n term: undefined,\n } as { [k: string]: string | undefined };\n\n // Get any existing filters and normalise the items[]\n // so we can start off with isSelected is false\n let filters: [string, Filter][] = Object.entries(\n (state[context][facet].filters || []) as Filters\n ).map(([key, filter]: [string, Filter]) => {\n if (isCurrentFacet || filter.isGrouped) {\n return [\n key,\n {\n ...filter,\n items: filter.items?.map(item => ({ ...item, isSelected: false })),\n } as Filter,\n ];\n }\n return [key, filter];\n });\n\n const addFilterItem = (\n filters: [string, Filter][],\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<[string, Filter]>(([key, filter]) => {\n if (paramKey !== key || (!isCurrentFacet && !filter.isGrouped)) {\n return [key, filter];\n } else {\n const items = (filter.items || []) as FilterItem[];\n const itemIndex = items.findIndex(item => item?.key === paramValue);\n if (items.length > 0 && itemIndex !== -1) {\n items[itemIndex].isSelected = true;\n } else {\n items.push({\n ...filterItem,\n key: paramValue,\n isSelected: true,\n });\n }\n\n return [\n key,\n {\n ...filter,\n items,\n } as Filter,\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 Object.entries(filterParams).map(([paramName = '', paramValue]) => {\n if (typeof paramValue === 'string')\n return paramValue\n .split(',')\n .map(pVal => (filters = addFilterItem(filters, paramName, pVal)));\n if (typeof paramValue === 'boolean')\n filters = addFilterItem(filters, paramName, paramValue);\n });\n\n return Object.fromEntries(filters) as Filters;\n};\n\nconst resetFacets = (state: SearchState, context: keyof typeof Context) =>\n Object.fromEntries(\n Object.entries(state[context] as Facets).map(([k, v]) => [k, resetFacet(v)])\n ) as Facets;\n\nconst resetFacet = (facet: Facet) => {\n facet.pagingInfo.pagesLoaded = [];\n facet.pagingInfo.pageIndex = 0;\n facet.queryDuration = 0;\n return facet;\n};\n\nexport default (config: SearchConfig) => {\n // Add facets from SearchConfig to initialState\n const initState: SearchState = {\n ...initialState,\n tabs: config.tabs as any,\n facets: generateSearchFacets(Context.facets, config),\n listings: generateSearchFacets(Context.listings, config),\n minilist: generateSearchFacets(Context.minilist, config),\n };\n\n return produce(\n (\n state: Draft<SearchState> = initState,\n action: {\n [key: string]: any;\n context: keyof typeof Context;\n facet: string;\n params: { [key: string]: string };\n }\n ) => {\n const context = state.context as keyof typeof Context;\n const current =\n context !== 'listings' ? state.currentFacet : state.currentListing;\n\n switch (action.type) {\n case APPLY_CONFIG: {\n state = addConfigToState(state, action);\n return state;\n }\n case CLEAR_FILTERS: {\n const currentFilters = state[context][current].filters as Filters;\n\n state[context][current].filters = Object.fromEntries(\n Object.entries(currentFilters).map(([key, filter]) => {\n const filterItems = (filter.items || []) as FilterItem[];\n\n filter.items = filterItems.map(item => ({\n ...item,\n isSelected: false,\n })) as FilterItem[];\n\n return [key, filter];\n })\n );\n state[context][current].queryDuration = 0;\n state[context][current].pagingInfo.pagesLoaded = [];\n\n return;\n }\n case EXECUTE_SEARCH: {\n state[action.context][action.facet].entries.isLoading = true;\n return;\n }\n case EXECUTE_SEARCH_ERROR: {\n state[action.context][action.facet].entries = {\n ...entries,\n isError: true,\n error: action.error,\n };\n return;\n }\n case LOAD_FILTERS: {\n const { facetKey, filtersToLoad } = action;\n const filters = state[action.context][facetKey].filters as Filters;\n\n Object.entries(filters).map(([filterKey, filter]) => {\n if (filtersToLoad.find((f: string) => f === filterKey))\n return { ...filter, isLoading: true } as Filter;\n return filter;\n });\n\n state[action.context][facetKey].filters = Object.fromEntries(\n Object.entries(filters).map(([filterKey, filter]) => {\n if (filtersToLoad.find((f: string) => f === filterKey))\n return [filterKey, { ...filter, isLoading: true }];\n return [filterKey, filter];\n })\n );\n\n return;\n }\n case LOAD_FILTERS_ERROR:\n case LOAD_FILTERS_COMPLETE: {\n const { facetKey, filterKey, nextFilter } = action;\n const filter = state[action.context][facetKey].filters[\n filterKey\n ] as Filter;\n\n if (\n !(nextFilter.items && nextFilter.items.length > 0) &&\n (filter.items || []).length >= nextFilter.items.length\n ) {\n // Preserve items already in state\n state[action.context][facetKey].filters[filterKey] = {\n ...filter,\n isLoading: false,\n isError: nextFilter.isError,\n };\n return;\n }\n\n state[action.context][facetKey].filters[filterKey] = merge(\n filter,\n nextFilter,\n {\n arrayMerge: (source, inbound) => inbound,\n }\n );\n\n return;\n }\n case SET_ROUTE_FILTERS: {\n const { facet, params, context } = action;\n const { term = '', pageIndex, orderBy } = params;\n\n const stateTerm = state.term;\n const tabId = state[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 = Object.fromEntries(\n Object.entries(state[context] as Facets).map(\n ([facetName = '', stateFacet]) => {\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.config.isLoaded === true &&\n !equals(nextFilters, stateFacet.filters);\n\n stateFacet = resetCurrentFacet\n ? resetFacet(stateFacet)\n : stateFacet;\n stateFacet.filters = nextFilters;\n stateFacet.queryParams.dynamicOrderBy = toArray(orderBy) || [];\n return [facetName, stateFacet];\n }\n )\n );\n\n state.context = context;\n state[context] = nextFacets;\n state[\n action.context === Context.facets\n ? 'currentFacet'\n : 'currentListing'\n ] = facet;\n state.term = term;\n state.tabs[tabId].currentFacet = facet;\n state[context][facet].pagingInfo.pageIndex =\n Number(pageIndex) - 1 ||\n (state[context][facet].queryParams.loadMorePaging\n ? state[context][facet].pagingInfo.pageIndex || 0\n : 0);\n state.config.isLoaded = true;\n state.config.ssr = typeof window === 'undefined';\n\n if (resetAllFacets) state[context] = resetFacets(state, context);\n\n return;\n }\n case SET_SEARCH_ENTRIES: {\n const thisContext = action.context || context;\n const currentFacet = state[thisContext][action.facet];\n state[thisContext][action.facet] = merge(\n currentFacet,\n action.nextFacet,\n {\n arrayMerge: (source, inbound) => inbound,\n }\n );\n return;\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 =\n state[action.context || Context.minilist][action.facet].queryParams\n .useSearchTerm || false;\n state[action.context || Context.minilist][action.facet].filters =\n filters;\n state[action.context || Context.minilist][\n action.facet\n ].queryParams.excludeIds = action.excludeIds;\n state.term = useSearchTerm ? term : state.term;\n state.config.ssr = typeof window === 'undefined';\n\n return;\n }\n case UPDATE_PAGE_INDEX: {\n const { pageIndex } = action;\n const internalPaging =\n state[context][current].queryParams.internalPaging || false;\n\n const currentPageIndex =\n state[context][current].pagingInfo.pageIndex || 0;\n\n state[context][current].pagingInfo.pageIndex = Number(pageIndex) || 0;\n state[context][current].pagingInfo.prevPageIndex = currentPageIndex;\n state[context][current].pagingInfo.isLoading = true;\n\n if (internalPaging) return;\n\n state[context][current].queryDuration = 0;\n return;\n }\n case UPDATE_SEARCH_TERM: {\n state.term = action.term;\n state[context] = resetFacets(state, context);\n\n return;\n }\n case UPDATE_SELECTED_FILTERS: {\n const { filter, key, isUnknownItem } = action;\n\n const isSingleSelect =\n state[context][current].filters[filter].isSingleSelect || false;\n const isGrouped =\n state[context][current].filters[filter].isGrouped || false;\n\n const currentItems = state[context][current].filters[filter].items;\n if (isGrouped) state[context] = resetFacets(state, context);\n state[context][current] = resetFacet(state[context][current]);\n\n if (\n isUnknownItem &&\n currentItems?.findIndex(item => item?.key === key) === -1\n ) {\n currentItems?.push({\n key,\n isSelected: false,\n });\n }\n state[context][current].filters[filter].items = currentItems?.map(\n item => {\n if (item.key === key) {\n return { ...item, isSelected: !item.isSelected };\n }\n if (isSingleSelect) return { ...item, isSelected: false };\n return item;\n }\n );\n\n return;\n }\n case UPDATE_SORT_ORDER: {\n const { orderBy, facet } = action;\n state[context] = resetFacets(state, context);\n const currentFacet = facet || current;\n state[context][currentFacet].queryParams.dynamicOrderBy = orderBy\n ? toArray(orderBy) || []\n : [];\n\n return;\n }\n default:\n return;\n }\n },\n initState\n );\n};\n","export 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 useFacets } from './hooks/useFacets.hook';\nexport { default as useListing } from './hooks/useListing.hook';\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","React","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","isUnknownItem","updateSortOrder","orderBy","Context","makeFromJS","returnType","globalThis","STATE_TYPE","immutable","fromJSOrdered","fromJS","v","getImmutableOrJS","stateKey","fallbackValue","get","getIn","Array","isArray","result","jpath","join","undefined","getSearchContext","facets","getCurrent","getCurrentFacet","getCurrentListing","getCurrentTab","getFacets","getTabFacets","fromEntries","getFacetTitles","map","title","totalCount","pagingInfo","getFacet","facetName","currentFacet","getListing","listing","currentListing","listings","getFilters","getRenderableFilters","f","renderable","getFiltersToLoad","filters","loadedFilters","items","i","length","isError","filterKey","isLoaded","getSelectedFilters","isoDateRegex","RegExp","selectedFilters","item","isSelected","isIsoDate","test","toLowerCase","getResults","current","getIsInternalPaging","getIsLoaded","getIsLoading","getIsSsr","getFeaturedResults","getPaging","getPageIndex","getPrevPageIndex","getPageIsLoading","getPagesLoaded","getTotalCount","getSearchTerm","getSearchTabs","getQueryParams","getQueryParameter","ifnull","getCustomApi","getCustomEnv","getTabsAndFacets","tabs","tabsAndFacets","tab","fieldsToCount","countFields","thisTabFacets","thisTabTotal","find","a","b","getSearchTotalCount","wholeSearchTotal","t","getFacetsTotalCount","selectFacets","selectListing","selectCurrentPath","selectCurrentProject","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","size","node","remove","setHead","set","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","cachedSearch","now","Date","performance","fixFreeTextForElastic","s","illegalChars","illegalRegEx","c","replace","timedSearch","duration","start","payload","end","getItemsFromResult","extractQuotedPhrases","pattern","match","buildUrl","route","qs","callCustomApi","customApi","apiUri","uri","Error","startsWith","response","fetch","json","removeEmptyAttributes","obj","forEach","val","toArray","seperator","areArraysEqualSets","a1","a2","superSet","ai","e","DataFormats","asset","entry","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","contentTypeIdExpression","contentTypeIds","webpageTemplates","assetTypes","expressions","push","dataFormatExpression","filterExpressions","selectedFilter","logicOperator","values","fieldOperator","fieldExpressions","expr","not","withContentTypeIds","notContentTypeIds","substring","andExpr","and","dataFormatExpr","withExpr","notExpr","add","featuredResultsExpression","fieldValue","languagesExpression","languages","includeInSearchExpressions","includeInSearchFields","includeInSearchField","exists","equalTo","defaultExpressions","excludeIdsExpression","orderByExpression","expression","OrderBy","ob","desc","asc","in","innerValue","handle","betweenValue","valArr","minimum","maximum","console","log","bc","op","customWhereExpressions","where","clause","keys","idx","k","includes","recurseExpr","notKey","notIdx","innerOperator","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","merge","hash","mapStateToSearchUri","mapJson","mapEntriesToSearchResults","mapperFunc","facetTemplate","nextFacet","featuredEntries","featuredResult","queryDuration","pageCount","$path","$default","pagesLoaded","$formatting","loaded","isNaN","l","sort","prevPageIndex","preloaded","prevResults","loadMorePaging","queryParams","nextResults","r","_pageIndex","_pagePosition","loadedPages","firstResultSet","secondResultSet","onlyResultSet","preload","ogState","filterTemplate","facetKey","nextFilter","selectedKeys","error","$disable","filterExpressionMapper","expressionType","mapFilterToFilterExpression","mapFiltersToFilterExpression","fkey","selectedValues","queryParamsTemplate","root","filterParams","internalPageIndex","internalPaging","minilist","deduped","findIndex","mapStateToQueryParams","sourceJson","generateQueryParams","runSearch","ssr","willRun","facetIsLoaded","stateParams","filterParamsChanged","param","queryParam","paramsChanged","inboundValues","debugExecuteSearch","base","mapEntriesToFilterItems","template","mapEntry","searchSagas","takeEvery","doSearch","loadFilters","preloadOtherFacets","applySearchFilter","setRouteFilters","listingType","select","defaultFacet","nextAction","put","call","ensureSearch","filtersToLoad","filtersToLoadSagas","loadFilter","filterItems","all","createStateFrom","mapSearchResultToState","executeSearch","stack","featuredQuery","apiParams","fi","allFacets","otherFacets","preloadFacet","preloadAction","tabId","updateCurrentFacetAction","buildUri","mapUri","makeSelectFacetsProps","createSelector","_","useFacets","dispatch","useDispatch","m","defaultMappers","selectListingProps","useMemo","dispatchProps","useSelector","makeSelectListingProps","useListing","makeSelectMinilistProps","useMinilist","selectMinilistProps","useEffect","searchFacet","searchTab","label","filtering","isGrouped","filterItem","searchState","initialState","addConfigToState","generateSearchFacets","thisConfig","newFacet","isDisabled","generateFiltersState","isCurrentFacet","addFilterItem","paramKey","paramValue","itemIndex","paramName","pVal","resetFacets","resetFacet","initState","produce","currentFilters","arrayMerge","source","inbound","stateTerm","resetAllFacets","resetCurrentFacet","nextFacets","stateFacet","nextFilters","equals","Number","thisContext","useSearchTerm","isSingleSelect","currentItems"],"mappings":"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"}