@zengenti/contensis-react-base 3.0.0-beta.6 → 3.0.0-beta.62

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 (164) hide show
  1. package/README.md +4 -4
  2. package/cjs/{App-3324f784.js → App-6e2518eb.js} +204 -174
  3. package/cjs/App-6e2518eb.js.map +1 -0
  4. package/cjs/{RouteLoader-c7957b14.js → RouteLoader-2675e1c9.js} +31 -23
  5. package/cjs/RouteLoader-2675e1c9.js.map +1 -0
  6. package/cjs/ToJs-a9a8522b.js +129 -0
  7. package/cjs/ToJs-a9a8522b.js.map +1 -0
  8. package/cjs/VersionInfo-4c9dfa6a.js +181 -0
  9. package/cjs/VersionInfo-4c9dfa6a.js.map +1 -0
  10. package/cjs/{actions-a24bf46e.js → actions-8dc9e8de.js} +5 -4
  11. package/cjs/actions-8dc9e8de.js.map +1 -0
  12. package/cjs/client.js +16 -21
  13. package/cjs/client.js.map +1 -1
  14. package/cjs/contensis-react-base.js +3583 -38
  15. package/cjs/contensis-react-base.js.map +1 -1
  16. package/cjs/forms.js +4114 -195
  17. package/cjs/forms.js.map +1 -1
  18. package/cjs/{fromJSLeaveImmer-c00d597f.js → fromJSLeaveImmer-e74c673c.js} +2 -16
  19. package/cjs/fromJSLeaveImmer-e74c673c.js.map +1 -0
  20. package/cjs/{login-c810cc4c.js → login-6b9de6a1.js} +92 -55
  21. package/cjs/login-6b9de6a1.js.map +1 -0
  22. package/cjs/{reducers-fde41d6b.js → reducers-3a4f8971.js} +26 -25
  23. package/cjs/reducers-3a4f8971.js.map +1 -0
  24. package/cjs/redux.js +6 -5
  25. package/cjs/redux.js.map +1 -1
  26. package/cjs/routing.js +5 -4
  27. package/cjs/routing.js.map +1 -1
  28. package/cjs/sagas-8cf21563.js +2038 -0
  29. package/cjs/sagas-8cf21563.js.map +1 -0
  30. package/cjs/search.js +280 -1907
  31. package/cjs/search.js.map +1 -1
  32. package/cjs/{selectors-0ec95076.js → selectors-656da4b7.js} +8 -3
  33. package/cjs/selectors-656da4b7.js.map +1 -0
  34. package/cjs/user.js +21 -12
  35. package/cjs/user.js.map +1 -1
  36. package/cjs/util.js +55 -212
  37. package/cjs/util.js.map +1 -1
  38. package/cjs/{version-4f0f5fa6.js → version-b3e55cdf.js} +28 -20
  39. package/cjs/version-b3e55cdf.js.map +1 -0
  40. package/cjs/{version-085d203d.js → version-eba6d09b.js} +5 -5
  41. package/cjs/version-eba6d09b.js.map +1 -0
  42. package/esm/{App-1b05ab11.js → App-5efba16c.js} +204 -175
  43. package/esm/App-5efba16c.js.map +1 -0
  44. package/esm/{RouteLoader-e5f0e8cb.js → RouteLoader-f96a61c1.js} +31 -23
  45. package/esm/RouteLoader-f96a61c1.js.map +1 -0
  46. package/esm/ToJs-affd73f1.js +99 -0
  47. package/esm/ToJs-affd73f1.js.map +1 -0
  48. package/esm/VersionInfo-f5403b09.js +172 -0
  49. package/esm/VersionInfo-f5403b09.js.map +1 -0
  50. package/esm/{actions-927d9698.js → actions-fcfc8704.js} +5 -4
  51. package/esm/actions-fcfc8704.js.map +1 -0
  52. package/esm/client.js +17 -22
  53. package/esm/client.js.map +1 -1
  54. package/esm/contensis-react-base.js +3581 -37
  55. package/esm/contensis-react-base.js.map +1 -1
  56. package/esm/forms.js +4114 -198
  57. package/esm/forms.js.map +1 -1
  58. package/esm/{fromJSLeaveImmer-392af4e3.js → fromJSLeaveImmer-0114ffcf.js} +2 -16
  59. package/esm/fromJSLeaveImmer-0114ffcf.js.map +1 -0
  60. package/esm/{login-f8ba3aeb.js → login-ca2dc2f7.js} +92 -55
  61. package/esm/login-ca2dc2f7.js.map +1 -0
  62. package/esm/{reducers-d6c0edb1.js → reducers-8e5d6232.js} +26 -25
  63. package/esm/reducers-8e5d6232.js.map +1 -0
  64. package/esm/redux.js +8 -7
  65. package/esm/redux.js.map +1 -1
  66. package/esm/routing.js +5 -4
  67. package/esm/routing.js.map +1 -1
  68. package/esm/sagas-a22fc54a.js +1952 -0
  69. package/esm/sagas-a22fc54a.js.map +1 -0
  70. package/esm/search.js +240 -1848
  71. package/esm/search.js.map +1 -1
  72. package/esm/{selectors-b98d5c76.js → selectors-337be432.js} +7 -4
  73. package/esm/selectors-337be432.js.map +1 -0
  74. package/esm/user.js +23 -14
  75. package/esm/user.js.map +1 -1
  76. package/esm/util.js +54 -209
  77. package/esm/util.js.map +1 -1
  78. package/esm/{version-16aa83eb.js → version-470f0b15.js} +27 -20
  79. package/esm/version-470f0b15.js.map +1 -0
  80. package/esm/version-6dd7b2cd.js +15 -0
  81. package/esm/version-6dd7b2cd.js.map +1 -0
  82. package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +1 -1
  83. package/models/forms/index.d.ts +2 -0
  84. package/models/index.d.ts +1 -0
  85. package/models/redux/appstate.d.ts +5 -10
  86. package/models/redux/selectors/navigation.d.ts +2 -1
  87. package/models/routing/components/RouteLoader.d.ts +2 -19
  88. package/models/routing/redux/actions.d.ts +1 -1
  89. package/models/routing/redux/selectors.d.ts +1 -1
  90. package/models/routing/routes.d.ts +9 -3
  91. package/models/routing/util/expressions.d.ts +3 -2
  92. package/models/routing/util/queries.d.ts +1 -1
  93. package/models/search/containers/withListing.d.ts +1 -1
  94. package/models/search/containers/withSearch.d.ts +1 -1
  95. package/models/search/hooks/useFacets.hook.d.ts +3 -0
  96. package/models/search/hooks/useListing.hook.d.ts +3 -0
  97. package/models/search/hooks/useMinilist.hook.d.ts +2 -9
  98. package/models/search/index.d.ts +4 -1
  99. package/models/search/models/Queries.d.ts +8 -5
  100. package/models/search/models/Search.d.ts +60 -28
  101. package/models/search/models/SearchActions.d.ts +4 -3
  102. package/models/search/models/SearchProps.d.ts +52 -7
  103. package/models/search/models/SearchState.d.ts +5 -1
  104. package/models/search/models/index.d.ts +3 -1
  105. package/models/search/redux/actions.d.ts +2 -1
  106. package/models/search/redux/reducers.d.ts +230 -314
  107. package/models/search/redux/sagas.d.ts +5 -5
  108. package/models/search/redux/selectors.d.ts +19 -22
  109. package/models/search/search/ContensisDeliveryApi.d.ts +1 -0
  110. package/models/search/search/expressions.d.ts +3 -6
  111. package/models/search/{redux → search}/queries.d.ts +0 -0
  112. package/models/search/transformations/entry-to-filteritem.mapper.d.ts +2 -1
  113. package/models/search/transformations/filter-to-filterexpression.mapper.d.ts +6 -0
  114. package/models/search/transformations/filters-to-filterexpressions.mapper.d.ts +3 -0
  115. package/models/search/transformations/index.d.ts +3 -0
  116. package/models/search/transformations/queryParams-to-customapi.mapper.d.ts +3 -0
  117. package/models/search/transformations/state-to-searchuri.d.ts +2 -13
  118. package/models/server/features/linkdepth-api/api.d.ts +12 -0
  119. package/models/server/features/linkdepth-api/events-api.config.d.ts +37 -0
  120. package/models/server/middleware/bundleManipulation.d.ts +2 -1
  121. package/models/server/util/headers.d.ts +3 -2
  122. package/models/user/components/Login.d.ts +1 -2
  123. package/models/user/components/LoginForm.d.ts +1 -2
  124. package/models/user/hocs/withLogin.d.ts +4 -2
  125. package/models/user/hocs/withRegistration.d.ts +4 -2
  126. package/models/user/hooks/useChangePassword.d.ts +5 -5
  127. package/models/user/hooks/useForgotPassword.d.ts +6 -6
  128. package/models/user/hooks/useLogin.d.ts +9 -45
  129. package/models/user/hooks/useRegistration.d.ts +4 -4
  130. package/models/user/redux/reducers.d.ts +4 -5
  131. package/models/user/redux/sagas/login.d.ts +11 -8
  132. package/models/user/redux/selectors.d.ts +33 -71
  133. package/models/user/util/LoginHelper.class.d.ts +4 -3
  134. package/models/util/ContensisDeliveryApi.d.ts +1 -3
  135. package/models/util/json-mapper.d.ts +9 -3
  136. package/models/util/merge.d.ts +1 -0
  137. package/package-lock.json +2690 -3400
  138. package/package.json +60 -55
  139. package/cjs/App-3324f784.js.map +0 -1
  140. package/cjs/RouteLoader-c7957b14.js.map +0 -1
  141. package/cjs/ToJs-a38fa20e.js +0 -230
  142. package/cjs/ToJs-a38fa20e.js.map +0 -1
  143. package/cjs/actions-a24bf46e.js.map +0 -1
  144. package/cjs/fromJSLeaveImmer-c00d597f.js.map +0 -1
  145. package/cjs/login-c810cc4c.js.map +0 -1
  146. package/cjs/reducers-fde41d6b.js.map +0 -1
  147. package/cjs/selectors-0ec95076.js.map +0 -1
  148. package/cjs/version-085d203d.js.map +0 -1
  149. package/cjs/version-4f0f5fa6.js.map +0 -1
  150. package/esm/App-1b05ab11.js.map +0 -1
  151. package/esm/RouteLoader-e5f0e8cb.js.map +0 -1
  152. package/esm/ToJs-879a5a85.js +0 -199
  153. package/esm/ToJs-879a5a85.js.map +0 -1
  154. package/esm/actions-927d9698.js.map +0 -1
  155. package/esm/fromJSLeaveImmer-392af4e3.js.map +0 -1
  156. package/esm/login-f8ba3aeb.js.map +0 -1
  157. package/esm/reducers-d6c0edb1.js.map +0 -1
  158. package/esm/selectors-b98d5c76.js.map +0 -1
  159. package/esm/version-16aa83eb.js.map +0 -1
  160. package/esm/version-3833e8b5.js +0 -15
  161. package/esm/version-3833e8b5.js.map +0 -1
  162. package/models/search/transformations/filters-to-filterexpression.d.ts +0 -1
  163. package/models/search/transformations/filters-to-filterexpression.mapper.d.ts +0 -2
  164. package/models/server/features/caching/cacheHashing.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sagas-8cf21563.js","sources":["../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/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/search/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/transformations/queryParams-to-customapi.mapper.ts","../node_modules/zengenti-search-package/src/app/zengenti-search-package/redux/sagas.ts"],"sourcesContent":["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, SearchQueryParams } from '../models/Search';\nimport {\n AppState,\n Facet,\n Facets,\n Filters,\n Paging,\n SelectedFilters,\n Tab,\n TabAndFacets,\n} from '../models/SearchState';\nimport getIn, { makeFromJS } from './getIn';\n\ntype StateType = 'immutable' | 'js';\n\nexport const getSearchContext = (state: AppState): Context =>\n getIn(state, ['search', 'context'], Context.facets);\n\nexport const getCurrent = (state: AppState, context = Context.facets) =>\n context === Context.facets\n ? getCurrentFacet(state)\n : getCurrentListing(state);\n\nexport const getCurrentFacet = (state: AppState): string =>\n getIn(state, ['search', 'currentFacet']);\n\nexport const getCurrentListing = (state: AppState): string =>\n getIn(state, ['search', 'currentListing']);\n\nexport const getCurrentTab = (state: AppState): number =>\n getIn(state, ['search', Context.facets, getCurrentFacet(state), 'tabId'], 0);\n\nexport const getFacets = (state: AppState, returnType?: StateType): Facets =>\n getIn(state, ['search', Context.facets], {}, returnType);\n\nexport const getTabFacets = (state: AppState) =>\n Object.fromEntries(\n Object.entries(getFacets(state, 'js')).filter(\n ([key]) =>\n getIn(getFacets(state), [key, 'tabId'], 0) === getCurrentTab(state)\n )\n );\n\nexport const getFacetTitles = (state: AppState) =>\n Object.entries(getFacets(state, 'js')).map(([key, facet = {}]) => ({\n isSelected: getCurrentFacet(state) === key,\n key,\n title: facet.title as string | undefined,\n totalCount: facet.pagingInfo?.totalCount as number,\n }));\n\nexport const getFacet = (\n state: AppState,\n facetName = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n const currentFacet = facetName || getCurrentFacet(state);\n return getIn(\n state,\n ['search', context, currentFacet],\n {},\n returnType\n ) as Facet;\n};\n\nexport const getListing = (state: AppState, listing = '') => {\n const currentListing = listing || getCurrentListing(state);\n return getIn(\n state,\n ['search', Context.listings, currentListing],\n {}\n ) as Facet;\n};\n\nexport const getFilters = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n): Filters => {\n return getIn(\n state,\n ['search', context, facet || getCurrent(state, context), 'filters'],\n {},\n returnType\n );\n};\n\nexport const getRenderableFilters = (\n state: AppState,\n facet = '',\n context = Context.facets\n): Filters =>\n Object.fromEntries(\n Object.entries(getFilters(state, facet, context, 'js')).filter(\n ([, f = {}]) => (typeof f.renderable !== 'boolean' ? true : f.renderable)\n )\n );\n\nexport const getFiltersToLoad = (\n state: AppState,\n facet: string,\n context = Context.facets,\n returnType?: StateType\n) => {\n const filters = getFilters(state, facet, context, returnType);\n const loadedFilters = Object.entries(filters).map(([key, f = {}]) => [\n key,\n (f.items || []).filter(i => {\n const title = i?.title;\n return typeof title !== 'undefined' && !!title;\n }).length > 0 && (f.isError || false) === false,\n ]);\n return loadedFilters\n .map(([filterKey, isLoaded]) => (!isLoaded ? filterKey : null))\n .filter(f => !!f) as string[];\n};\n\n// We lowercase the filter key unless it's an ISO date string where the T must be uppercase\nexport const getSelectedFilters = (\n state: AppState,\n facet = '',\n context = Context.facets,\n returnType?: StateType\n): SelectedFilters => {\n const filters = getFilters(state, facet, context, 'js');\n const isoDateRegex = RegExp(/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d/);\n\n const selectedFilters = Object.fromEntries(\n Object.entries(filters).map(([key, filter = {}]) => [\n key,\n (filter.items || [])\n .filter(item => !!(item.isSelected || false))\n .map(item => {\n const key = item?.key || '';\n const isIsoDate = isoDateRegex.test(key);\n return isIsoDate\n ? key\n : typeof key.toLowerCase !== 'undefined'\n ? key.toLowerCase()\n : key;\n }),\n ])\n );\n const fromJS = makeFromJS(returnType);\n return fromJS(selectedFilters);\n};\n\nexport const getResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'results'],\n [],\n returnType\n ) as any[];\n};\n\nexport const getIsInternalPaging = (\n state: AppState,\n current: string,\n context = Context.facets\n): boolean => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'queryParams',\n 'internalPaging',\n ],\n false\n );\n};\n\nexport const getIsLoaded = (\n state: AppState,\n context = Context.facets,\n facet?: string\n) => {\n return !!getIn(\n state,\n ['search', context, facet || getCurrent(state, context), 'queryDuration'],\n 0\n );\n};\n\nexport const getIsLoading = (\n state: AppState,\n context = Context.facets,\n facet?: string\n): boolean => {\n return getIn(state, [\n 'search',\n context,\n facet || getCurrent(state, context),\n 'entries',\n 'isLoading',\n ]);\n};\n\nexport const getIsSsr = (state: AppState): boolean =>\n getIn(state, ['search', 'config', 'ssr'], false);\n\nexport const getFeaturedResults = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n) => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'featuredResults',\n ],\n [],\n returnType\n ) as any[];\n};\n\nexport const getPaging = (\n state: AppState,\n current = '',\n context = Context.facets,\n returnType?: StateType\n): Paging => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'pagingInfo'],\n {},\n returnType\n );\n};\n\nexport const getPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pageIndex',\n ]);\n};\n\nexport const getPrevPageIndex = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'prevPageIndex',\n ]);\n};\nexport const getPageIsLoading = (\n state: AppState,\n current = '',\n context = Context.facets\n): boolean => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'isLoading',\n ]);\n};\n\nexport const getPagesLoaded = (\n state: AppState,\n current = '',\n context = Context.facets\n): number[] => {\n return getIn(\n state,\n [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'pagesLoaded',\n ],\n [],\n 'js'\n );\n};\n\nexport const getTotalCount = (\n state: AppState,\n current = '',\n context = Context.facets\n): number => {\n return getIn(state, [\n 'search',\n context,\n current || getCurrent(state, context),\n 'pagingInfo',\n 'totalCount',\n ]);\n};\n\nexport const getSearchTerm = (state: AppState): string =>\n getIn(state, ['search', 'term']);\n\nexport const getSearchTabs = (state: AppState, returnType?: StateType): Tab[] =>\n getIn(state, ['search', 'tabs'], [], returnType);\n\nexport const getQueryParams = (\n state: AppState,\n current = '',\n context = Context.facets\n) => {\n return getIn(\n state,\n ['search', context, current || getCurrent(state, context), 'queryParams'],\n {},\n 'js'\n ) as Record<string, any>;\n};\n\nexport const getQueryParameter = <\n K extends keyof SearchQueryParams,\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): SearchQueryParams[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): number => {\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 SearchQueryParams | keyof QueryParams2,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.facets }, key, ifnull),\n getRenderableFilters,\n getResults,\n getTabFacets,\n getTabsAndFacets,\n getTotalCount,\n getSearchTabs,\n getSearchTerm,\n getSearchTotalCount,\n getSelectedFilters,\n};\n\n// An exported copy of the relevant selectors pre-scoped to a listing context\nexport const selectListing = {\n getCurrent: getCurrentListing,\n getFeaturedResults: (state: AppState, listing = '') =>\n getFeaturedResults(state, listing, Context.listings, 'js'),\n getFilters: (state: AppState, listing = '') =>\n getFilters(state, listing, Context.listings, 'js'),\n getFiltersToLoad: (state: AppState, listing = '') =>\n getFiltersToLoad(state, listing, Context.listings),\n getListing,\n getIsLoaded: (state: AppState) => getIsLoaded(state, Context.listings),\n getIsLoading: (state: AppState) => getIsLoading(state, Context.listings),\n getPageIndex: (state: AppState, listing = '') =>\n getPageIndex(state, listing, Context.listings),\n getPaging: (state: AppState, listing = '') =>\n getPaging(state, listing, Context.listings, 'js'),\n getPageIsLoading: (state: AppState, listing = '') =>\n getPageIsLoading(state, listing, Context.listings),\n getPagesLoaded: (state: AppState, listing = '') =>\n getPagesLoaded(state, listing, Context.listings),\n getQueryParams: (state: AppState, listing = '') =>\n getQueryParams(state, listing, Context.listings),\n getQueryParameter: (\n { state, facet }: { state: AppState; facet?: string },\n key: keyof SearchQueryParams | keyof QueryParams2,\n ifnull: any\n ) =>\n getQueryParameter({ state, facet, context: Context.listings }, key, ifnull),\n getRenderableFilters: (state: AppState, listing = '') =>\n getRenderableFilters(state, listing, Context.listings),\n getResults: (state: AppState, listing = '') =>\n getResults(state, listing, Context.listings, 'js'),\n getSearchTerm,\n getTotalCount: (state: AppState, listing = '') =>\n getTotalCount(state, listing, Context.listings),\n getSelectedFilters: (state: AppState, listing = '') =>\n getSelectedFilters(state, listing, Context.listings, 'js'),\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n getIn(state, ['routing', 'currentPath']);\n\nexport const selectCurrentProject = (state: AppState) =>\n getIn(state, ['routing', 'currentProject']);\n\nexport const selectVersionStatus = (state: AppState) =>\n getIn(state, ['version', 'contensisVersionStatus']);\n","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 fetch(uri, opts = {}) {\n return this.request(`[FETCH] ${uri} ${JSON.stringify(opts)}`, () =>\n fetch(uri, opts)\n );\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 cachedSearch.fetch(uri);\n return (await response.clone().json()) as T;\n};\n\nexport const removeEmptyAttributes = (obj: any) => {\n Object.entries(obj).forEach(\n ([key, val]) =>\n (val && typeof val === 'object' && removeEmptyAttributes(val)) ||\n ((typeof val === 'undefined' || val === null || val === '') &&\n delete obj[key])\n );\n return obj;\n};\n\nexport const toArray = (obj: string | null, seperator = ',') =>\n typeof obj === 'undefined' || obj === null\n ? obj\n : Array.isArray(obj)\n ? (obj as string[])\n : obj.split(seperator);\n\n// assumes array elements are primitive types\nexport const areArraysEqualSets = (a1: any[], a2: any[]) => {\n const superSet = {} as { [key: string]: any };\n for (const ai of a1) {\n const e = ai + typeof ai;\n superSet[e] = 1;\n }\n\n for (const ai of a2) {\n const e = ai + typeof ai;\n if (!superSet[e]) {\n return false;\n }\n superSet[e] = 2;\n }\n\n for (const e in superSet) {\n if (superSet[e] === 1) {\n return false;\n }\n }\n\n return true;\n};\n","export const DataFormats = {\n asset: 'asset',\n entry: 'entry',\n webpage: 'webpage',\n};\n\nexport const FilterExpressionTypes = {\n contentType: 'contentType',\n field: 'field',\n};\n\nconst sys = {\n allUris: 'sys.allUris',\n contentTypeId: 'sys.contentTypeId',\n dataFormat: 'sys.dataFormat',\n filename: 'sys.properties.filename',\n id: 'sys.id',\n includeInSearch: 'sys.metadata.includeInSearch',\n language: 'sys.language',\n uri: 'sys.uri',\n versionStatus: 'sys.versionStatus',\n};\n\nexport const Fields = {\n entryDescription: 'entryDescription',\n entryTitle: 'entryTitle',\n keywords: 'keywords',\n searchContent: 'searchContent',\n sys,\n contentTypeId: 'sys.contentTypeId',\n wildcard: '*',\n};\n","import {\n IExpression,\n ILogicalExpression,\n Op,\n OrderBy,\n VersionStatus,\n} from 'contensis-core-api';\nimport { Fields, DataFormats } from '../search/schema';\nimport { fixFreeTextForElastic, extractQuotedPhrases } from './util';\nimport { CustomWhereClause, WeightedSearchField } from '../models/Search';\nimport { FieldOperators, FilterExpression } from '../models/Queries';\n\nexport const fieldExpression = (\n field: string | string[],\n value: any,\n operator: FieldOperators = 'equalTo',\n weight?: number\n): IExpression[] => {\n if (!field || !value || (Array.isArray(value) && value.length === 0))\n return [];\n if (Array.isArray(field))\n // If an array of fieldIds have been provided, call self for each fieldId\n // to generate expressions that are combined with an 'or' operator\n return [\n Op.or(\n ...field\n .map(fieldId => fieldExpression(fieldId, value, operator, weight))\n .flat()\n ),\n ];\n\n if (operator === 'between') return between(field, value);\n if (Array.isArray(value)) return equalToOrIn(field, value, operator);\n else\n return !weight\n ? equalToOrIn(field, value, operator)\n : [equalToOrIn(field, value, operator)[0].weight(weight)];\n};\n\nexport const contentTypeIdExpression = (\n contentTypeIds: string[],\n webpageTemplates?: string[],\n assetTypes?: string[]\n) => {\n const expressions: ILogicalExpression[] = [];\n if (!contentTypeIds && !webpageTemplates && !assetTypes) return expressions;\n\n if (contentTypeIds && contentTypeIds.length > 0) {\n expressions.push(\n ...dataFormatExpression(contentTypeIds, DataFormats.entry)\n );\n }\n\n if (webpageTemplates && webpageTemplates.length > 0) {\n expressions.push(\n ...dataFormatExpression(webpageTemplates, DataFormats.webpage)\n );\n }\n\n if (assetTypes && assetTypes.length > 0) {\n expressions.push(...dataFormatExpression(assetTypes, DataFormats.asset));\n }\n\n if (expressions.length > 1) return [Op.or(...expressions)];\n\n return expressions;\n};\n\nexport const filterExpressions = (\n filters: FilterExpression[],\n isOptional = false\n) => {\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 if (isOptional)\n expressions.push(\n Op.not(fieldExpression(selectedFilter.key, true, 'exists')[0])\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 includeIdsExpression = (includeIds: string[]) => {\n if (Array.isArray(includeIds) && includeIds.length > 0) {\n return fieldExpression(Fields.sys.id, includeIds);\n } else return [];\n};\n\nexport const excludeIdsExpression = (excludeIds: string[]) => {\n if (Array.isArray(excludeIds) && excludeIds.length > 0) {\n const [expr] = fieldExpression(Fields.sys.id, excludeIds);\n return [Op.not(expr)];\n } else return [];\n};\n\nexport const orderByExpression = (orderBy: string[]) => {\n let expression = OrderBy;\n if (orderBy && orderBy.length > 0) {\n orderBy.map(\n ob =>\n (expression = ob.startsWith('-')\n ? expression.desc(ob.substring(1))\n : expression.asc(ob))\n );\n }\n return expression;\n};\n\nconst equalToOrIn = (\n field: string,\n value: string | string[],\n operator: FieldOperators = 'equalTo'\n) => {\n if (value.length === 0) return [];\n if (Array.isArray(value)) {\n if (operator === 'equalTo' || operator === 'in')\n return [Op.in(field, ...value)];\n const expressions = value.map(innerValue => {\n switch (operator) {\n case 'between':\n return between(field, innerValue)?.[0];\n case 'distanceWithin':\n return distanceWithin(field, innerValue)?.[0];\n case 'exists':\n return Op.exists(field, innerValue as any);\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return Op[operator](field, innerValue, false, undefined);\n default:\n return Op[operator](field, innerValue);\n }\n });\n return expressions?.length > 1\n ? [Op.or(...expressions)]\n : expressions || [];\n }\n switch (operator) {\n case 'between':\n return between(field, value);\n case 'distanceWithin':\n return distanceWithin(field, value);\n case 'freeText':\n // TODO: Potentially needs further implementation of new options\n return [Op.freeText(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\nconst distanceWithin = (field: string, value: string | string[]) => {\n const handle = (distanceValue: string) => {\n const valArr = distanceValue.split(' ');\n if (valArr.length > 1) {\n const [lat, lon] = valArr;\n return Op.distanceWithin(\n field,\n Number(lat),\n Number(lon),\n valArr?.[2] || '10mi'\n );\n } else {\n // eslint-disable-next-line no-console\n console.log(\n `[search] You have supplied only one value to a \"distanceWithin\" operator which must be made up of \"lat,lon,distance\". 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 = Op.not(\n makeJsExpression(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 (idx === 1) {\n expression = makeJsExpression(operator, field, value);\n\n if (typeof weight === 'number') expression = expression.weight(weight);\n }\n });\n return expression;\n }) as IExpression[];\n};\n\nconst makeJsExpression = (\n operator: FieldOperators,\n field: string,\n value: any\n) =>\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 : operator === 'distanceWithin'\n ? Op[operator](field, value?.lat, value?.lon, value?.distance)\n : Op[operator](field, value);\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 './expressions';\nimport { Fields } from './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 mapJson from 'jsonpath-mapper';\nimport { QueryParams } from '../models';\n\nconst mapQueryParamsToCustomApi = (queryParams: QueryParams) => {\n const customApiMapping = {\n fields: ({ fields }: QueryParams) => JSON.stringify(fields),\n orderBy: 'orderBy',\n linkDepth: 'linkDepth',\n pageSize: 'pageSize',\n pageIndex: 'pageIndex',\n term: { $path: 'searchTerm', $disable: (t: string) => !t },\n versionStatus: 'versionStatus',\n };\n\n Object.keys(queryParams.selectedFilters).forEach(k => {\n customApiMapping[k] = {\n $path: `selectedFilters.${k}`,\n $disable: (f: string) => !f,\n };\n });\n\n return mapJson(queryParams, customApiMapping);\n};\nexport default mapQueryParamsToCustomApi;\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 '../search/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';\nimport mapQueryParamsToCustomApi from '../transformations/queryParams-to-customapi.mapper';\n\nexport const searchSagas = [\n takeEvery(CLEAR_FILTERS, clearFilters),\n takeEvery(DO_SEARCH, doSearch),\n takeEvery(SET_ROUTE_FILTERS, loadFilters),\n takeEvery(SET_SEARCH_ENTRIES, preloadOtherFacets),\n takeEvery(UPDATE_CURRENT_FACET, updateCurrentFacet),\n takeEvery(UPDATE_CURRENT_TAB, updateCurrentTab),\n takeEvery(UPDATE_PAGE_INDEX, updatePageIndex),\n takeEvery(UPDATE_SEARCH_TERM, updateSearchTerm),\n takeEvery(UPDATE_SORT_ORDER, updateSortOrder),\n takeEvery(UPDATE_SELECTED_FILTERS, applySearchFilter),\n];\n\nconst toJS = (obj: any) =>\n obj && 'toJS' in obj && typeof obj.toJS === 'function' ? obj.toJS() : obj;\n\nexport function* setRouteFilters(\n action: InitListingAction | SetRouteFiltersOptions\n) {\n const { mappers, params, listingType, defaultLang, debug } = action;\n const context = listingType ? Context.listings : Context.facets;\n const state: AppState = toJS(yield select());\n const ssr = getIsSsr(state);\n\n // Get current facet from params or state\n let currentFacet = (params && params.facet) || listingType;\n\n // Pick the default facet from initialState\n if (!currentFacet) {\n const tabs = getSearchTabs(state, 'js');\n currentFacet =\n tabs?.[0].defaultFacet || Object.keys(getFacets(state, 'js'))?.[0] || '';\n }\n\n const nextAction = {\n type: SET_ROUTE_FILTERS,\n context,\n facet: currentFacet,\n mappers,\n params,\n defaultLang,\n ssr,\n debug,\n } as InitListingAction;\n yield put(nextAction);\n\n // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\n\n // Using call instead of triggering from the put\n // to allow this exported saga to continue during SSR\n yield call(ensureSearch, { ...nextAction, ogState });\n}\n\nexport function* doSearch(action: TriggerSearchAction) {\n const state: AppState = toJS(yield select());\n if (action.config) {\n // If the action contains a config object, we can add this to the\n // state at runtime\n yield put({ ...action, type: APPLY_CONFIG });\n }\n\n const nextAction = {\n ...action,\n type: SET_SEARCH_FILTERS,\n ssr: getIsSsr(state),\n facet: action.facet || action.params?.facet,\n } as InitListingAction;\n\n if (\n nextAction.facet &&\n (action.config ||\n Object.keys(getFacet(state, nextAction.facet, action.context, 'js'))\n .length > 0)\n ) {\n yield put(nextAction);\n\n // keep track of this state ref for comparing changes to params later\n const ogState = { search: state.search };\n\n yield call(ensureSearch, { ...nextAction, ogState });\n }\n}\n\nfunction* loadFilters(action: InitListingAction) {\n const { facet: facetKey, context, mappers = {} as Mappers } = action;\n const filtersToLoad = (yield select(\n getFiltersToLoad,\n facetKey,\n context,\n 'js'\n )) as string[];\n if (filtersToLoad.length > 0) {\n yield put({\n type: LOAD_FILTERS,\n filtersToLoad,\n facetKey,\n context,\n });\n const selectedKeys = (yield select(\n getSelectedFilters,\n facetKey,\n context,\n 'js'\n )) as {\n [k: string]: string[];\n };\n const facet = (yield select(getFacet, facetKey, context, 'js')) as Facet;\n const filters = facet.filters || {};\n const projectId = facet.projectId;\n\n const filtersToLoadSagas =\n filters &&\n filtersToLoad.map((filterKey = '') => {\n return call(loadFilter, {\n facetKey,\n filterKey,\n filter: filters[filterKey],\n projectId,\n selectedKeys: selectedKeys[filterKey],\n context,\n mapper:\n ('filterItems' in mappers && mappers.filterItems) ||\n mapEntriesToFilterItems,\n } as LoadFilterAction);\n });\n if (filtersToLoadSagas) yield all(filtersToLoadSagas);\n }\n}\n\ntype LoadFilterAction = {\n facetKey: string;\n filterKey: string;\n filter: Filter;\n projectId: string;\n selectedKeys: string[];\n context: Context;\n mapper: Mappers['filterItems'];\n};\n\nfunction* loadFilter(action: LoadFilterAction) {\n const {\n facetKey,\n filterKey,\n filter,\n projectId,\n selectedKeys,\n context,\n mapper,\n } = action;\n const { contentTypeId, customWhere, path } = filter as Filter;\n const createStateFrom: LoadFiltersSearchResults = {\n type: LOAD_FILTERS_COMPLETE,\n context,\n error: undefined,\n facetKey,\n filterKey,\n payload: {} as TaxonomyNode | PagedList<Entry>,\n selectedKeys,\n mapper,\n };\n\n try {\n if (contentTypeId) {\n const versionStatus = (yield select(\n selectVersionStatus\n )) as VersionStatus;\n const query = filterQuery(\n Array.isArray(contentTypeId) ? contentTypeId : [contentTypeId],\n versionStatus,\n customWhere\n );\n const payload = (yield cachedSearch.search(\n query,\n 0,\n projectId\n )) as PagedList<Entry>;\n\n if (!payload) throw new Error('No payload returned by search');\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n if (path) {\n const payload = (yield cachedSearch.getTaxonomyNodeByPath(\n path,\n projectId\n )) as TaxonomyNode;\n\n if (!payload)\n throw new Error(`No payload returned for taxonomy path: '${path}'`);\n if ((payload as any).type === 'error') throw payload;\n\n createStateFrom.payload = payload;\n }\n } catch (error) {\n createStateFrom.type = LOAD_FILTERS_ERROR;\n createStateFrom.error = error;\n }\n\n const nextAction = mapSearchResultToState<\n LoadFiltersSearchResults,\n LoadFiltersCompleteAction\n >(createStateFrom, filterTemplate);\n yield put(nextAction);\n}\n\nfunction* ensureSearch(action: EnsureSearchAction) {\n const { context, facet, debug } = action;\n try {\n const state = (yield select()) as AppState;\n const nextAction = {\n ...action,\n ogState: action.ogState || { search: state.search },\n };\n\n const [queryParams, runSearch] = generateQueryParams(nextAction, state);\n\n if (debug && (debug === true || debug.executeSearch))\n debugExecuteSearch(nextAction, state);\n\n if (runSearch) {\n yield put({ type: EXECUTE_SEARCH, facet, context });\n yield call(executeSearch, {\n ...nextAction,\n context,\n facet,\n queryParams,\n debug,\n } as ExecuteSearchAction);\n }\n } catch (error: any) {\n // eslint-disable-next-line import/namespace\n log.error(...['Error running search saga:', error, error.stack]);\n }\n}\n\nfunction* executeSearch(action: ExecuteSearchAction) {\n const { context, facet, queryParams, mappers } = action;\n try {\n const state = (yield select()) as AppState;\n let result = {} as TimedSearchResponse;\n let featuredResult: TimedSearchResponse | undefined;\n let featuredQuery: Query;\n const customApi = getCustomApi(state, facet, context, 'js');\n\n if (customApi) {\n const apiParams =\n (typeof mappers === 'object' &&\n typeof mappers.customApi === 'function' &&\n mappers.customApi(queryParams)) ||\n (mapQueryParamsToCustomApi(queryParams) 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"],"names":["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","toJS","Array","isArray","result","jpath","join","undefined","getSearchContext","facets","getCurrent","getCurrentFacet","getCurrentListing","getCurrentTab","getFacets","getTabFacets","Object","fromEntries","entries","getFacetTitles","map","isSelected","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","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","reduce","a","b","getSearchTotalCount","wholeSearchTotal","t","getFacetsTotalCount","selectFacets","selectListing","selectCurrentPath","selectCurrentProject","selectVersionStatus","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","fetch","uri","opts","cachedSearch","now","Date","performance","fixFreeTextForElastic","s","illegalChars","illegalRegEx","c","replace","timedSearch","duration","start","payload","end","getItemsFromResult","extractQuotedPhrases","searchTerm","pattern","match","buildUrl","route","qs","callCustomApi","customApi","apiUri","Error","startsWith","response","clone","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","isOptional","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","includeIdsExpression","includeIds","excludeIdsExpression","orderByExpression","expression","OrderBy","ob","desc","asc","in","innerValue","distanceWithin","freeText","handle","betweenValue","valArr","minimum","maximum","console","log","bc","op","distanceValue","lat","lon","Number","customWhereExpressions","where","clause","keys","idx","k","includes","recurseExpr","notKey","notIdx","innerOperator","innerField","makeJsExpression","clauseKey","distance","termExpressions","weightedSearchFields","quotedPhrases","modifiedSearchTerm","qp","trim","operators","containsOp","freeTextOp","wsf","fieldOperators","addRange","contains","filterQuery","customWhere","Query","pageSize","searchQuery","dynamicOrderBy","featuredResults","fields","isFeatured","count","searchUriTemplate","currentPath","newPath","searchContext","stateFilters","currentSearch","currentQs","parse","mergedSearch","merge","hash","mapStateToSearchUri","mapJson","mapEntriesToSearchResults","mapperFunc","results","facetTemplate","nextFacet","isLoading","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","mapQueryParamsToCustomApi","customApiMapping","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"],"mappings":"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"}