{"version":3,"sources":["webpack:///./js/react/shared/Localize.jsx","webpack:///./js/utils/sanitizeResourceKey.js","webpack:///./js/react/shared/LoadingIndicator.jsx","webpack:///./js/react/search/queries/GetSearchResults.gql","webpack:///./js/react/search/queries/GetSearchSuggestions.gql","webpack:///./js/react/hooks/useScrollPosition.js","webpack:///./js/react/search/SearchFilter.jsx","webpack:///./img/svg/icon-magnifying-glass.svg","webpack:///./js/react/icons/IconMagnifyingGlass.jsx","webpack:///./js/react/search/SearchForm.jsx","webpack:///./js/react/search/SearchResultItem.jsx","webpack:///./js/react/search/SearchResultList.jsx","webpack:///./js/react/search/SearchSuggestionsList.jsx","webpack:///./js/react/search/SearchList.jsx","webpack:///./js/react/search/SearchRoot.jsx","webpack:///./img/svg/icon-filter-cross.svg","webpack:///./js/react/icons/IconCross.jsx"],"names":["Localize","_ref","id","otherProps","_objectWithoutProperties","sanitizedId","sanitizeResourceKey","defaultLocale","useLocales","react__WEBPACK_IMPORTED_MODULE_1___default","a","createElement","eo_locale__WEBPACK_IMPORTED_MODULE_0__","Text","_extends","defaultMessage","messages","propTypes","PropTypes","string","isRequired","__webpack_require__","d","__webpack_exports__","SANITIZATION_REGEX","indexOf","result","exec","length","LoadingIndicator","bg","children","timeout","_useState2","_slicedToArray","useState","isActive","setIsActive","useTimeout","className","concat","bool","node","number","defaultProps","react_spinkit__WEBPACK_IMPORTED_MODULE_2___default","fadeIn","name","module","exports","useScrollPosition","elementRef","getScroll","scrollY","current","scrollTop","undefined","scrollX","scrollLeft","scrollPosition","setScrollPosition","useEffect","handleScroll","addEventListener","removeEventListener","SearchFilterItem","count","label","selected","value","onChange","fullLabel","classNames","result-list__filter-item","result-list__filter-item--active","react_default","type","onClick","event","preventDefault","func","SearchFilter","_ref2","facets","translator","useTranslator","SearchFilter_SearchFilterItem","translate","map","facet","key","array","Object","assign","target","i","arguments","source","prototype","hasOwnProperty","call","apply","this","icon_magnifying_glass","styles","props","React","xmlns","viewBox","IconMagnifyingGlass","SearchForm","initialSearchText","onSubmit","SearchForm_slicedToArray","searchText","setSearchText","inputRef","useFocus","ref","placeholder","SearchResultItem","summary","tags","title","url","href","dangerouslySetInnerHTML","createMarkup","__html","arrayOf","SearchResultList","results","search_SearchResultItem","SearchResultList_extends","SearchSuggestionsList","suggestions","suggestion","tag","SearchList","_useHabitat","useHabitat","cultureCode","pageSize","siteId","siteType","SearchList_slicedToArray","hotTopics","setHotTopics","_useState4","pageIndex","setPageIndex","_useState6","setClassName","_useState8","_useState10","isOpen","setIsOpen","_useState12","showSuggestions","setShowSuggestions","overlayRef","useRef","useEventListener","detail","document","scrollableRef","useBodyScrollLock","_useManualQuery2","useManualQuery","GetSearchResults","fetchResults","_useManualQuery2$","resultsData","data","error","loading","_useManualQuery4","GetSearchSuggestions","fetchSuggestions","suggestionsData","variables","prevData","usePreviousValue","localData","useIntersectionObserver","entries","isIntersecting","pageInfo","get","hasNextPage","topics","CSSTransition","in","scroll","top","left","behavior","xlinkHref","IconCross","search_SearchForm","throttle","search_SearchSuggestionsList","react","topic","connection","edges","e","totalCount","search_SearchFilter","search_SearchResultList","renderContent","client","GraphQLClient","SearchRoot","graphql_hooks","Provider","search_SearchList","default","icon_filter_cross","data-name","fill","stroke","strokeLinecap","strokeWidth"],"mappings":"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","file":"search-4141cdfafb49b8f6acf3.js","sourcesContent":["import { EOLocale } from 'eo-locale';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport useLocales from '@react/hooks/useLocales';\r\nimport sanitizeResourceKey from '@utils/sanitizeResourceKey';\r\n\r\nconst Localize = ({ id, ...otherProps }) => {\r\n const sanitizedId = sanitizeResourceKey(id);\r\n const { defaultLocale } = useLocales();\r\n const getDefaultMessage = () => {\r\n if (defaultLocale) {\r\n return defaultLocale.messages[sanitizedId] || sanitizedId;\r\n }\r\n return sanitizedId;\r\n };\r\n\r\n return ;\r\n};\r\n\r\nLocalize.propTypes = {\r\n id: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default Localize;\r\n","export const SANITIZATION_REGEX = /(\\{\\$|\\$\\$)(.+)(\\$\\}|\\$\\$)/;\r\n\r\n/**\r\n * Sanitize the resource string key, handles removing localization macro syntax.\r\n * @param {String} id\r\n */\r\nexport default function sanitizeResourceKey(id) {\r\n // If id contains a space then it isn't a resource key.\r\n if (id.indexOf(' ') >= 0) {\r\n return id;\r\n }\r\n\r\n // If id doesn't contain a '$' then it isn't a macro.\r\n if (id.indexOf('$') === -1) {\r\n return id;\r\n }\r\n\r\n const result = SANITIZATION_REGEX.exec(id);\r\n\r\n if (result && result.length > 1) {\r\n return result[2];\r\n }\r\n\r\n return id;\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { useState } from 'react';\r\nimport Spinner from 'react-spinkit';\r\nimport { useTimeout } from '@netc/hooks';\r\n\r\n/** Component to show child components after delay. */\r\nconst LoadingIndicator = ({ bg, children, timeout }) => {\r\n // Store value to indicate whether to render the loading indicator.\r\n const [isActive, setIsActive] = useState(false);\r\n\r\n // Set is active state after timeout elapses.\r\n useTimeout(() => setIsActive(true), timeout);\r\n\r\n if (!isActive) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
{children}
\r\n
\r\n );\r\n};\r\n\r\nLoadingIndicator.propTypes = {\r\n bg: PropTypes.bool,\r\n children: PropTypes.node,\r\n timeout: PropTypes.number,\r\n};\r\n\r\nLoadingIndicator.defaultProps = {\r\n bg: false,\r\n children: ,\r\n timeout: 1000,\r\n};\r\n\r\nexport default LoadingIndicator;\r\n","module.exports = \"query GetSearchResults(\\r\\n $className: String\\r\\n $cultureCode: String!\\r\\n $pageIndex: Int!\\r\\n $pageSize: Int!\\r\\n $searchText: String\\r\\n $siteId: Int!\\r\\n $siteType: String!\\r\\n) {\\r\\n searchResults(\\r\\n className: $className\\r\\n cultureCode: $cultureCode\\r\\n pageIndex: $pageIndex\\r\\n pageSize: $pageSize\\r\\n searchText: $searchText\\r\\n siteId: $siteId\\r\\n siteType: $siteType\\r\\n ) {\\r\\n facets {\\r\\n key\\r\\n values {\\r\\n count\\r\\n from\\r\\n to\\r\\n value\\r\\n }\\r\\n }\\r\\n connection {\\r\\n edges {\\r\\n node {\\r\\n id\\r\\n summary\\r\\n tags\\r\\n title\\r\\n url\\r\\n }\\r\\n }\\r\\n pageInfo {\\r\\n hasNextPage\\r\\n hasPreviousPage\\r\\n }\\r\\n totalCount\\r\\n }\\r\\n }\\r\\n}\\r\\n\"","module.exports = \"query GetSearchResults(\\r\\n $cultureCode: String!\\r\\n $searchText: String\\r\\n $siteId: Int!\\r\\n $siteType: String!\\r\\n) {\\r\\n searchSuggestions(\\r\\n cultureCode: $cultureCode\\r\\n searchText: $searchText\\r\\n siteId: $siteId\\r\\n siteType: $siteType\\r\\n ) {\\r\\n id\\r\\n className\\r\\n highlight\\r\\n tags\\r\\n title\\r\\n url\\r\\n }\\r\\n}\\r\\n\"","import { useState, useEffect } from 'react';\r\n\r\nconst useScrollPosition = elementRef => {\r\n function getScroll() {\r\n return {\r\n scrollY: elementRef.current ? elementRef.current.scrollTop : undefined,\r\n scrollX: elementRef.current ? elementRef.current.scrollLeft : undefined,\r\n };\r\n }\r\n\r\n const [scrollPosition, setScrollPosition] = useState(getScroll);\r\n\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return false;\r\n }\r\n\r\n function handleScroll() {\r\n setScrollPosition(getScroll());\r\n }\r\n\r\n elementRef.current.addEventListener('scroll', handleScroll);\r\n return () => elementRef.current.removeEventListener('scroll', handleScroll);\r\n }, []); // Empty array ensures that effect is only run on mount and unmount\r\n\r\n return scrollPosition;\r\n};\r\n\r\nexport default useScrollPosition;\r\n","import classNames from 'classnames';\r\nimport { useTranslator } from 'eo-locale';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nconst SearchFilterItem = ({ count, label, selected, value, onChange }) => {\r\n const fullLabel = count ? `${label} (${count})` : label;\r\n\r\n const className = classNames({\r\n 'result-list__filter-item': true,\r\n 'result-list__filter-item--active': selected,\r\n });\r\n\r\n return (\r\n {\r\n event.preventDefault();\r\n onChange(value || '');\r\n }}\r\n >\r\n {fullLabel}\r\n \r\n );\r\n};\r\n\r\nSearchFilterItem.propTypes = {\r\n count: PropTypes.number,\r\n label: PropTypes.string.isRequired,\r\n selected: PropTypes.bool.isRequired,\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\n\r\nSearchFilterItem.defaultProps = {\r\n count: null,\r\n};\r\n\r\nconst SearchFilter = ({ facets, value, onChange }) => {\r\n const translator = useTranslator();\r\n\r\n return (\r\n
\r\n \r\n {facets && facets.length\r\n ? facets.map(facet => (\r\n \r\n ))\r\n : null}\r\n
\r\n );\r\n};\r\n\r\nSearchFilter.propTypes = {\r\n facets: PropTypes.array.isRequired,\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default SearchFilter;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24.714 24.685\"\n}, props), React.createElement(\"path\", {\n d: \"M24.338 22.572l-5.556-5.556a10.28 10.28 0 0 0 1.618-2.981 10.536 10.536 0 0 0 .608-3.559A10.031 10.031 0 0 0 20.17 6.4a10.28 10.28 0 0 0-2.243-3.328A10.983 10.983 0 0 0 14.585.81 10.339 10.339 0 0 0 10.5 0a10.339 10.339 0 0 0-4.08.81 10.982 10.982 0 0 0-3.338 2.258A10.28 10.28 0 0 0 .839 6.4 10.031 10.031 0 0 0 0 10.476a10.1 10.1 0 0 0 .839 4.109 10.28 10.28 0 0 0 2.243 3.328 10.983 10.983 0 0 0 3.342 2.257 10.339 10.339 0 0 0 4.08.81 10.048 10.048 0 0 0 3.5-.608 12.412 12.412 0 0 0 3.039-1.621l5.557 5.558a1.194 1.194 0 0 0 .449.289 1.058 1.058 0 0 0 .839 0 1.212 1.212 0 0 0 .449-2.026zM2.489 10.476A8.128 8.128 0 0 1 3.1 7.35 8.417 8.417 0 0 1 4.818 4.8a7.645 7.645 0 0 1 2.561-1.7 7.673 7.673 0 0 1 3.121-.64 7.673 7.673 0 0 1 3.13.64 7.645 7.645 0 0 1 2.561 1.7 8.417 8.417 0 0 1 1.722 2.55 8.128 8.128 0 0 1 .608 3.125 7.894 7.894 0 0 1-2.344 5.7A8.081 8.081 0 0 1 13.63 17.9a7.827 7.827 0 0 1-3.125.622 7.673 7.673 0 0 1-3.125-.637A8.025 8.025 0 0 1 3.1 13.6a7.989 7.989 0 0 1-.611-3.124z\"\n})));","import React from 'react';\r\n\r\n// eslint-disable-next-line import/no-webpack-loader-syntax\r\nimport IconMagnifyingGlass from '!babel-loader!react-svg-loader!@img/svg/icon-magnifying-glass.svg';\r\n\r\nexport default () => ;\r\n","import { useTranslator } from 'eo-locale';\r\nimport PropTypes from 'prop-types';\r\nimport { useFocus } from '@netc/hooks';\r\nimport React, { useState, useEffect } from 'react';\r\n\r\nimport IconMagnifyingGlass from '@react/icons/IconMagnifyingGlass';\r\n\r\nconst SearchForm = ({ isActive, initialSearchText, onChange, onSubmit }) => {\r\n const translator = useTranslator();\r\n\r\n const [searchText, setSearchText] = useState(initialSearchText);\r\n\r\n const inputRef = useFocus(isActive);\r\n\r\n // Update the local searchText state whenever the initialSearchText prop changes\r\n useEffect(() => {\r\n setSearchText(initialSearchText);\r\n }, [initialSearchText]);\r\n\r\n return (\r\n {\r\n event.preventDefault();\r\n onSubmit(searchText);\r\n }}\r\n >\r\n
\r\n {\r\n setSearchText(event.target.value);\r\n onChange(event.target.value);\r\n }}\r\n />\r\n\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nSearchForm.propTypes = {\r\n initialSearchText: PropTypes.string,\r\n isActive: PropTypes.bool,\r\n onChange: PropTypes.func.isRequired,\r\n onSubmit: PropTypes.func.isRequired,\r\n};\r\n\r\nSearchForm.defaultProps = {\r\n initialSearchText: '',\r\n isActive: false,\r\n};\r\n\r\nexport default SearchForm;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nconst SearchResultItem = ({ summary, tags, title, url }) => (\r\n \r\n

{title}

\r\n

\r\n

    {tags && tags.length ? null : null}
\r\n
\r\n);\r\n\r\n/* eslint-disable-next-line no-unused-vars */\r\nfunction createMarkup(summary) {\r\n return {\r\n __html: summary,\r\n };\r\n}\r\n\r\nSearchResultItem.propTypes = {\r\n summary: PropTypes.string,\r\n tags: PropTypes.arrayOf(PropTypes.string),\r\n title: PropTypes.string.isRequired,\r\n url: PropTypes.string.isRequired,\r\n};\r\n\r\nSearchResultItem.defaultProps = {\r\n summary: '',\r\n tags: [],\r\n};\r\n\r\nexport default SearchResultItem;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Localize from '@react/shared/Localize';\r\nimport SearchResultItem from '@react/search/SearchResultItem';\r\n\r\nconst SearchResultList = ({ results }) => {\r\n if (!results || !results.length) {\r\n return (\r\n
\r\n

\r\n \r\n

\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {results.map(result => (\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nSearchResultList.propTypes = {\r\n // eslint-disable-next-line react/forbid-prop-types\r\n results: PropTypes.array.isRequired,\r\n};\r\n\r\nexport default SearchResultList;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport Localize from '@react/shared/Localize';\r\n\r\nconst SearchSuggestionsList = ({ suggestions }) => {\r\n if (!suggestions || !suggestions.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n\r\n function renderTags(className, tags) {\r\n return (\r\n
    \r\n
  • \r\n \r\n
  • \r\n {tags && tags.length\r\n ? tags.map(tag => (\r\n
  • \r\n {tag}\r\n
  • \r\n ))\r\n : null}\r\n
\r\n );\r\n }\r\n};\r\n\r\nSearchSuggestionsList.propTypes = {\r\n suggestions: PropTypes.array.isRequired,\r\n};\r\n\r\nexport default SearchSuggestionsList;\r\n","import { useManualQuery } from 'graphql-hooks';\r\nimport get from 'lodash/get';\r\nimport throttle from 'lodash/throttle';\r\nimport React, { Fragment, useState, useEffect, useRef } from 'react';\r\nimport { CSSTransition } from 'react-transition-group';\r\nimport {\r\n useBodyScrollLock,\r\n useEventListener,\r\n useIntersectionObserver,\r\n usePreviousValue,\r\n} from '@netc/hooks';\r\n\r\nimport useScrollPosition from '@react/hooks/useScrollPosition';\r\nimport IconCross from '@react/icons/IconCross';\r\nimport SearchFilter from '@react/search/SearchFilter';\r\nimport SearchForm from '@react/search/SearchForm';\r\nimport SearchResultList from '@react/search/SearchResultList';\r\nimport SearchSuggestionsList from '@react/search/SearchSuggestionsList';\r\nimport GetSearchResults from '@react/search/queries/GetSearchResults.gql';\r\nimport GetSearchSuggestions from '@react/search/queries/GetSearchSuggestions.gql';\r\nimport { useHabitat } from '@react/shared/HabitatContext';\r\nimport LoadingIndicator from '@react/shared/LoadingIndicator';\r\nimport Localize from '@react/shared/Localize';\r\n\r\nconst SearchList = () => {\r\n // Get data from react-habitat context.\r\n const { cultureCode, pageSize, siteId, siteType } = useHabitat();\r\n\r\n // Store page index and search text in query string.\r\n const [hotTopics, setHotTopics] = useState([]);\r\n const [pageIndex, setPageIndex] = useState(1);\r\n const [className, setClassName] = useState('');\r\n const [searchText, setSearchText] = useState('');\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [showSuggestions, setShowSuggestions] = useState(false);\r\n\r\n const overlayRef = useRef();\r\n\r\n useEventListener('search.toggle', ({ detail }) => {\r\n setIsOpen(!isOpen);\r\n setHotTopics(detail);\r\n });\r\n\r\n // eslint-disable-next-line no-console\r\n useEventListener('click', () => setShowSuggestions(false), document);\r\n\r\n const scrollableRef = useBodyScrollLock(isOpen);\r\n\r\n // Get data from graphql api.\r\n const [fetchResults, { data: resultsData, error, loading }] = useManualQuery(GetSearchResults);\r\n\r\n // Get suggestion data from graphql api.\r\n const [fetchSuggestions, { data: suggestionsData }] = useManualQuery(GetSearchSuggestions);\r\n\r\n // Handle changing of class name filter.\r\n useEffect(() => {\r\n setShowSuggestions(false);\r\n\r\n if (searchText && searchText.length) {\r\n fetchResults({\r\n variables: {\r\n className,\r\n cultureCode,\r\n pageIndex: pageIndex || 1,\r\n pageSize,\r\n searchText,\r\n siteId,\r\n siteType,\r\n },\r\n });\r\n }\r\n }, [className, pageIndex, searchText]);\r\n\r\n // Store data from last render in ref,\r\n // this ensures we can always render when re-fetching data.\r\n const prevData = usePreviousValue(resultsData);\r\n\r\n // Use current or previous data if re-fetching.\r\n const localData = resultsData || prevData;\r\n\r\n const { elementRef } = useIntersectionObserver(entries => {\r\n // Ensure we're intersecting.\r\n if (!entries || !entries.length || !entries[0].isIntersecting) {\r\n return;\r\n }\r\n\r\n // Do not trigger if we're loading the next page.\r\n if (loading) {\r\n return;\r\n }\r\n\r\n // Ensure there is a next page.\r\n const pageInfo = get(localData, 'searchResults.connection.pageInfo');\r\n\r\n if (!pageInfo || !pageInfo.hasNextPage) {\r\n return;\r\n }\r\n\r\n // Increment the query string and load the next page.\r\n setPageIndex((pageIndex || 1) + 1);\r\n });\r\n\r\n /** Render content. */\r\n function renderContent() {\r\n const connection = get(localData, 'searchResults.connection');\r\n if (!connection) {\r\n return null;\r\n }\r\n\r\n const facets = get(localData, 'searchResults.facets[0].values');\r\n const results = connection.edges.map(e => e.node);\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {\r\n setClassName(value);\r\n setPageIndex(1);\r\n }}\r\n />\r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n /** Render hot topics */\r\n function renderHotTopics(topics) {\r\n return (\r\n \r\n {topics.length > 0 && (\r\n
\r\n

\r\n {topics[0]}\r\n

\r\n
\r\n {topics.map(\r\n (topic, i) =>\r\n i > 0 && (\r\n {\r\n setClassName('');\r\n setSearchText(topic);\r\n }}\r\n >\r\n {topic}\r\n \r\n ),\r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n /** Render error. */\r\n function renderError() {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n /** Render loading. */\r\n function renderLoading() {\r\n return ;\r\n }\r\n\r\n function renderBackToTop() {\r\n return (\r\n
\r\n {\r\n event.preventDefault();\r\n overlayRef.current.scroll({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n }}\r\n >\r\n Back to Top\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n function renderForm() {\r\n const suggestions = get(suggestionsData, 'searchSuggestions') || [];\r\n\r\n return (\r\n
\r\n {\r\n if (value && value.length > 3) {\r\n setShowSuggestions(true);\r\n\r\n fetchSuggestions({\r\n variables: {\r\n cultureCode,\r\n searchText: value,\r\n siteId,\r\n siteType,\r\n },\r\n });\r\n } else {\r\n setShowSuggestions(false);\r\n }\r\n }, 100)}\r\n onSubmit={value => {\r\n if (value && value.length) {\r\n setClassName('');\r\n setSearchText(value);\r\n }\r\n }}\r\n />\r\n {showSuggestions ? : null}\r\n
\r\n );\r\n }\r\n\r\n const scrollPosition = useScrollPosition(overlayRef);\r\n\r\n return (\r\n \r\n
\r\n {scrollPosition.scrollY > 500 ? renderBackToTop() : null}\r\n\r\n
\r\n {\r\n event.preventDefault();\r\n setIsOpen(false);\r\n }}\r\n >\r\n \r\n \r\n \r\n\r\n {renderForm()}\r\n {!localData && renderHotTopics(hotTopics)}\r\n {localData && renderContent()}\r\n {error && renderError()}\r\n {loading && renderLoading()}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SearchList;\r\n","import { ClientContext, GraphQLClient } from 'graphql-hooks';\r\nimport React from 'react';\r\n\r\nimport SearchList from '@react/search/SearchList';\r\n\r\nconst client = new GraphQLClient({\r\n url: '/api/graphql',\r\n});\r\n\r\nconst SearchRoot = () => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default SearchRoot;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 8.997 8.997\"\n}, props), React.createElement(\"g\", {\n \"data-name\": \"Group 12850\",\n fill: \"none\",\n stroke: \"#0093d4\",\n strokeLinecap: \"round\",\n strokeWidth: \"1.5\"\n}, React.createElement(\"path\", {\n \"data-name\": \"Line 782\",\n d: \"M1.061 1.061l6.876 6.876\"\n}), React.createElement(\"path\", {\n \"data-name\": \"Line 783\",\n d: \"M1.061 7.937l6.876-6.876\"\n}))));","import React from 'react';\r\n\r\n// eslint-disable-next-line import/no-webpack-loader-syntax\r\nimport IconCross from '!babel-loader!react-svg-loader!@img/svg/icon-filter-cross.svg';\r\n\r\nexport default () => ;\r\n"],"sourceRoot":""}