@zengenti/contensis-react-base 3.0.0-beta.4 → 3.0.0-beta.43

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.
Files changed (147) hide show
  1. package/README.md +4 -4
  2. package/cjs/{App-581b6653.js → App-2ff001f6.js} +139 -124
  3. package/cjs/App-2ff001f6.js.map +1 -0
  4. package/cjs/{RouteLoader-282c03ab.js → RouteLoader-2ed14766.js} +44 -30
  5. package/cjs/RouteLoader-2ed14766.js.map +1 -0
  6. package/cjs/ToJs-09204afd.js +129 -0
  7. package/cjs/ToJs-09204afd.js.map +1 -0
  8. package/cjs/{actions-12871aca.js → actions-6b9ef168.js} +9 -8
  9. package/cjs/actions-6b9ef168.js.map +1 -0
  10. package/cjs/client.js +43 -22
  11. package/cjs/client.js.map +1 -1
  12. package/cjs/contensis-react-base.js +46 -49
  13. package/cjs/contensis-react-base.js.map +1 -1
  14. package/cjs/forms.js +275 -275
  15. package/cjs/forms.js.map +1 -1
  16. package/cjs/fromJSLeaveImmer-65d26804.js +28 -0
  17. package/cjs/fromJSLeaveImmer-65d26804.js.map +1 -0
  18. package/cjs/{login-81d7f9ef.js → login-d67b82aa.js} +113 -79
  19. package/cjs/login-d67b82aa.js.map +1 -0
  20. package/cjs/{reducers-fde41d6b.js → reducers-3a4f8971.js} +26 -25
  21. package/cjs/reducers-3a4f8971.js.map +1 -0
  22. package/cjs/redux.js +13 -14
  23. package/cjs/redux.js.map +1 -1
  24. package/cjs/routing.js +9 -8
  25. package/cjs/routing.js.map +1 -1
  26. package/cjs/search.js +418 -256
  27. package/cjs/search.js.map +1 -1
  28. package/cjs/{selectors-ed26ed97.js → selectors-2c1b1183.js} +8 -4
  29. package/cjs/selectors-2c1b1183.js.map +1 -0
  30. package/cjs/user.js +32 -23
  31. package/cjs/user.js.map +1 -1
  32. package/cjs/util.js +49 -46
  33. package/cjs/util.js.map +1 -1
  34. package/cjs/{version-f061e409.js → version-951bc80c.js} +58 -52
  35. package/cjs/version-951bc80c.js.map +1 -0
  36. package/cjs/{version-0c190929.js → version-dcfdafd9.js} +5 -5
  37. package/cjs/{version-0c190929.js.map → version-dcfdafd9.js.map} +1 -1
  38. package/esm/{App-122f28a3.js → App-7b3aee16.js} +120 -124
  39. package/esm/App-7b3aee16.js.map +1 -0
  40. package/esm/{RouteLoader-c2faac87.js → RouteLoader-d4b4d320.js} +37 -23
  41. package/esm/RouteLoader-d4b4d320.js.map +1 -0
  42. package/esm/ToJs-2627ce21.js +99 -0
  43. package/esm/ToJs-2627ce21.js.map +1 -0
  44. package/esm/{actions-3cc39599.js → actions-5437f43d.js} +8 -7
  45. package/esm/actions-5437f43d.js.map +1 -0
  46. package/esm/client.js +22 -20
  47. package/esm/client.js.map +1 -1
  48. package/esm/contensis-react-base.js +28 -31
  49. package/esm/contensis-react-base.js.map +1 -1
  50. package/esm/forms.js +5 -5
  51. package/esm/forms.js.map +1 -1
  52. package/esm/fromJSLeaveImmer-e2f0f331.js +26 -0
  53. package/esm/fromJSLeaveImmer-e2f0f331.js.map +1 -0
  54. package/esm/{login-92db44d1.js → login-f6dfbe1b.js} +97 -60
  55. package/esm/login-f6dfbe1b.js.map +1 -0
  56. package/esm/{reducers-d6c0edb1.js → reducers-8e5d6232.js} +26 -25
  57. package/esm/reducers-8e5d6232.js.map +1 -0
  58. package/esm/redux.js +14 -13
  59. package/esm/redux.js.map +1 -1
  60. package/esm/routing.js +9 -8
  61. package/esm/routing.js.map +1 -1
  62. package/esm/search.js +387 -244
  63. package/esm/search.js.map +1 -1
  64. package/esm/{selectors-82e71d8e.js → selectors-65f0f31c.js} +9 -6
  65. package/esm/selectors-65f0f31c.js.map +1 -0
  66. package/esm/user.js +31 -22
  67. package/esm/user.js.map +1 -1
  68. package/esm/util.js +18 -11
  69. package/esm/util.js.map +1 -1
  70. package/esm/version-696796d7.js +15 -0
  71. package/esm/{version-59c8f9be.js.map → version-696796d7.js.map} +1 -1
  72. package/esm/{version-cb9cd09d.js → version-b2ca1dab.js} +38 -31
  73. package/esm/version-b2ca1dab.js.map +1 -0
  74. package/models/redux/appstate.d.ts +5 -10
  75. package/models/redux/reducers/navigation.d.ts +1 -6
  76. package/models/redux/reducers/version.d.ts +1 -5
  77. package/models/redux/selectors/navigation.d.ts +2 -1
  78. package/models/routing/redux/actions.d.ts +1 -1
  79. package/models/routing/redux/reducers.d.ts +1 -21
  80. package/models/routing/redux/selectors.d.ts +1 -1
  81. package/models/routing/routes.d.ts +3 -2
  82. package/models/routing/util/expressions.d.ts +3 -2
  83. package/models/routing/util/queries.d.ts +1 -1
  84. package/models/search/containers/withListing.d.ts +1 -1
  85. package/models/search/containers/withSearch.d.ts +1 -1
  86. package/models/search/hooks/useListing.hook.d.ts +3 -0
  87. package/models/search/hooks/useMinilist.hook.d.ts +2 -9
  88. package/models/search/index.d.ts +1 -0
  89. package/models/search/models/Queries.d.ts +8 -5
  90. package/models/search/models/Search.d.ts +58 -26
  91. package/models/search/models/SearchActions.d.ts +4 -3
  92. package/models/search/models/SearchProps.d.ts +25 -2
  93. package/models/search/models/SearchState.d.ts +5 -1
  94. package/models/search/models/index.d.ts +2 -1
  95. package/models/search/redux/actions.d.ts +2 -1
  96. package/models/search/redux/reducers.d.ts +230 -314
  97. package/models/search/redux/sagas.d.ts +5 -5
  98. package/models/search/redux/selectors.d.ts +5 -10
  99. package/models/search/search/expressions.d.ts +2 -6
  100. package/models/search/transformations/entry-to-filteritem.mapper.d.ts +2 -1
  101. package/models/search/transformations/filter-to-filterexpression.mapper.d.ts +6 -0
  102. package/models/search/transformations/filters-to-filterexpressions.mapper.d.ts +3 -0
  103. package/models/search/transformations/index.d.ts +3 -0
  104. package/models/search/transformations/state-to-searchuri.d.ts +2 -13
  105. package/models/server/util/headers.d.ts +3 -2
  106. package/models/testImmer/redux/reducer.d.ts +1 -7
  107. package/models/user/components/Login.d.ts +1 -2
  108. package/models/user/components/LoginForm.d.ts +1 -2
  109. package/models/user/hocs/withLogin.d.ts +2 -2
  110. package/models/user/hooks/useChangePassword.d.ts +5 -5
  111. package/models/user/hooks/useForgotPassword.d.ts +6 -6
  112. package/models/user/hooks/useLogin.d.ts +9 -45
  113. package/models/user/hooks/useRegistration.d.ts +4 -4
  114. package/models/user/redux/reducers.d.ts +5 -32
  115. package/models/user/redux/sagas/login.d.ts +11 -8
  116. package/models/user/redux/selectors.d.ts +33 -71
  117. package/models/user/util/LoginHelper.class.d.ts +4 -3
  118. package/models/util/json-mapper.d.ts +9 -3
  119. package/models/util/merge.d.ts +1 -0
  120. package/package-lock.json +2006 -4796
  121. package/package.json +47 -48
  122. package/cjs/App-581b6653.js.map +0 -1
  123. package/cjs/RouteLoader-282c03ab.js.map +0 -1
  124. package/cjs/ToJs-87edc45d.js +0 -230
  125. package/cjs/ToJs-87edc45d.js.map +0 -1
  126. package/cjs/actions-12871aca.js.map +0 -1
  127. package/cjs/fromJSLeaveImmer-9b550c8e.js +0 -40
  128. package/cjs/fromJSLeaveImmer-9b550c8e.js.map +0 -1
  129. package/cjs/login-81d7f9ef.js.map +0 -1
  130. package/cjs/reducers-fde41d6b.js.map +0 -1
  131. package/cjs/selectors-ed26ed97.js.map +0 -1
  132. package/cjs/version-f061e409.js.map +0 -1
  133. package/esm/App-122f28a3.js.map +0 -1
  134. package/esm/RouteLoader-c2faac87.js.map +0 -1
  135. package/esm/ToJs-52fee252.js +0 -199
  136. package/esm/ToJs-52fee252.js.map +0 -1
  137. package/esm/actions-3cc39599.js.map +0 -1
  138. package/esm/fromJSLeaveImmer-e44d1a91.js +0 -38
  139. package/esm/fromJSLeaveImmer-e44d1a91.js.map +0 -1
  140. package/esm/login-92db44d1.js.map +0 -1
  141. package/esm/reducers-d6c0edb1.js.map +0 -1
  142. package/esm/selectors-82e71d8e.js.map +0 -1
  143. package/esm/version-59c8f9be.js +0 -15
  144. package/esm/version-cb9cd09d.js.map +0 -1
  145. package/models/search/transformations/filters-to-filterexpression.d.ts +0 -1
  146. package/models/search/transformations/filters-to-filterexpression.mapper.d.ts +0 -2
  147. package/models/server/features/caching/cacheHashing.d.ts +0 -1
package/esm/search.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sources":["../node_modules/zengenti-search-package/src/app/zengenti-search-package/search/ToJs.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/types.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/actions.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/models/Enums.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/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/filters-to-filterexpression.mapper.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/filters-to-filterexpression.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/state-to-queryparams.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/util.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/transformations/entry-to-filteritem.mapper.js","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/sagas.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/hooks/useMinilist.hook.tsx","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/schema.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/reducers.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/index.ts"],"sourcesContent":["/* eslint-disable 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 = (filter: string, key: string) => {\n return {\n type: UPDATE_SELECTED_FILTERS,\n filter,\n key,\n };\n};\n\nexport const updateSortOrder = (orderBy: string, facet?: string) => {\n return {\n type: UPDATE_SORT_ORDER,\n orderBy,\n facet,\n };\n};\n","export enum Context {\n facets = 'facets',\n listings = 'listings',\n minilist = 'minilist',\n}\n// export type Context = 'facets' | 'listings' | 'minilist';\n","import { 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 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): {\n [k: string]: string[];\n} => {\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 ? key : key.toLowerCase();\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) => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n []\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),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings),\n getFiltersToLoad: (state: AppState, listing = '') =>\n getFiltersToLoad(state, listing, Context.listings),\n getListing,\n getIsLoaded: (state: AppState) => getIsLoaded(state, Context.listings),\n getIsLoading: (state: AppState) => getIsLoading(state, Context.listings),\n getPageIndex: (state: AppState, listing = '') =>\n getPageIndex(state, listing, Context.listings),\n getPaging: (state: AppState, listing = '') =>\n getPaging(state, listing, Context.listings),\n getPageIsLoading: (state: AppState, listing = '') =>\n getPageIsLoading(state, listing, Context.listings),\n getPagesLoaded: (state: AppState, listing = '') =>\n getPagesLoaded(state, listing, Context.listings),\n getQueryParams: (state: AppState, listing = '') =>\n getQueryParams(state, listing, Context.listings),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet?: string },\n key: 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),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n getIn(state, ['routing', 'currentPath']);\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\n/* eslint-disable @typescript-eslint/naming-convention */\nconst withSearch =\n (mappers: Mappers) =>\n <Props extends Record<keyof Props, any>>(\n SearchComponent: React.ComponentType<Props>\n ) => {\n const Wrapper: React.FC<Props & SearchProps<any>> = props => {\n return <SearchComponent {...props} />;\n };\n\n Wrapper.displayName = `withSearch(${\n SearchComponent.displayName || SearchComponent.name\n })`;\n\n const mapStateToProps = (state: AppState) => {\n return {\n currentFacet: getCurrentFacet(state),\n currentPageIndex: getPageIndex(state),\n currentTabIndex: getCurrentTab(state),\n facet: getFacet(state),\n facets: getTabFacets(state),\n facetsTotalCount: getFacetsTotalCount(state),\n facetTitles: getFacetTitles(state),\n featuredResults: getFeaturedResults(state),\n filters: getRenderableFilters(state),\n isLoading: getIsLoading(state),\n paging: getPaging(state),\n pageIsLoading: getPageIsLoading(state),\n results: getResults(state),\n resultsInfo: mappers?.resultsInfo && mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n searchTotalCount: getSearchTotalCount(state),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n tabsAndFacets: getTabsAndFacets(state),\n totalCount: getTotalCount(state),\n };\n };\n\n const mapDispatchToProps = {\n clearFilters: () => withMappers(clearFilters(), mappers),\n updateCurrentFacet: (facet: string) =>\n withMappers(updateCurrentFacet(facet), mappers),\n updateCurrentTab: (id: number) =>\n withMappers(updateCurrentTab(id), mappers),\n updatePageIndex: (pageIndex: number) =>\n withMappers(updatePageIndex(pageIndex), mappers),\n updateSearchTerm: (term: string) =>\n withMappers(updateSearchTerm(term), mappers),\n updateSelectedFilters: (filter: string, key: string) =>\n withMappers(updateSelectedFilters(filter, key), mappers),\n updateSortOrder: (orderBy: string) =>\n withMappers(updateSortOrder(orderBy), mappers),\n };\n\n const connector = connect(mapStateToProps, mapDispatchToProps);\n\n return connector(toJS(Wrapper) as any);\n };\n\nexport default withSearch;\n","/* eslint-disable @typescript-eslint/naming-convention */\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<keyof Props, any>>(\n ListingComponent: React.FC<Props>\n ) => {\n const Wrapper: React.FC<Props & ListingProps<any>> = props => {\n return <ListingComponent {...props} />;\n };\n\n Wrapper.displayName = `withListing(${\n ListingComponent.displayName || ListingComponent.name\n })`;\n\n const {\n getCurrent,\n getFeaturedResults,\n getIsLoading,\n getListing,\n getPageIndex,\n getPaging,\n getQueryParameter,\n getRenderableFilters,\n getResults,\n getSearchTerm,\n } = selectListing;\n\n const mapStateToProps = (state: AppState) => {\n return {\n currentListing: getCurrent(state),\n currentPageIndex: getPageIndex(state),\n listing: getListing(state),\n featured: getFeaturedResults(state),\n filters: getRenderableFilters(state),\n isLoading: getIsLoading(state),\n paging: getPaging(state),\n results: getResults(state),\n resultsInfo:\n mappers &&\n typeof mappers.resultsInfo === 'function' &&\n mappers.resultsInfo(state),\n searchTerm: getSearchTerm(state),\n sortOrder: getQueryParameter({ state }, 'dynamicOrderBy', []),\n };\n };\n\n const mapDispatchToProps = {\n clearFilters: () => withMappers(clearFilters(), mappers),\n updateCurrentFacet: (facet: string) =>\n withMappers(updateCurrentFacet(facet), mappers),\n updatePageIndex: (pageIndex: number) =>\n withMappers(updatePageIndex(pageIndex), mappers),\n updateSearchTerm: (term: string) =>\n withMappers(updateSearchTerm(term), mappers),\n updateSelectedFilters: (filter: string, key: string) =>\n withMappers(updateSelectedFilters(filter, key), mappers),\n updateSortOrder: (orderBy: string) =>\n withMappers(updateSortOrder(orderBy), mappers),\n };\n\n return connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper) as any);\n };\n\nexport default withListing;\n","import { Client } from 'contensis-delivery-api';\n\nconst getClientConfig = (project, env) => {\n let config = DELIVERY_API_CONFIG; /* global DELIVERY_API_CONFIG */\n if (project) {\n config.projectId = project;\n }\n\n if (\n typeof window != 'undefined' &&\n PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n ) {\n // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = env || '';\n config.responseHandler = {\n 404: () => null,\n };\n }\n return config;\n};\nexport * from 'contensis-delivery-api';\n\n// This should only be executed on the client as it relies on the window.\nexport const GetClientSideDeliveryApiStatus = () => {\n if (typeof window != 'undefined') {\n const currentHostname = window.location.hostname;\n return GetDeliveryApiStatusFromHostname(currentHostname);\n }\n return null;\n};\n\nexport const GetDeliveryApiStatusFromHostname = currentHostname => {\n if (currentHostname.indexOf('localhost') > -1) return 'latest';\n\n if (currentHostname.endsWith('contensis.cloud')) {\n if (currentHostname.indexOf('preview.') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n if (currentHostname.endsWith('cloud.contensis.com')) {\n if (currentHostname.indexOf('preview-') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n return 'published';\n};\n\nclass DeliveryApi {\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return client.entries.search(query, linkDepth || 1);\n }\n\n getClient(deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n return Client.create(baseConfig);\n }\n getEntry(id, linkDepth = 1, deliveryApiStatus = 'published', project, env) {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n const client = Client.create(baseConfig);\n // return client.entries.get(id, linkDepth);\n return client.entries.get({ id, linkDepth });\n }\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nclass CacheNode {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n }\n}\n\nclass LruCache {\n constructor(limit = 100) {\n this.map = {};\n this.head = null;\n this.tail = null;\n this.limit = limit || 100;\n this.size = 0;\n }\n\n get(key) {\n if (this.map[key]) {\n let value = this.map[key].value;\n let node = new CacheNode(key, value);\n this.remove(key);\n this.setHead(node);\n return value;\n }\n }\n\n set(key, value) {\n let node = new CacheNode(key, value);\n if (this.map[key]) {\n this.remove(key);\n } else {\n if (this.size >= this.limit) {\n delete this.map[this.tail.key];\n this.size--;\n this.tail = this.tail.prev;\n this.tail.next = null;\n }\n }\n this.setHead(node);\n }\n\n setHead(node) {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.size++;\n this.map[node.key] = node;\n }\n\n remove(key) {\n let node = this.map[key];\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n delete this.map[key];\n this.size--;\n }\n}\n\nclass CachedSearch {\n cache = new LruCache();\n taxonomyLookup = {};\n\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n project + JSON.stringify(query) + linkDepth.toString(),\n () => client.entries.search(query, linkDepth)\n );\n }\n\n getTaxonomyNodeByPath(path, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(`[TAXONOMY NODE] ${path}`, () =>\n client.taxonomy\n .getNodeByPath({ path: path, order: 'defined', childDepth: 2 })\n .then(node => this.extendTaxonomyNode(node))\n );\n }\n\n request(key, execute) {\n if (!this.cache.get(key) || typeof window == 'undefined') {\n let promise = execute();\n this.cache.set(key, promise);\n promise.catch(() => {\n this.cache.remove(key);\n });\n }\n return this.cache.get(key);\n }\n\n extendTaxonomyNode(node) {\n let id = this.getTaxonomyId(node);\n this.taxonomyLookup[id] = node.key;\n return {\n ...node,\n id,\n children: node.children\n ? node.children.map(n => this.extendTaxonomyNode(n))\n : null,\n };\n }\n\n getTaxonomyId(node) {\n if (node.key) {\n let parts = node.key.split('/');\n return parts[parts.length - 1];\n }\n return '';\n }\n}\n\nexport const cachedSearch = new CachedSearch();\n","export const now = () => {\n if (typeof window == 'undefined') {\n return Date.now();\n }\n return window.performance.now();\n};\n","// eslint-disable-next-line import/default\nimport queryString 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 = queryString.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 } from '../models/Queries';\n\nexport const fieldExpression = (\n field: string | string[],\n value: any,\n operator: FieldOperators = 'equalTo',\n weight?: number\n): IExpression[] => {\n if (!field || !value) return [];\n if (Array.isArray(field))\n // If an array of fieldIds have been provided, call self for each fieldId\n // to generate expressions that are combined with an 'or' operator\n return [\n Op.or(\n ...field\n .map(fieldId => fieldExpression(fieldId, value, operator, weight))\n .flat()\n ),\n ];\n if (operator === 'between') return between(field, value);\n if (Array.isArray(value)) return equalToOrIn(field, value, operator);\n else\n return !weight\n ? [Op[operator](field, value, undefined, undefined)]\n : [Op[operator](field, value, undefined, undefined).weight(weight)];\n};\n\nexport const contentTypeIdExpression = (\n contentTypeIds: string[],\n webpageTemplates?: string[],\n assetTypes?: string[]\n) => {\n const expressions: ILogicalExpression[] = [];\n if (!contentTypeIds && !webpageTemplates && !assetTypes) return expressions;\n\n if (contentTypeIds && contentTypeIds.length > 0) {\n expressions.push(\n ...dataFormatExpression(contentTypeIds, DataFormats.entry)\n );\n }\n\n if (webpageTemplates && webpageTemplates.length > 0) {\n expressions.push(\n ...dataFormatExpression(webpageTemplates, DataFormats.webpage)\n );\n }\n\n if (assetTypes && assetTypes.length > 0) {\n expressions.push(...dataFormatExpression(assetTypes, DataFormats.asset));\n }\n\n if (expressions.length > 1) return [Op.or(...expressions)];\n\n return expressions;\n};\n\nexport const filterExpressions = (\n filters: { key: string; value: string; operator: FieldOperators }[]\n) => {\n if (!filters) return [];\n const expressions: IExpression[] = [];\n\n filters.map(param => {\n expressions.push(\n ...fieldExpression(param.key, param.value, param.operator || 'in')\n );\n });\n\n return expressions;\n};\n\nexport const dataFormatExpression = (\n contentTypeIds: string[],\n dataFormat = DataFormats.entry\n) => {\n if (contentTypeIds && contentTypeIds.length > 0) {\n /**\n * We have an array of contentTypeIds some may be prefixed with a \"!\"\n * to indicate this is a \"not\" expression\n */\n const withContentTypeIds = contentTypeIds.filter(c => !c.startsWith('!'));\n const notContentTypeIds = contentTypeIds\n .filter(c => c.startsWith('!'))\n .map(id => id.substring(1));\n\n const andExpr = Op.and();\n\n const dataFormatExpr = fieldExpression(\n Fields.sys.dataFormat,\n dataFormat\n )[0];\n\n const withExpr = fieldExpression(\n Fields.sys.contentTypeId,\n withContentTypeIds\n )[0];\n\n const notExpr = Op.not(\n fieldExpression(Fields.sys.contentTypeId, notContentTypeIds)[0]\n );\n\n andExpr.add(dataFormatExpr);\n if (withContentTypeIds.length > 0) andExpr.add(withExpr);\n if (notContentTypeIds.length > 0) andExpr.add(notExpr);\n\n return [andExpr];\n }\n return [];\n};\n\nexport const featuredResultsExpression = ({\n contentTypeId,\n fieldId,\n fieldValue = true,\n}: {\n contentTypeId?: string | string[];\n fieldId?: string | string[];\n fieldValue?: boolean;\n} = {}) => {\n const expressions = [] as IExpression[];\n\n if (contentTypeId) {\n expressions.push(\n ...contentTypeIdExpression(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId]\n )\n );\n }\n\n if (fieldId && fieldValue) {\n expressions.push(...fieldExpression(fieldId, fieldValue));\n }\n\n return expressions;\n};\n\nexport const languagesExpression = (languages: string[]) =>\n fieldExpression(Fields.sys.language, languages);\n\nexport const includeInSearchExpressions = (\n webpageTemplates: string[],\n includeInSearchFields: string[]\n) => {\n const expressions = [] as IExpression[];\n // Or include this expression if we have explicity specified non-default includeInSearch fields\n if (Array.isArray(includeInSearchFields))\n expressions.push(\n ...includeInSearchFields.map(includeInSearchField =>\n Op.or(\n Op.and(\n Op.exists(includeInSearchField, true),\n Op.equalTo(includeInSearchField, true)\n ),\n Op.exists(includeInSearchField, false)\n )\n )\n );\n\n // If webpageTemplates have been specified, include this expression\n // with the default includeInSearch field from classic Contensis.\n if (Array.isArray(webpageTemplates) && webpageTemplates.length > 0)\n expressions.push(\n Op.or(\n Op.and(\n Op.exists(Fields.sys.includeInSearch, true),\n Op.equalTo(Fields.sys.includeInSearch, true)\n ),\n Op.exists(Fields.sys.includeInSearch, false)\n )\n );\n return expressions;\n};\n\nexport const defaultExpressions = (versionStatus: VersionStatus) => {\n return [Op.equalTo(Fields.sys.versionStatus, versionStatus)];\n};\n\nexport const excludeIdsExpression = (excludeIds: string[]) => {\n if (Array.isArray(excludeIds) && excludeIds.length > 0) {\n const [expr] = fieldExpression(Fields.sys.id, excludeIds);\n return [Op.not(expr)];\n } else return [];\n};\n\nexport const orderByExpression = (orderBy: string[]) => {\n let expression = OrderBy;\n if (orderBy && orderBy.length > 0) {\n orderBy.map(\n ob =>\n (expression = ob.startsWith('-')\n ? expression.desc(ob.substring(1))\n : expression.asc(ob))\n );\n }\n return expression;\n};\n\nconst equalToOrIn = (\n field: string,\n value: string | string[],\n operator: FieldOperators = 'equalTo'\n) => {\n if (value.length === 0) return [];\n if (Array.isArray(value)) {\n if (value.length === 1)\n return [Op[operator](field, value[0], undefined, undefined)];\n return [Op.in(field, ...value)];\n }\n return [];\n};\n\nconst between = (field: string, value: string | string[]) => {\n const handle = (betweenValue: string) => {\n const valArr = betweenValue.split('-');\n if (valArr.length > 1) {\n const [minimum, maximum = null] = betweenValue.split('-');\n return Op.between(field, minimum, maximum);\n } else {\n // eslint-disable-next-line no-console\n console.log(\n `[search] You have supplied only one value to a \"between\" operator which must have two values. Your supplied value \"${\n valArr.length && valArr[0]\n }\" has been discarded.`\n );\n return false;\n }\n };\n if (value.length === 0) return [];\n if (Array.isArray(value))\n return [\n Op.or(...(value.map(handle).filter(bc => bc !== false) as IExpression[])),\n ];\n\n // const valArr = value.split('-');\n const op = handle(value);\n return op ? [op] : []; // valArr.length > 1 ? [Op.between(field, ...value.split('-'))] : [];\n};\n\n/**\n * Accept HTTP style objects and map them to\n * their equivalent JS client \"Op\" expressions\n * @param {array} where the where array as you'd provide it to the HTTP API\n * @returns {array} array of constructed Delivery API Operators\n */\nexport const customWhereExpressions = (where?: CustomWhereClause) => {\n if (!where || !Array.isArray(where)) return [];\n\n // Map each clause inside the where array\n return where.map(clause => {\n let expression: IExpression | undefined;\n // Map through each property in the clause so we can\n // capture the values required and reconstruct them as\n // a Delivery API expression\n let operator: 'field' | 'not' | 'and' | 'or' | FieldOperators;\n Object.keys(clause).map((key: string, idx) => {\n // The clause may contain only one key\n if (idx === 0) operator = key as 'not' | 'and' | 'or';\n\n const field: string = (clause as any).field;\n const value = (clause as any)[\n Object.keys(clause).find(k => !['field', 'weight'].includes(k)) || ''\n ];\n const weight: number = (clause as any).weight;\n\n if (idx === 0) {\n if (operator === 'and' || operator === 'or') {\n // These are array expressions so we can call ourself recursively\n // to map these inner values to expressions\n const recurseExpr = customWhereExpressions(\n (clause as any)[operator]\n ) as unknown as IExpression[];\n expression = Op[operator](...recurseExpr);\n }\n\n if (['not'].includes(operator)) {\n // A 'not' expression is an object with only one inner field and inner operator\n Object.keys(value).map((notKey, notIdx) => {\n const innerOperator = notKey as Exclude<\n FieldOperators,\n 'between' | 'distanceWithin' // these are not handled\n >;\n const innerValue = value[notKey];\n const innerField = value.field;\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n if (notIdx === 1) {\n expression = Op.not(Op[innerOperator](innerField, innerValue));\n }\n });\n }\n }\n // Map the expression when we've looped and scoped to\n // the second property inside the clause\n operator = Object.keys(clause).find(\n clauseKey => !['field', 'weight'].includes(clauseKey)\n ) as FieldOperators;\n\n if (\n idx === 1 &&\n // operator !== 'and' &&\n // operator !== 'or' &&\n operator !== 'between' &&\n operator !== 'distanceWithin'\n ) {\n expression =\n operator === 'freeText' || operator === 'contains'\n ? Op[operator](field, value)\n : operator === 'in'\n ? Op[operator](field, ...value)\n : Op[operator](field, value);\n\n if (typeof weight === 'number') expression = expression.weight(weight);\n }\n });\n return expression;\n }) as IExpression[];\n};\n\nexport const termExpressions = (\n searchTerm: string,\n weightedSearchFields: WeightedSearchField[]\n) => {\n if (searchTerm && weightedSearchFields && weightedSearchFields.length > 0) {\n // Extract any phrases in quotes to array\n const quotedPhrases = extractQuotedPhrases(searchTerm);\n\n // Modify the search term to remove any quoted phrases to leave any remaining terms\n let modifiedSearchTerm = searchTerm;\n quotedPhrases.forEach(\n qp =>\n (modifiedSearchTerm = modifiedSearchTerm\n .replace(qp, '')\n .replace('\"\"', '')\n .trim())\n );\n\n // Push to the operators array to include in the query\n const operators = [] as IExpression[];\n\n // Helper functions to generate Op expressions\n const containsOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'contains',\n f.weight\n );\n const freeTextOp = (f: WeightedSearchField, term: string) =>\n fieldExpression(\n f.fieldId,\n fixFreeTextForElastic(term),\n 'freeText',\n f.weight\n );\n\n // For each weighted search field\n weightedSearchFields.forEach(wsf => {\n // Push to field operators\n const fieldOperators: IExpression[] = [];\n\n // Add operator expressions for modified search term\n if (modifiedSearchTerm) {\n if (\n [Fields.keywords, Fields.sys.filename, Fields.sys.uri].includes(\n wsf.fieldId\n )\n ) {\n fieldOperators.push(...containsOp(wsf, modifiedSearchTerm));\n } else {\n if ([Fields.entryTitle].includes(wsf.fieldId)) {\n fieldOperators.push(\n Op.or(\n ...containsOp(wsf, modifiedSearchTerm),\n ...freeTextOp(wsf, modifiedSearchTerm)\n )\n );\n } else {\n fieldOperators.push(...freeTextOp(wsf, modifiedSearchTerm));\n }\n }\n }\n\n // Add operator expressions for any quoted phrases\n quotedPhrases.forEach(qp => fieldOperators.push(...containsOp(wsf, qp)));\n\n // If we are using multiple operators for a field we will\n // wrap each field inside an And operator so we will match\n // all terms/phrases rather than any terms/phrases\n if (fieldOperators.length > 1) {\n operators.push(Op.and(...fieldOperators));\n } else {\n operators.push(...fieldOperators);\n }\n });\n\n // Wrap operators in an Or operator\n return [\n Op.or()\n .addRange(operators)\n .add(Op.freeText(Fields.searchContent, searchTerm)),\n ];\n } else if (searchTerm) {\n // Searching without weightedSearchFields defined will fall back\n // to a default set of search fields with arbritary weights set.\n return [\n Op.or(\n Op.equalTo(Fields.entryTitle, searchTerm).weight(10),\n Op.freeText(Fields.entryTitle, searchTerm).weight(2),\n Op.freeText(Fields.entryDescription, searchTerm).weight(2),\n Op.contains(Fields.keywords, searchTerm).weight(2),\n Op.contains(Fields.sys.uri, searchTerm).weight(2),\n Op.contains(Fields.sys.allUris, searchTerm),\n Op.freeText(Fields.searchContent, searchTerm)\n ),\n ];\n } else {\n return [];\n }\n};\n","import { Query, OrderBy } from 'contensis-core-api';\n// import { Query, OrderBy } from 'contensis-delivery-api';\nimport {\n contentTypeIdExpression,\n customWhereExpressions,\n defaultExpressions,\n excludeIdsExpression,\n featuredResultsExpression,\n filterExpressions,\n includeInSearchExpressions,\n languagesExpression,\n orderByExpression,\n termExpressions,\n} from '../search/expressions';\nimport { Fields } from '../search/schema';\nimport { FilterQuery, SearchQuery } from '../models/Queries';\n\nexport const filterQuery: FilterQuery = (\n contentTypeIds,\n versionStatus,\n customWhere\n) => {\n const query = new Query(\n ...[\n ...contentTypeIdExpression(contentTypeIds),\n ...defaultExpressions(versionStatus),\n ...customWhereExpressions(customWhere),\n ]\n );\n query.orderBy = OrderBy.asc(Fields.entryTitle);\n query.pageSize = 100;\n\n return query;\n};\n\nexport const searchQuery: SearchQuery = (\n {\n assetTypes,\n contentTypeIds,\n customWhere,\n dynamicOrderBy,\n excludeIds,\n featuredResults,\n fields,\n filters,\n includeInSearchFields,\n languages,\n pageSize,\n pageIndex,\n orderBy,\n searchTerm,\n versionStatus,\n webpageTemplates,\n weightedSearchFields,\n },\n isFeatured = false\n) => {\n let expressions = [\n ...termExpressions(searchTerm, weightedSearchFields),\n ...defaultExpressions(versionStatus),\n ...includeInSearchExpressions(webpageTemplates, includeInSearchFields),\n ...languagesExpression(languages),\n ...customWhereExpressions(customWhere),\n ...excludeIdsExpression(excludeIds),\n ];\n if (isFeatured)\n expressions = [\n ...expressions,\n ...featuredResultsExpression(featuredResults),\n ];\n\n if (!isFeatured || (featuredResults && !featuredResults.contentTypeId))\n expressions = [\n ...expressions,\n ...filterExpressions(filters),\n ...contentTypeIdExpression(contentTypeIds, webpageTemplates, assetTypes),\n ];\n\n const query = new Query(...expressions);\n\n if (!searchTerm) query.orderBy = orderByExpression(orderBy);\n if (dynamicOrderBy && dynamicOrderBy.length)\n query.orderBy = orderByExpression(dynamicOrderBy);\n\n if (fields && fields.length > 0 && !isFeatured) {\n query.fields = fields;\n }\n\n query.pageIndex = isFeatured ? 0 : pageIndex;\n query.pageSize =\n isFeatured && typeof featuredResults.count === 'number'\n ? featuredResults.count\n : pageSize;\n return query;\n};\n","import merge from 'deepmerge';\n// eslint-disable-next-line import/default\nimport queryString 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 { AppState } from '../models/SearchState';\nimport { Context } from '../models/Enums';\n\ntype SearchStateParams = {\n state: AppState;\n facet?: string;\n orderBy?: string;\n pageIndex: number;\n term?: string;\n};\n\nconst searchUriTemplate = {\n path: ({ state, facet, pageIndex }: SearchStateParams) => {\n const currentFacet =\n getSearchContext(state) !== Context.listings &&\n (facet || getCurrentFacet(state));\n const currentPath = selectCurrentPath(state) || '/search';\n const newPath = currentFacet\n ? `${currentPath}/${currentFacet}`\n : currentPath;\n if (pageIndex) return `${newPath}/${pageIndex + 1}`;\n return newPath;\n },\n search: ({ state, facet, orderBy, term }: SearchStateParams) => {\n const searchContext = getSearchContext(state);\n // Lose stateFilters and currentSearch if a new\n // term is passed via an argument\n const stateFilters = term\n ? {}\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(queryString.parse(currentSearch));\n\n if (orderBy) currentQs.orderBy = orderBy;\n\n const searchTerm = getSearchTerm(state);\n // Use Immutable's merge to merge the stateFilters with any current Qs\n // to build the new Qs.\n const mergedSearch = removeEmptyAttributes({\n ...merge(currentQs, stateFilters),\n term: searchTerm,\n });\n\n return queryString.stringify(mergedSearch);\n },\n hash: {\n $path: 'state',\n $formatting: (state: AppState) =>\n getIn(state, ['routing', 'location', 'hash'], '').replace('#', ''),\n },\n};\n\nconst mapStateToSearchUri = (params: SearchStateParams) =>\n mapJson(params, searchUriTemplate) as {\n path: Location['pathname'];\n search: Location['search'];\n hash: Location['hash'];\n };\n\nexport default mapStateToSearchUri;\n","import { default as mapSearchResultToState } from 'jsonpath-mapper';\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';\n\nconst filterExpressionMapper = {\n // Expression type: so we can identify how to build the query\n expressionType: ({ filter }) =>\n filter.contentTypeId\n ? FilterExpressionTypes.contentType\n : FilterExpressionTypes.field,\n // Key: so we can target the query to a specific field\n key: 'filter.fieldId',\n // Value: so we can filter a specific field by an array of values\n // e.g. taxonomy key or contentTypeId array\n value: 'selectedValue',\n operator: 'filter.fieldOperator',\n};\n\nconst mapFilterToFilterExpression = filter =>\n mapJson(filter, filterExpressionMapper);\n\nexport default mapFilterToFilterExpression;\n","import mapFilterToFilterExpression from './filters-to-filterexpression.mapper';\n\nexport const mapFiltersToFilterExpression = (filters, selectedFilters) => {\n if (!selectedFilters || Object.keys(selectedFilters).length === 0) return [];\n const filterExpressions = [];\n\n // Iterate through the keys in selectedFilters and locate\n // the items that are selected and queryable\n Object.entries(selectedFilters).map(([fkey, selectedValue]) => {\n const filter = filters[fkey];\n if (selectedValue && filter) {\n const selectedItems =\n (filter.items && filter.items.filter(itm => itm.isSelected)) || [];\n\n // Where we have a value for a selectedFilter\n // and a filter is found for the current key\n // map the filter to a filterExpression object\n const expr = mapFilterToFilterExpression({\n filter,\n selectedItems,\n selectedValue,\n });\n filterExpressions.push(expr);\n }\n });\n return filterExpressions;\n};\n","import mapJson from 'jsonpath-mapper';\n\nimport {\n getFacet,\n getSelectedFilters,\n getQueryParameter,\n getSearchTerm,\n getPageIndex,\n getFilters,\n getCustomEnv,\n getPrevPageIndex,\n getPagesLoaded,\n selectVersionStatus,\n} from '../redux/selectors';\nimport { mapFiltersToFilterExpression } from './filters-to-filterexpression';\nimport { UPDATE_PAGE_INDEX } from '../redux/types';\nimport { QueryParams } from '../models/Queries';\nimport { AppState } from '../models/SearchState';\nimport { Context } from '../models/Enums';\nimport {\n EnsureSearchAction,\n SetSearchEntriesAction,\n} from '../models/SearchActions';\nimport { WeightedSearchField } from '../models/Search';\n\ntype QueryParamsMapperParams = {\n context: Context;\n facet: string;\n action: EnsureSearchAction | SetSearchEntriesAction;\n state: AppState;\n};\n\nconst queryParamsTemplate = {\n assetTypes: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'assetTypes', []),\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 ? getPageIndex(state, '', action.context) : 0;\n },\n pageSize: (root: QueryParamsMapperParams) =>\n getQueryParameter(root, 'pageSize'),\n pagesLoaded: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPagesLoaded(state, facet, context),\n prevPageIndex: ({ state, facet, context }: QueryParamsMapperParams) =>\n getPrevPageIndex(state, facet, context),\n projectId: ({ state, facet, context }: QueryParamsMapperParams) =>\n getFacet(state, facet, context)?.projectId,\n searchTerm: (root: QueryParamsMapperParams) =>\n root.context !== Context.minilist ||\n getQueryParameter(root, 'useSearchTerm', false)\n ? getSearchTerm(root.state)\n : '',\n selectedFilters: ({ state, facet, context }: QueryParamsMapperParams) =>\n 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 = getQueryParams(\n action.ogState || state,\n action.facet,\n action.context\n ) as QueryParams;\n stateParams.pageIndex = getPageIndex(\n action.ogState || state,\n action.facet,\n action.context\n );\n stateParams.searchTerm = getSearchTerm(action.ogState || state);\n console.log(stateParams, queryParams);\n\n console.log(\n 'getSelectedFilters',\n getSelectedFilters(\n action.ogState || state,\n action.facet,\n action.context,\n 'js'\n ),\n 'params',\n action.params\n );\n};\n","import { default as mapEntry } from 'jsonpath-mapper';\nimport { Fields } from '../search/schema';\n\n// *** FILTER ITEM MAPPING ***\n\n// Base mapping, fields that are the same across all mappings\n// to save repeating these elements in every mapper, spread this\n// into your discrete mappings\nconst base = {\n contentTypeId: Fields.sys.contentTypeId,\n title: 'entryTitle',\n key: 'sys.id',\n path: 'sys.slug',\n isSelected: 'isSelected',\n};\n\nconst mapEntriesToFilterItems = entries => {\n if (!entries) return [];\n return entries.map(entry => {\n const template = base;\n if (template) {\n return mapEntry(entry, template);\n }\n return entry;\n });\n};\n\nexport default mapEntriesToFilterItems;\n","import * as log from 'loglevel';\nimport { takeEvery, put, select, call, all } from 'redux-saga/effects';\nimport { 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 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(action: InitListingAction) {\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 // Using call instead of triggering from the put\n // to allow this exported saga to continue during SSR\n yield call(ensureSearch, { ...nextAction, ogState: state });\n}\n\nexport function* doSearch(action: TriggerSearchAction) {\n const state: AppState = 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 } as InitListingAction;\n yield put(nextAction);\n\n yield call(ensureSearch, { ...nextAction, ogState: state });\n}\n\nfunction* loadFilters(action: InitListingAction) {\n const { facet: facetKey, context, mappers = {} as Mappers } = action;\n const filtersToLoad = (yield select(\n getFiltersToLoad,\n facetKey,\n context,\n '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 = { ...action, ogState: action.ogState || state };\n\n const [queryParams, runSearch] = generateQueryParams(nextAction, state);\n\n if (debug && (debug === true || debug.executeSearch))\n debugExecuteSearch(nextAction, state);\n\n if (runSearch) {\n yield put({ type: EXECUTE_SEARCH, facet, context });\n yield call(executeSearch, {\n ...nextAction,\n context,\n facet,\n queryParams,\n debug,\n } as ExecuteSearchAction);\n }\n } catch (error: any) {\n // 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 && mappers.navigate) || mapStateToSearchUri;\n const uri = mapUri({ state, facet, orderBy, pageIndex, term });\n // return uri;\n return `${uri.path}${(uri.search && `?${uri.search}`) || ''}${\n (uri.hash && `#${uri.hash}`) || ''\n }`;\n}\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSelector } from 'reselect';\n\nimport { Context } from '../models/Enums';\nimport { 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 = (\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 pagingInfo,\n results,\n searchTerm,\n title: facet.title,\n };\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 { ConfigTypes, Facet, Listing, SearchConfig } from '../models/Search';\nimport { Context } from '../models/Enums';\nimport {\n Facet as SearchFacet,\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, Facet | 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(\n ([paramName = '', paramValue]) =>\n typeof paramValue === 'string' &&\n paramValue\n .split(',')\n .map(pVal => (filters = addFilterItem(filters, paramName, pVal)))\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: SearchFacet) => {\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;\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 } = 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 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","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const Context = {\n facets: 'facets',\n listings: 'listings',\n minilist: 'minilist',\n};\nexport * from './models';\n\nexport { default as withSearch } from './containers/withSearch';\nexport { default as withListing } from './containers/withListing';\nexport { doSearch, setRouteFilters, searchSagas as sagas } from './redux/sagas';\n\nexport { default as useMinilist } from './hooks/useMinilist.hook';\n\nexport * as actions from './redux/actions';\nexport * as queries from './redux/queries';\nexport { default as reducer } from './redux/reducers';\nexport * as schema from './redux/schema';\nexport * as selectors from './redux/selectors';\nexport * as types from './redux/types';\n"],"names":["toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","ACTION_PREFIX","APPLY_CONFIG","CLEAR_FILTERS","DO_SEARCH","EXECUTE_SEARCH","EXECUTE_SEARCH_ERROR","EXECUTE_SEARCH_PRELOAD","LOAD_FILTERS","LOAD_FILTERS_COMPLETE","LOAD_FILTERS_ERROR","SET_FEATURED_ENTRIES","SET_ROUTE_FILTERS","SET_SEARCH_FILTERS","SET_SEARCH_ENTRIES","SET_SELECTED_FILTER","UPDATE_CURRENT_FACET","UPDATE_CURRENT_TAB","UPDATE_SORT_ORDER","UPDATE_PAGE_INDEX","UPDATE_SEARCH_TERM","UPDATE_SELECTED_FILTERS","withMappers","action","mappers","triggerSearch","config","context","debug","defaultLang","excludeIds","facet","mapper","params","type","initListing","navigate","path","state","clearFilters","updatePageIndex","pageIndex","updateCurrentFacet","updateCurrentTab","id","updateSearchTerm","term","updateSelectedFilters","filter","key","updateSortOrder","orderBy","Context","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","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","queryString","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","param","withContentTypeIds","notContentTypeIds","substring","andExpr","and","dataFormatExpr","withExpr","notExpr","not","add","featuredResultsExpression","fieldValue","languagesExpression","languages","includeInSearchExpressions","includeInSearchFields","includeInSearchField","exists","equalTo","defaultExpressions","excludeIdsExpression","expr","orderByExpression","expression","OrderBy","ob","desc","asc","in","handle","betweenValue","valArr","minimum","maximum","console","log","bc","op","customWhereExpressions","where","clause","keys","idx","k","includes","recurseExpr","notKey","notIdx","innerOperator","innerValue","innerField","clauseKey","termExpressions","weightedSearchFields","quotedPhrases","modifiedSearchTerm","qp","trim","operators","containsOp","freeTextOp","wsf","fieldOperators","addRange","freeText","contains","filterQuery","customWhere","Query","pageSize","searchQuery","dynamicOrderBy","fields","isFeatured","count","searchUriTemplate","currentPath","newPath","searchContext","stateFilters","currentSearch","currentQs","parse","mergedSearch","merge","hash","$path","$formatting","mapStateToSearchUri","mapJson","mapEntriesToSearchResults","mapperFunc","facetTemplate","nextFacet","featuredEntries","featuredResult","queryDuration","pageCount","$default","pagesLoaded","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","selectedValue","selectedItems","itm","queryParamsTemplate","root","filterParams","internalPageIndex","internalPaging","minilist","deduped","findIndex","mapStateToQueryParams","sourceJson","generateQueryParams","runSearch","ssr","willRun","facetIsLoaded","stateParams","filterParamsChanged","queryParam","paramsChanged","selectedValues","inboundValues","debugExecuteSearch","base","mapEntriesToFilterItems","template","mapEntry","searchSagas","takeEvery","doSearch","loadFilters","preloadOtherFacets","applySearchFilter","setRouteFilters","listingType","select","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","makeSelectMinilistProps","createSelector","_","useMinilist","dispatch","useDispatch","selectMinilistProps","useMemo","useSelector","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/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) => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n []\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),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings),\n getFiltersToLoad: (state: AppState, listing = '') =>\n getFiltersToLoad(state, listing, Context.listings),\n getListing,\n getIsLoaded: (state: AppState) => getIsLoaded(state, Context.listings),\n getIsLoading: (state: AppState) => getIsLoading(state, Context.listings),\n getPageIndex: (state: AppState, listing = '') =>\n getPageIndex(state, listing, Context.listings),\n getPaging: (state: AppState, listing = '') =>\n getPaging(state, listing, Context.listings),\n getPageIsLoading: (state: AppState, listing = '') =>\n getPageIsLoading(state, listing, Context.listings),\n getPagesLoaded: (state: AppState, listing = '') =>\n getPagesLoaded(state, listing, Context.listings),\n getQueryParams: (state: AppState, listing = '') =>\n getQueryParams(state, listing, Context.listings),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet?: string },\n key: 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),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n 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 (nextAction.facet) {\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 { ListingProps, UseListingProps } from '../models/SearchProps';\nimport { AppState } from '../models/SearchState';\nimport { selectListing } from '../redux/selectors';\nimport { Mappers } from '../models/Search';\n\nconst {\n getCurrent,\n getFeaturedResults,\n getIsLoading,\n getListing,\n getPageIndex,\n getPageIsLoading,\n getPaging,\n getQueryParameter,\n getRenderableFilters,\n getResults,\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),\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\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 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 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","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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"}