{"version":3,"sources":["webpack:///./js/react/shared/Localize.jsx","webpack:///./js/utils/sanitizeResourceKey.js","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:///./js/react/shared/LoadingIndicator.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","module","exports","useScrollPosition","elementRef","getScroll","scrollY","current","scrollTop","undefined","scrollX","scrollLeft","_useState2","_slicedToArray","useState","scrollPosition","setScrollPosition","useEffect","handleScroll","addEventListener","removeEventListener","SearchFilterItem","count","label","selected","value","onChange","fullLabel","concat","className","classNames","result-list__filter-item","result-list__filter-item--active","react_default","type","onClick","event","preventDefault","number","bool","func","defaultProps","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","isActive","initialSearchText","onSubmit","SearchForm_slicedToArray","searchText","setSearchText","inputRef","useFocus","ref","name","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","timeout","scroll","top","left","behavior","xlinkHref","IconCross","search_SearchForm","throttle","search_SearchSuggestionsList","react","topic","connection","edges","e","node","totalCount","search_SearchFilter","search_SearchResultList","renderContent","LoadingIndicator","client","GraphQLClient","SearchRoot","graphql_hooks","Provider","search_SearchList","default","bg","children","setIsActive","useTimeout","react_spinkit__WEBPACK_IMPORTED_MODULE_2___default","fadeIn","icon_filter_cross","data-name","fill","stroke","strokeLinecap","strokeWidth"],"mappings":"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","file":"search-82db67cfe85e6ce87b01.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","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","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","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":""}