{"version":3,"file":"component---src-pages-browse-tsx-f8912bc4a2db226f0855.js","mappings":"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","sources":["webpack://gatsby-starter-typescript-plus/./src/layouts/browse.tsx","webpack://gatsby-starter-typescript-plus/./src/pages/browse.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Container, Grid, Typography, Paper, IconButton } from '@material-ui/core';\nimport { graphql, useStaticQuery } from 'gatsby';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport { defaultLocation, Languages } from '../utils/getAllSupportedLanguages';\nimport FilterSortDialogMobile from '../components/FilterSortDialogMobile';\nimport SearchResultTable from '../components/SearchResultTable';\nimport Seo from '../components/Seo';\nimport FilterSortFields from '../components/FilterSortFields';\nimport { FilterSort, LocationLanguageContextType, BrowseQueryProps } from '../typings';\nimport { filterTemplates } from '../utils/filterTemplates';\nimport { sortTemplates } from '../utils/sortTemplates';\nimport {\n getTemplateCategoryByLocale,\n getCategoriesWithTemplates,\n setLanguageFilterByGeo,\n getDefaultFilters\n} from '../utils/getFilterOptions';\nimport { LocationLanguageContext } from '../contexts/LocationLanguageContext';\nimport { matchesMobile } from '../utils/mediaQuery';\n\nconst BrowseLayout: React.FC = ({ filterQuery, locationState }) => {\n const data = useStaticQuery(\n graphql`\n query BrowseLayoutQuery {\n allStrapiBrowsePage {\n nodes {\n Title\n locale\n }\n }\n allStrapiTemplate(sort: { fields: Title }) {\n nodes {\n id\n published_at\n Title\n Description\n SeoContent\n Keywords\n Author\n Slug\n countries {\n name\n Localizations {\n locale\n localeName\n displayName\n }\n }\n categories {\n name\n }\n trades {\n name\n }\n template_language {\n name\n }\n Template {\n name\n templateGroup {\n name\n }\n templateSections {\n name\n rank\n sectionFields {\n name\n rank\n isMandatory\n galleryAllowed\n textValidation\n fieldInputType\n selectOptions {\n color\n name\n rank\n }\n subFields {\n fieldInputType\n name\n rank\n selectOptions {\n color\n name\n rank\n }\n }\n }\n }\n }\n }\n }\n allStrapiCategories {\n nodes {\n name\n Localizations {\n displayName\n locale\n localeName\n }\n templates {\n id\n }\n }\n }\n allStrapiTrades {\n nodes {\n name\n Localizations {\n displayName\n locale\n localeName\n }\n templates {\n id\n }\n }\n }\n allStrapiTemplateLanguage {\n nodes {\n Localizations {\n displayName\n locale\n localeName\n }\n name\n templates {\n id\n }\n }\n }\n }\n `\n );\n /** Set state for initial language filter. Default as 'English' */\n const [initialLangFilter, setInitialLangFilter] = React.useState([Languages.English]);\n const initialFilterValues = getDefaultFilters();\n const getInitialFilters = () => {\n if (!filterQuery) return initialFilterValues;\n return {\n filters: {\n language: initialLangFilter ?? [],\n categories: filterQuery.split(':')[0] === 'category' ? [filterQuery.split(':')[1]] : [],\n trades: []\n },\n sort: 'titleasc'\n };\n };\n const initialFilterSortObj: FilterSort = getInitialFilters();\n\n const templates = data.allStrapiTemplate.nodes;\n const [templateResult, setTemplateResult] = React.useState(templates);\n const [filterSortValue, setFilterSortValue] = React.useState(initialFilterSortObj);\n const [isOpenFilterSortDialog, setIsOpenFilterSortDialog] = React.useState(false);\n const locationLanguage = React.useContext(LocationLanguageContext);\n const language: string = locationLanguage?.language ?? Languages.English;\n const country = locationLanguage?.country ?? defaultLocation;\n\n const browsePageContent = data.allStrapiBrowsePage.nodes.find((x: any) => x.locale === language);\n\n // Redirect back to the browse page when 'browse' is clicked\n React.useEffect(() => {\n if (locationState) {\n const defaultFilters = getDefaultFilters(initialLangFilter);\n setFilterSortValue(defaultFilters);\n }\n }, [locationState]);\n\n const categories = getTemplateCategoryByLocale(getCategoriesWithTemplates(data.allStrapiCategories.nodes), language);\n const trades = getTemplateCategoryByLocale(getCategoriesWithTemplates(data.allStrapiTrades.nodes), language);\n const allTemplateLanguages = getTemplateCategoryByLocale(getCategoriesWithTemplates(data.allStrapiTemplateLanguage.nodes), language);\n\n // Trigger to update the language filter value when the country is changed.\n React.useEffect(() => {\n const countryLang = setLanguageFilterByGeo(country, allTemplateLanguages);\n setInitialLangFilter(countryLang);\n filterSortValue.filters.language = countryLang;\n setFilterSortValue(filterSortValue);\n }, [country]);\n\n React.useEffect(() => {\n let tempResult = filterTemplates(templates, filterSortValue.filters);\n tempResult = sortTemplates(tempResult, filterSortValue.sort);\n setTemplateResult([...tempResult]);\n return () => {\n setTemplateResult([]);\n };\n }, [filterSortValue.filters, filterSortValue.sort]);\n\n const openFilterSortDialog = () => {\n setIsOpenFilterSortDialog(true);\n };\n const handleFilterSortDialogClose = (value: any) => {\n if (value) {\n setFilterSortValue(value);\n }\n setIsOpenFilterSortDialog(false);\n };\n const handleFilterSortChange = (filteredValue: FilterSort) => {\n setFilterSortValue(filteredValue);\n };\n const isMobile = matchesMobile();\n const pathname = typeof window !== 'undefined' ? window.location.pathname : '';\n return (\n <>\n {browsePageContent ? (\n <>\n \n \n
\n \n {isMobile ? null : (\n \n \n \n \n \n )}\n \n
\n \n {browsePageContent.Title}\n \n {isMobile ? (\n \n \n \n ) : null}\n
\n {templateResult ? (\n
\n \n
\n ) : null}\n \n
\n
\n
\n \n ) : null}\n \n );\n};\nexport default BrowseLayout;\n","import * as React from 'react';\nimport type { PageProps } from 'gatsby';\nimport { LocationState } from '../typings';\nimport BrowseLayout from '../layouts/browse';\n\ninterface ExtendedPageProps extends Omit {\n location: {\n host: string;\n hostname: string;\n href: string;\n port: string;\n protocol: string;\n pathname: string;\n search: string;\n hash: string;\n key?: string | undefined;\n state: LocationState;\n };\n}\n\nconst BrowsePage = (data: ExtendedPageProps) => {\n const { location } = data;\n const { state } = location;\n const browseFilter = new URLSearchParams(location.search).get('filters') || '';\n return ;\n};\n\nexport default BrowsePage;\n"],"names":["filterQuery","locationState","data","useStaticQuery","React","Languages","initialLangFilter","setInitialLangFilter","initialFilterValues","getDefaultFilters","initialFilterSortObj","filters","language","categories","split","trades","sort","templates","allStrapiTemplate","nodes","templateResult","setTemplateResult","filterSortValue","setFilterSortValue","isOpenFilterSortDialog","setIsOpenFilterSortDialog","locationLanguage","LocationLanguageContext","country","defaultLocation","browsePageContent","allStrapiBrowsePage","find","x","locale","defaultFilters","getTemplateCategoryByLocale","getCategoriesWithTemplates","allStrapiCategories","allStrapiTrades","allTemplateLanguages","allStrapiTemplateLanguage","countryLang","setLanguageFilterByGeo","tempResult","filterTemplates","sortTemplates","isMobile","matchesMobile","pathname","window","location","Seo","title","Container","Grid","container","spacing","item","xs","sm","Paper","style","padding","FilterSortFields","filterSortObj","onFilterSortChange","filteredValue","isBrowsePage","languages","display","justifyContent","alignItems","Typography","marginBottom","variant","paragraph","Title","IconButton","onClick","FilterList","SearchResultTable","searchResults","FilterSortDialogMobile","open","onDialogClose","value","state","browseFilter","URLSearchParams","search","get"],"sourceRoot":""}