{"version":3,"file":"static/chunks/3583-4045c44039cfc66b.js","mappings":"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","sources":["webpack://_N_E/./src/components/BookAsset/BookAsset.styled.js","webpack://_N_E/./src/components/BookAsset/BookAsset.js","webpack://_N_E/./src/components/BookAsset/index.js","webpack://_N_E/./src/components/Pagination/hooks/index.js","webpack://_N_E/./src/components/Pagination/Pagination.styled.js","webpack://_N_E/./src/components/Pagination/subcomponents/NumberedButtons.js","webpack://_N_E/./src/components/Pagination/Pagination.js","webpack://_N_E/./src/components/Pagination/index.js","webpack://_N_E/./src/components/Pagination/utils/index.js","webpack://_N_E/./src/modules/Search/SearchPage.styled.js","webpack://_N_E/./public/icons/edit.svg","webpack://_N_E/./src/modules/Search/subcomponents/SearchParamControl/SearchParamControl.js","webpack://_N_E/./src/modules/Search/subcomponents/SearchParamControl/index.js","webpack://_N_E/./src/components/cards/SearchCard/SearchCard.styled.js","webpack://_N_E/./src/components/cards/SearchCard/SearchCard.js","webpack://_N_E/./src/components/cards/SearchCard/utils/index.js","webpack://_N_E/./src/components/cards/SearchCard/index.js","webpack://_N_E/./src/components/cards/SearchTipsCard/SearchTipsCard.styled.js","webpack://_N_E/./src/components/cards/SearchTipsCard/SearchTipsCard.js","webpack://_N_E/./src/components/cards/SearchTipsCard/index.js","webpack://_N_E/./src/modules/Search/utils/index.js","webpack://_N_E/./public/images/search/check-the-spelling.svg","webpack://_N_E/./public/images/search/use-fewer-words.svg","webpack://_N_E/./public/images/search/enter-an-isbn.svg","webpack://_N_E/./src/modules/Search/subcomponents/AdvancedSearchParamControls/AdvancedSearchParamControls.js","webpack://_N_E/./public/icons/filter.svg","webpack://_N_E/./src/modules/Search/subcomponents/AdvancedSearchParamControls/index.js","webpack://_N_E/./src/components/TextSearchFilter/constants/index.js","webpack://_N_E/./src/components/TextSearchFilter/TextSearchFilter.styled.js","webpack://_N_E/./src/components/TextSearchFilter/subcomponents/MobileTextSearchFilterComponent/MobileTextSearchFilterComponent.js","webpack://_N_E/./src/components/TextSearchFilter/getFilterComponent.js","webpack://_N_E/./src/components/TextSearchFilter/MobileTextSearchFilter.js","webpack://_N_E/./src/components/Popover/Popover.styled.js","webpack://_N_E/./src/components/Popover/Popover.js","webpack://_N_E/./src/components/Popover/index.js","webpack://_N_E/./src/components/TextSearchFilter/subcomponents/DesktopTextSearchFilterComponent/DesktopTextSearchFilterComponent.js","webpack://_N_E/./src/components/TextSearchFilter/DesktopTextSearchFilter.js","webpack://_N_E/./src/modules/Search/reducers/actionTypes.js","webpack://_N_E/./src/modules/Search/actions/index.js","webpack://_N_E/./src/modules/Search/reducers/index.js","webpack://_N_E/./src/modules/Search/SearchPage.js","webpack://_N_E/./src/modules/Search/index.js"],"sourcesContent":["import { styled } from \"@linaria/react\";\nimport { breakpoints } from \"common/styles/config\";\nexport const BookAssetWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"BookAssetWrapper\",\n class: \"BookAssetWrapper_bcj6f66\"\n});\n\nrequire(\"./BookAsset.styled.linaria.module.css!=!../../../node_modules/@linaria/webpack5-loader/lib/outputCssLoader.js!./BookAsset.styled.js\");","import React, { memo, useCallback, useEffect, useState } from \"react\";\nimport Image from \"next/image\";\nimport PropTypes from \"prop-types\";\nimport { IMAGE_BLUR_PLACEHOLDER } from \"common/utils\";\nimport { BOOK_UNAVAILABLE_IMG } from \"./constants\";\nimport * as S from \"./BookAsset.styled\";\nconst BookAsset = ({\n book,\n wrapper: WrapperComponent,\n imageProps,\n showPreview,\n objectFit\n}) => {\n const [imageSrc, setImageSrc] = useState(IMAGE_BLUR_PLACEHOLDER);\n const handleOnError = useCallback(() => {\n setImageSrc(BOOK_UNAVAILABLE_IMG);\n }, [book]);\n\n /** need to bypass case with react hydration\n * in https://github.com/facebook/react/issues/15446#issuecomment-484699248\n */\n useEffect(() => {\n setImageSrc(showPreview ? book.previewImg : book.img);\n }, [book, showPreview]);\n return <WrapperComponent>\n <Image src={imageSrc} alt={`${book.title} image`} aria-label={`${book.title} image`} blurDataURL={IMAGE_BLUR_PLACEHOLDER} placeholder={\"blur\"} layout=\"fill\" objectFit={objectFit} priority {...imageProps} onError={handleOnError} />\n </WrapperComponent>;\n};\nBookAsset.propTypes = {\n book: PropTypes.object.isRequired,\n wrapper: PropTypes.elementType,\n imageProps: PropTypes.object,\n showPreview: PropTypes.bool,\n objectFit: PropTypes.string.isRequired\n};\nBookAsset.defaultProps = {\n wrapper: S.BookAssetWrapper,\n imageProps: {},\n showPreview: false,\n objectFit: \"contain\"\n};\nexport default memo(BookAsset);","import BookAsset from \"./BookAsset\";\n\nexport default BookAsset;\n","import { useEffect, useState } from \"react\";\nimport { useRouter } from \"next/router\";\n\nimport { getPageSize, getPage } from \"../utils\";\nimport { DEFAULT_PAGE, DEFAULT_PAGE_SIZE } from \"../constants\";\n\nexport const usePagination = ({ pageSize } = {}) => {\n const router = useRouter();\n const pageFromUrl = getPage(router.query.page);\n const pageSizeFromUrl = getPageSize(router.query.pageSize || pageSize);\n\n const [pageValue, setPage] = useState(DEFAULT_PAGE);\n const [pageSizeValue, setPageSize] = useState(DEFAULT_PAGE_SIZE);\n\n useEffect(() => {\n setPage(pageFromUrl);\n setPageSize(pageSizeFromUrl);\n }, [router.query]);\n\n return {\n page: pageValue,\n pageSize: pageSizeValue,\n setPage,\n setPageSize\n };\n};\n","import { styled } from \"@linaria/react\";\nimport { breakpoints, sizes, weights } from \"common/styles/config\";\nimport { ButtonAccentText } from \"components/Button/Button.styled\";\nimport ArrowIcon from \"public/icons/new-arrow.svg\";\nexport const Pagination = /*#__PURE__*/styled(\"div\")({\n name: \"Pagination\",\n class: \"Pagination_p1t6kx77\"\n});\nexport const ButtonsWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"ButtonsWrapper\",\n class: \"ButtonsWrapper_b1iz4jvd\"\n});\nexport const PageContainer = /*#__PURE__*/styled(\"div\")({\n name: \"PageContainer\",\n class: \"PageContainer_p1y7o2wk\"\n});\nexport const PreviousIcon = /*#__PURE__*/styled(\"div\")({\n name: \"PreviousIcon\",\n class: \"PreviousIcon_pbr8wep\"\n});\nexport const NextIcon = /*#__PURE__*/styled(PreviousIcon)({\n name: \"NextIcon\",\n class: \"NextIcon_n1pmvtkb\"\n});\nexport const CellButton = /*#__PURE__*/styled(\"button\")({\n name: \"CellButton\",\n class: \"CellButton_c1p6h1hm\",\n vars: {\n \"c1p6h1hm-0\": [({\n isCompact\n }) => isCompact ? \"none\" : \"flex\"],\n \"c1p6h1hm-1\": [({\n isActive\n }) => isActive ? \"#f7f7f8\" : \"#ffffff\"],\n \"c1p6h1hm-2\": [({\n isActive\n }) => isActive ? \"1px solid #c4c4c4\" : \"1px solid #3e5c6d\"],\n \"c1p6h1hm-5\": [({\n isActive\n }) => isActive ? \"#ED5121\" : \"#3e5c6d\"],\n \"c1p6h1hm-6\": [({\n isActive\n }) => isActive ? \"initial\" : \"pointer\"]\n }\n});\nexport const Ellipsis = /*#__PURE__*/styled(\"div\")({\n name: \"Ellipsis\",\n class: \"Ellipsis_e1b0c3an\"\n});\nexport const PaginationActions = /*#__PURE__*/styled(\"div\")({\n name: \"PaginationActions\",\n class: \"PaginationActions_p1hl9tgu\"\n});\nexport const PageSizeWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"PageSizeWrapper\",\n class: \"PageSizeWrapper_p126sept\"\n});\nexport const PageViewingBottomWOPages = /*#__PURE__*/styled(\"p\")({\n name: \"PageViewingBottomWOPages\",\n class: \"PageViewingBottomWOPages_pwt7u3b\"\n});\nexport const ResultsText = /*#__PURE__*/styled(PageViewingBottomWOPages)({\n name: \"ResultsText\",\n class: \"ResultsText_ruw0wqw\"\n});\nexport const PaginationPageSizeActions = /*#__PURE__*/styled(PaginationActions)({\n name: \"PaginationPageSizeActions\",\n class: \"PaginationPageSizeActions_p1yy5xy4\"\n});\n\nrequire(\"./Pagination.styled.linaria.module.css!=!../../../node_modules/@linaria/webpack5-loader/lib/outputCssLoader.js!./Pagination.styled.js\");","import React, { memo } from \"react\";\nimport * as S from \"../Pagination.styled\";\nimport PropTypes from \"prop-types\";\nconst CURRENT_PAGES_ELLIPSIS_LIMIT = 4;\nconst NumberedButtons = ({\n meta,\n handleSetPage\n}) => {\n const isActive = meta.page === meta.pages;\n if (meta.pages === 1 || meta.pages === null) {\n return <S.CellButton isActive={true}>1</S.CellButton>;\n }\n if (meta.pages <= 5) {\n const buttons = [...new Array(meta.pages)].map((el, index) => <S.CellButton onClick={() => handleSetPage(index + 1)} isActive={meta.page === index + 1} key={index + 1}>\n {index + 1}\n </S.CellButton>);\n return buttons;\n } else {\n if (meta.page < CURRENT_PAGES_ELLIPSIS_LIMIT) {\n const buttons = [...new Array(CURRENT_PAGES_ELLIPSIS_LIMIT)].map((el, index) => <S.CellButton onClick={() => handleSetPage(index + 1)} isActive={meta.page === index + 1} key={index + 1}>\n {index + 1}\n </S.CellButton>);\n return <>\n {buttons}\n <S.Ellipsis />\n <S.CellButton onClick={() => handleSetPage(meta.pages)} isActive={isActive}>\n {meta.pages}\n </S.CellButton>\n </>;\n }\n return <>\n <S.CellButton onClick={() => handleSetPage(1)}>1</S.CellButton>\n <S.Ellipsis />\n {isActive && <S.CellButton onClick={() => handleSetPage(meta.page - 2)}>\n {meta.page - 2}\n </S.CellButton>}\n <S.CellButton onClick={() => handleSetPage(meta.page - 1)}>\n {meta.page - 1}\n </S.CellButton>\n <S.CellButton onClick={() => handleSetPage(meta.page)} isActive={true}>\n {meta.page}\n </S.CellButton>\n {meta.page !== meta.pages && <S.CellButton onClick={() => handleSetPage(meta.page + 1)}>\n {meta.page + 1}\n </S.CellButton>}\n {meta.page < meta.pages - 2 && <S.Ellipsis />}\n {meta.page < meta.pages - 1 && <S.CellButton onClick={() => handleSetPage(meta.pages)} isActive={isActive}>\n {meta.pages}\n </S.CellButton>}\n </>;\n }\n};\nNumberedButtons.propTypes = {\n meta: PropTypes.shape({\n page: PropTypes.number.isRequired,\n pages: PropTypes.number\n }),\n handleSetPage: PropTypes.func.isRequired\n};\nexport default memo(NumberedButtons);","import React, { memo, useCallback, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useRouter } from \"next/router\";\nimport { isPresentValue } from \"common/utils\";\nimport Button from \"components/Button\";\nimport { ACCENT_TEXT } from \"common/constants/buttonTypes\";\nimport { navigateToPage, getPageSize, getPaginationConfig, PAGINATION_OPTIONS } from \"./utils\";\nimport NumberedButtons from \"./subcomponents/NumberedButtons\";\nimport { DEFAULT_PAGE, PAGINATION_MODES } from \"./constants\";\nimport * as S from \"./Pagination.styled\";\nconst UI_PAGES_STEP = 99;\nconst Pagination = ({\n data,\n wrapper: WrapperComponent,\n basePath,\n defaultPage,\n mode,\n showPageSizeFilter,\n setPageSize,\n isLoading,\n onPrevPageClick,\n onNextPageClick,\n setPage,\n scrollTargetPosY,\n pageRouteProps,\n meta\n}) => {\n const router = useRouter();\n const {\n pageSize: parsedPageSize\n } = router.query;\n const pageSize = getPageSize(parsedPageSize);\n const {\n prevButtonProps,\n nextButtonProps\n } = getPaginationConfig(mode);\n const currentPageContainer = <S.PageContainer>Page {meta.page}</S.PageContainer>;\n useEffect(() => {\n if (mode === PAGINATION_MODES.WITH_PAGE_BUTTONS && meta.pages && meta.page > meta.pages) {\n navigateToPage({\n setPage,\n page: meta.pages,\n pageSize,\n router,\n basePath,\n targetPosY: scrollTargetPosY,\n showPageSizeFilter,\n pageRouteProps,\n mode,\n before: meta.before\n });\n }\n }, [meta]);\n const handlePrevPageClick = useCallback(() => {\n if (isPresentValue(onPrevPageClick)) {\n onPrevPageClick();\n return;\n }\n navigateToPage({\n setPage,\n page: meta.page - 1,\n pageSize,\n router,\n basePath,\n targetPosY: scrollTargetPosY,\n showPageSizeFilter,\n pageRouteProps,\n mode,\n before: meta.before\n });\n }, [meta, scrollTargetPosY, pageSize, showPageSizeFilter]);\n const handleNextPageClick = useCallback(() => {\n if (isPresentValue(onNextPageClick)) {\n onNextPageClick();\n return;\n }\n navigateToPage({\n setPage,\n page: meta.page + 1,\n pageSize,\n router,\n basePath,\n targetPosY: scrollTargetPosY,\n showPageSizeFilter,\n pageRouteProps,\n mode,\n after: meta.after\n });\n }, [meta, scrollTargetPosY, pageSize, showPageSizeFilter]);\n const handleSetPage = useCallback(page => {\n navigateToPage({\n setPage,\n page,\n pageSize,\n router,\n basePath,\n targetPosY: scrollTargetPosY,\n showPageSizeFilter,\n pageRouteProps\n });\n }, [meta, scrollTargetPosY, pageSize, showPageSizeFilter]);\n const setPageSizeHandler = useCallback(value => {\n setPage(DEFAULT_PAGE);\n setPageSize(value);\n router.push(`${basePath}?page=${DEFAULT_PAGE}&pageSize=${value}`, undefined, {\n shallow: true\n });\n }, [basePath]);\n if (!data.length || !showPageSizeFilter && (meta.pages === 1 || !meta.pages && !meta.withNextPage && meta.page === 1) && mode !== PAGINATION_MODES.INFINITE || mode === PAGINATION_MODES.INFINITE && !meta.after && !meta.before) {\n return null;\n }\n return <WrapperComponent>\n <S.ButtonsWrapper>\n <S.CellButton disabled={prevButtonProps.getDisabled({\n isLoading,\n page: meta.page,\n defaultPage,\n withPreviousPage: meta.withPreviousPage,\n before: meta.before\n })} isCompact={meta.pages > UI_PAGES_STEP} onClick={handlePrevPageClick}>\n <S.PreviousIcon />\n </S.CellButton>\n {mode === PAGINATION_MODES.INFINITE ? null : mode === PAGINATION_MODES.DEFAULT ? currentPageContainer : <NumberedButtons handleSetPage={handleSetPage} meta={meta} />}\n <S.CellButton disabled={nextButtonProps.getDisabled({\n isLoading,\n page: meta.page,\n totalPages: meta.pages,\n withNextPage: meta.withNextPage,\n after: meta.after\n })} isCompact={meta.pages > UI_PAGES_STEP} onClick={handleNextPageClick}>\n <S.NextIcon />\n </S.CellButton>\n </S.ButtonsWrapper>\n {showPageSizeFilter && <S.PageSizeWrapper>\n <S.ResultsText>Results per page:</S.ResultsText>\n <S.PaginationPageSizeActions>\n {PAGINATION_OPTIONS.map((pageTotal, key) => <Button key={key} variant={ACCENT_TEXT} onClick={() => {\n setPageSizeHandler(pageTotal);\n }} label={pageTotal} disabled={pageTotal === pageSize} />)}\n </S.PaginationPageSizeActions>\n </S.PageSizeWrapper>}\n </WrapperComponent>;\n};\nPagination.propTypes = {\n data: PropTypes.array.isRequired,\n showPageSizeFilter: PropTypes.bool,\n showPagesContent: PropTypes.bool,\n wrapper: PropTypes.elementType,\n basePath: PropTypes.string.isRequired,\n defaultPage: PropTypes.number,\n isLoading: PropTypes.bool,\n onPrevPageClick: PropTypes.func,\n onNextPageClick: PropTypes.func,\n setPage: PropTypes.func.isRequired,\n setPageSize: PropTypes.func,\n scrollTargetPosY: PropTypes.number,\n // next link props see: https://nextjs.org/docs/api-reference/next/link\n pageRouteProps: PropTypes.object,\n mode: PropTypes.string,\n meta: PropTypes.oneOfType([PropTypes.shape({\n count: PropTypes.number,\n itemsPerPage: PropTypes.number,\n page: PropTypes.number,\n pages: PropTypes.number,\n after: PropTypes.string,\n before: PropTypes.string\n }), PropTypes.shape({\n page: PropTypes.number,\n withNextPage: PropTypes.bool,\n withPreviousPage: PropTypes.bool,\n count: PropTypes.number\n })])\n};\nPagination.defaultProps = {\n wrapper: S.Pagination,\n isLoading: false,\n showPageSizeFilter: true,\n showPagesContent: true,\n defaultPage: DEFAULT_PAGE,\n setPageSize: () => {},\n onPrevPageClick: null,\n onNextPageClick: null,\n mode: PAGINATION_MODES.DEFAULT,\n meta: {},\n pageRouteProps: {\n shallow: true\n }\n};\nexport default memo(Pagination);","import Pagination from \"./Pagination\";\n\nexport default Pagination;\n","import React from \"react\";\n\nimport { isEmptyValue, isPresentValue, scrollTo } from \"common/utils\";\n\nimport { DEFAULT_PAGE, DEFAULT_PAGE_SIZE, PAGINATION_MODES } from \"../constants\";\n\nexport const getViewingPageInfo = ({ data, meta, defaultPage = DEFAULT_PAGE }) => {\n if (!data.length) {\n return null;\n }\n\n return (\n <>\n {`Viewing page ${meta.page} `}\n {isEmptyValue(meta.pages) || meta.pages < defaultPage ? \"\" : `of ${meta.pages}`}\n </>\n );\n};\n\nexport const navigateToPage = ({\n setPage,\n page,\n router,\n basePath,\n targetPosY,\n pageSize,\n showPageSizeFilter,\n pageRouteProps,\n mode,\n after,\n before\n}) => {\n const hasQuery = basePath.match(/\\?/);\n setPage(page);\n\n if (isPresentValue(targetPosY) && targetPosY !== 0) {\n scrollTo(targetPosY);\n }\n\n if (mode === PAGINATION_MODES.INFINITE) {\n let navigateParam = `?after=${after}`;\n\n if (after) {\n navigateParam = `?after=${after}`;\n } else if (before) {\n navigateParam = `?before=${before}`;\n } else {\n return;\n }\n\n router.push(`${basePath}${navigateParam}`, undefined, pageRouteProps);\n return;\n }\n\n const defaultQueryParams = `${hasQuery ? \"&\" : \"?\"}page=${page}`;\n const queryParams = showPageSizeFilter\n ? `${defaultQueryParams}&pageSize=${pageSize}`\n : defaultQueryParams;\n\n router.push(`${basePath}${queryParams}`, undefined, pageRouteProps);\n};\n\nexport const PAGINATION_OPTIONS = [10, 20, 50, 100];\n\nexport const getPaginationConfig = (mode) => {\n switch (mode) {\n case PAGINATION_MODES.INFINITE:\n return {\n prevButtonProps: {\n getDisabled: ({ before }) => !before\n },\n nextButtonProps: {\n getDisabled: ({ after }) => !after\n }\n };\n case PAGINATION_MODES.WITH_PAGE_BUTTONS:\n return {\n prevButtonProps: {\n getDisabled: ({ isLoading, page, defaultPage }) =>\n page === defaultPage || isLoading\n },\n nextButtonProps: {\n getDisabled: ({ isLoading, page, totalPages }) =>\n page >= totalPages || isLoading\n }\n };\n default:\n return {\n prevButtonProps: {\n getDisabled: ({ withPreviousPage }) => !withPreviousPage\n },\n nextButtonProps: {\n getDisabled: ({ withNextPage }) => !withNextPage\n }\n };\n }\n};\n\nexport const getPage = (value) => {\n const parsedValue = parseInt(value, 10);\n\n return isPresentValue(parsedValue) && parsedValue > 0 ? parsedValue : DEFAULT_PAGE;\n};\n\nexport const getPageSize = (value) => {\n const parsedValue = parseInt(value, 10);\n\n return PAGINATION_OPTIONS.includes(parsedValue) ? parsedValue : DEFAULT_PAGE_SIZE;\n};\n","import { styled } from \"@linaria/react\";\nimport { ContentWrapper, baseStylesBtnAndLink, accentStylesBtnAndLink } from \"common/styles\";\nimport { breakpoints, sizes, weights, families } from \"common/styles/config\";\nimport Input from \"../../components/Input\";\nexport const SearchContainer = /*#__PURE__*/styled(\"div\")({\n name: \"SearchContainer\",\n class: \"SearchContainer_s19q61dc\",\n vars: {\n \"s19q61dc-0\": [({\n withBackground\n }) => withBackground ? \"#f6fafd\" : \"#fff\"]\n }\n});\nexport const LoaderWrapperHelper = /*#__PURE__*/styled(\"div\")({\n name: \"LoaderWrapperHelper\",\n class: \"LoaderWrapperHelper_l1j4tgds\"\n});\nexport const SearchTitleWrapper = /*#__PURE__*/styled(ContentWrapper)({\n name: \"SearchTitleWrapper\",\n class: \"SearchTitleWrapper_sgr5uwt\"\n});\nexport const SearchWrapper = /*#__PURE__*/styled(ContentWrapper)({\n name: \"SearchWrapper\",\n class: \"SearchWrapper_sjjimi8\"\n});\nexport const SearchTitle = /*#__PURE__*/styled(\"h3\")({\n name: \"SearchTitle\",\n class: \"SearchTitle_s1rt6n0i\"\n});\nexport const ParamsWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"ParamsWrapper\",\n class: \"ParamsWrapper_pkap62u\"\n});\nexport const ControlsWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"ControlsWrapper\",\n class: \"ControlsWrapper_c13mn1au\"\n});\nexport const ParamControlWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"ParamControlWrapper\",\n class: \"ParamControlWrapper_p1e4yxhw\",\n vars: {\n \"p1e4yxhw-0\": [({\n isActive\n }) => isActive ? \"#3E5C6D\" : \"#e8f3ff\"],\n \"p1e4yxhw-1\": [({\n isActive\n }) => isActive ? \"white\" : \"#3e5c6d\"]\n }\n});\nexport const SearchParamControlContainer = /*#__PURE__*/styled(\"div\")({\n name: \"SearchParamControlContainer\",\n class: \"SearchParamControlContainer_s1mn54dt\"\n});\nexport const EditButton = /*#__PURE__*/styled(\"div\")({\n name: \"EditButton\",\n class: \"EditButton_epuhvji\",\n vars: {\n \"epuhvji-0\": [({\n isActive\n }) => isActive ? \"#fff\" : \"#3E5C6D\"]\n }\n});\nexport const StyledInput = /*#__PURE__*/styled(Input)({\n name: \"StyledInput\",\n class: \"StyledInput_stte8ae\"\n});\nexport const CloseButton = /*#__PURE__*/styled(\"div\")({\n name: \"CloseButton\",\n class: \"CloseButton_c7rrsnw\"\n});\nexport const ParamControlCloseButton = /*#__PURE__*/styled(CloseButton)({\n name: \"ParamControlCloseButton\",\n class: \"ParamControlCloseButton_pkoi2ka\"\n});\nexport const SearchStatus = /*#__PURE__*/styled(\"h2\")({\n name: \"SearchStatus\",\n class: \"SearchStatus_s145u1w9\"\n});\nexport const SearchText = /*#__PURE__*/styled(\"p\")({\n name: \"SearchText\",\n class: \"SearchText_s1k34baq\"\n});\nexport const SearchFilterContentWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"SearchFilterContentWrapper\",\n class: \"SearchFilterContentWrapper_s1nuh3o3\"\n});\nexport const SearchTips = /*#__PURE__*/styled(SearchStatus)({\n name: \"SearchTips\",\n class: \"SearchTips_s6qrrx4\"\n});\nexport const SearchCardsContent = /*#__PURE__*/styled(\"div\")({\n name: \"SearchCardsContent\",\n class: \"SearchCardsContent_s1r1e2z1\",\n vars: {\n \"s1r1e2z1-0\": [({\n isLoading\n }) => isLoading ? \"83.5vh\" : \"auto\"],\n \"s1r1e2z1-2\": [({\n isLoading\n }) => isLoading ? \"80vh\" : \"auto\"],\n \"s1r1e2z1-4\": [({\n wide\n }) => wide ? \"100%\" : \"835px\"],\n \"s1r1e2z1-5\": [({\n isLoading\n }) => isLoading ? \"75vh\" : \"auto\"]\n }\n});\nexport const SearchActions = /*#__PURE__*/styled(\"div\")({\n name: \"SearchActions\",\n class: \"SearchActions_s1azooyc\"\n});\nexport const SearchBackLink = /*#__PURE__*/styled(\"a\")({\n name: \"SearchBackLink\",\n class: \"SearchBackLink_sjzma4e\"\n});\nexport const ContactButton = /*#__PURE__*/styled(\"button\")({\n name: \"ContactButton\",\n class: \"ContactButton_c1b7m8n2\"\n});\nexport const SliderWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"SliderWrapper\",\n class: \"SliderWrapper_sa8qr33\"\n});\nexport const NoResultsWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"NoResultsWrapper\",\n class: \"NoResultsWrapper_n10j3muy\",\n vars: {\n \"n10j3muy-0\": [({\n withBackground\n }) => withBackground ? \"#ffffff\" : \"transparent\"]\n }\n});\nexport const CardsContainer = /*#__PURE__*/styled(\"div\")({\n name: \"CardsContainer\",\n class: \"CardsContainer_c1cvyqh8\"\n});\nexport const FilterNoDataContent = /*#__PURE__*/styled(\"div\")({\n name: \"FilterNoDataContent\",\n class: \"FilterNoDataContent_f1pdisy1\"\n});\n\nrequire(\"./SearchPage.styled.linaria.module.css!=!../../../node_modules/@linaria/webpack5-loader/lib/outputCssLoader.js!./SearchPage.styled.js\");","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport * as React from \"react\";\nfunction SvgEdit(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.092.313a.5.5 0 00-.708 0L1.256 6.441a.5.5 0 00-.13.228L.459 9.22a.5.5 0 00.61.61l2.553-.667a.5.5 0 00.227-.13l6.128-6.128a.5.5 0 000-.707L8.092.313zm-6.033 6.74l5.68-5.68 1.178 1.18-5.68 5.678-1.594.417.416-1.595z\",\n fill: \"#3E5C6D\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.667 10.833a.5.5 0 000 1h10a.5.5 0 000-1h-10z\",\n fill: \"#3E5C6D\"\n })));\n}\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA5MTYxIDAuMzEzMDczQzcuOTk3ODQgMC4yMTkzMDQgNy44NzA2NyAwLjE2NjYyNiA3LjczODA2IDAuMTY2NjI2QzcuNjA1NDUgMC4xNjY2MjYgNy40NzgyNyAwLjIxOTMwNCA3LjM4NDUgMC4zMTMwNzNMMS4yNTYyNSA2LjQ0MTMzQzEuMTkzNDMgNi41MDQxNSAxLjE0ODQ4IDYuNTgyNTcgMS4xMjYwMyA2LjY2ODUyTDAuNDU5MzYzIDkuMjIwODFDMC40MTQ1MDMgOS4zOTI1NSAwLjQ2NDA2MiA5LjU3NTIxIDAuNTg5NTc5IDkuNzAwNzJDMC43MTUwOTUgOS44MjYyNCAwLjg5Nzc1IDkuODc1OCAxLjA2OTQ5IDkuODMwOTRMMy42MjE3OCA5LjE2NDI3QzMuNzA3NzMgOS4xNDE4MiAzLjc4NjE1IDkuMDk2ODcgMy44NDg5NyA5LjAzNDA2TDkuOTc3MjMgMi45MDU4QzEwLjE3MjUgMi43MTA1NCAxMC4xNzI1IDIuMzkzOTUgOS45NzcyMyAyLjE5ODY5TDguMDkxNjEgMC4zMTMwNzNaTTIuMDU5MjggNy4wNTI1MUw3LjczODA2IDEuMzczNzNMOC45MTY1NyAyLjU1MjI0TDMuMjM3NzkgOC4yMzEwMkwxLjY0MjYyIDguNjQ3NjlMMi4wNTkyOCA3LjA1MjUxWiIgZmlsbD0iIzNFNUM2RCIvPgo8cGF0aCBkPSJNMC42NjY5OTIgMTAuODMzM0MwLjM5MDg1IDEwLjgzMzMgMC4xNjY5OTIgMTEuMDU3MiAwLjE2Njk5MiAxMS4zMzMzQzAuMTY2OTkyIDExLjYwOTQgMC4zOTA4NSAxMS44MzMzIDAuNjY2OTkyIDExLjgzMzNIMTAuNjY3QzEwLjk0MzEgMTEuODMzMyAxMS4xNjcgMTEuNjA5NCAxMS4xNjcgMTEuMzMzM0MxMS4xNjcgMTEuMDU3MiAxMC45NDMxIDEwLjgzMzMgMTAuNjY3IDEwLjgzMzNIMC42NjY5OTJaIiBmaWxsPSIjM0U1QzZEIi8+Cjwvc3ZnPgo=\";\nexport { SvgEdit as ReactComponent };","import React, { useState, useCallback } from \"react\";\nimport dynamic from \"next/dynamic\";\nimport PropTypes from \"prop-types\";\nimport * as S from \"../../SearchPage.styled\";\nimport { ReactComponent as EditIcon } from \"public/icons/edit.svg\";\nconst Tippy = dynamic(() => import(\"components/Tippy\"), {\n ssr: false\n});\nconst SearchParamControl = ({\n value,\n type,\n isEditable,\n onChange,\n name\n}) => {\n const [isEditorOpen, setIsEditorOpen] = useState(false);\n const [currentValue, setCurrentValue] = useState(value);\n const [editableValue, setEditableValue] = useState(currentValue);\n const handleDelete = () => {\n onChange({\n type\n });\n };\n const closeEditor = () => {\n setIsEditorOpen(false);\n if (editableValue.length >= 3) {\n setCurrentValue(editableValue);\n onChange({\n type,\n value: editableValue\n });\n }\n if (editableValue.length === 0) {\n handleDelete();\n }\n };\n const onEnterPress = useCallback(event => {\n if (event.key === \"Enter\") {\n setIsEditorOpen(false);\n if (editableValue.length >= 3) {\n setCurrentValue(editableValue);\n onChange({\n type,\n value: editableValue\n });\n }\n }\n }, [editableValue]);\n return isEditable ? <Tippy interactive content={<S.StyledInput value={editableValue} onChange={event => setEditableValue(event.currentTarget.value)} styles={{\n paddingTop: 0,\n minHeight: \"24px\"\n }} inputStyles={{\n borderBottom: \"none\",\n fontSize: \"12px\",\n background: \"#EDF8FF\",\n padding: \"0 4px\",\n minWidth: \"280px\"\n }} onKeyPress={onEnterPress} />} placement=\"bottom\" visible={isEditorOpen} onClickOutside={closeEditor}>\n <S.SearchParamControlContainer onClick={() => setIsEditorOpen(!isEditorOpen)}>\n {name}:\n <S.ParamControlWrapper isActive={isEditorOpen}>\n {currentValue}\n <S.EditButton isActive={isEditorOpen}>\n {isEditorOpen ? <S.ParamControlCloseButton onClick={handleDelete} /> : <EditIcon />}\n </S.EditButton>\n </S.ParamControlWrapper>\n </S.SearchParamControlContainer>\n </Tippy> : <S.SearchParamControlContainer>\n <S.ParamControlWrapper>\n {`${name}: `}\n {value}\n <S.CloseButton onClick={handleDelete} />\n </S.ParamControlWrapper>\n </S.SearchParamControlContainer>;\n};\nSearchParamControl.propTypes = {\n value: PropTypes.string,\n name: PropTypes.string,\n type: PropTypes.string,\n isEditable: PropTypes.bool,\n onChange: PropTypes.func\n};\nSearchParamControl.defaultProps = {\n onChange: () => null\n};\nexport default SearchParamControl;","import SearchParamControl from \"./SearchParamControl\";\n\nexport default SearchParamControl;\n","import { styled } from \"@linaria/react\";\nimport { breakpoints, sizes, weights, colors, families } from \"common/styles/config\";\nimport Button from \"components/Button\";\nexport const OffersPricesWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"OffersPricesWrapper\",\n class: \"OffersPricesWrapper_odedwvv\"\n});\nexport const Offers = /*#__PURE__*/styled(\"div\")({\n name: \"Offers\",\n class: \"Offers_o1a7u5jm\"\n});\nexport const FromWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"FromWrapper\",\n class: \"FromWrapper_fm5z3fx\",\n vars: {\n \"fm5z3fx-0\": [({\n isVisible\n }) => isVisible ? \"block\" : \"none\"]\n }\n});\nexport const FromPrice = /*#__PURE__*/styled(\"span\")({\n name: \"FromPrice\",\n class: \"FromPrice_f1wo7oya\"\n});\nexport const BookWrapperLink = /*#__PURE__*/styled(\"a\")({\n name: \"BookWrapperLink\",\n class: \"BookWrapperLink_b5rzypv\"\n});\nexport const BookContainer = /*#__PURE__*/styled(\"div\")({\n name: \"BookContainer\",\n class: \"BookContainer_b1xw0hok\"\n});\nexport const SeePricesButton = /*#__PURE__*/styled(Button)({\n name: \"SeePricesButton\",\n class: \"SeePricesButton_sck7b6i\"\n});\nexport const BottomWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"BottomWrapper\",\n class: \"BottomWrapper_bprexjj\"\n});\nexport const BookContainerInner = /*#__PURE__*/styled(\"div\")({\n name: \"BookContainerInner\",\n class: \"BookContainerInner_bcyuywk\"\n});\nexport const BookImgContent = /*#__PURE__*/styled(\"div\")({\n name: \"BookImgContent\",\n class: \"BookImgContent_b1ofiyxa\"\n});\nexport const BookContent = /*#__PURE__*/styled(\"div\")({\n name: \"BookContent\",\n class: \"BookContent_bzopiem\"\n});\nexport const BookContentWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"BookContentWrapper\",\n class: \"BookContentWrapper_bx59aw5\"\n});\nexport const BookTitle = /*#__PURE__*/styled(\"h2\")({\n name: \"BookTitle\",\n class: \"BookTitle_b754yez\"\n});\nexport const BookDetails = /*#__PURE__*/styled(\"div\")({\n name: \"BookDetails\",\n class: \"BookDetails_b147bwl2\"\n});\nexport const BookDetailContent = /*#__PURE__*/styled(\"div\")({\n name: \"BookDetailContent\",\n class: \"BookDetailContent_b16qmlt3\"\n});\nexport const BookLabel = /*#__PURE__*/styled(\"strong\")({\n name: \"BookLabel\",\n class: \"BookLabel_bqymnsm\"\n});\nexport const BookText = /*#__PURE__*/styled(\"span\")({\n name: \"BookText\",\n class: \"BookText_b3zre3z\"\n});\nexport const BookCodesContent = /*#__PURE__*/styled(BookContent)({\n name: \"BookCodesContent\",\n class: \"BookCodesContent_b1hwfuhm\"\n});\n\nrequire(\"./SearchCard.styled.linaria.module.css!=!../../../../node_modules/@linaria/webpack5-loader/lib/outputCssLoader.js!./SearchCard.styled.js\");","import React, { memo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport format from \"date-fns/format\";\nimport Link from \"next/link\";\nimport { BUY_STATE } from \"common/constants/searchTypes\";\nimport BookAsset from \"components/BookAsset\";\nimport { ACCENT } from \"common/constants/buttonTypes\";\nimport { BOOK } from \"common/constants/pathRoutes\";\nimport { getHighlightText } from \"./utils\";\nimport * as S from \"./SearchCard.styled\";\nconst SearchCard = ({\n searchTerm,\n book\n}) => {\n const isbn = book.isbn13 || book.isbn10;\n const formattedTitle = getHighlightText(book.title, searchTerm);\n const link = `${BOOK}/${isbn}-${book.slug}?type=${BUY_STATE}`;\n return <Link href={link} prefetch={false} passHref aria-label={book.title}>\n <S.BookWrapperLink>\n <S.BookContainer>\n <S.BookContainerInner>\n <BookAsset book={book} wrapper={S.BookImgContent} imageProps={{\n loading: \"lazy\",\n priority: false,\n objectPosition: \"top\",\n layout: \"fill\"\n }} objectFit=\"cover\" />\n <S.BookDetails>\n <div>\n <S.BookTitle dangerouslySetInnerHTML={{\n __html: formattedTitle\n }} />\n <S.BookContentWrapper>\n <S.BookContent>\n <S.BookDetailContent>\n <S.BookLabel>Author:</S.BookLabel>\n <S.BookText>{book.author}</S.BookText>\n </S.BookDetailContent>\n {book.isbn13 && <S.BookDetailContent>\n <S.BookLabel>ISBN-13:</S.BookLabel>\n <S.BookText>{book.isbn13}</S.BookText>\n </S.BookDetailContent>}\n {book.edition && <S.BookDetailContent>\n <S.BookLabel>Edition:</S.BookLabel>\n <S.BookText>{book.edition}</S.BookText>\n </S.BookDetailContent>}\n </S.BookContent>\n <S.BookCodesContent>\n {book.released && <S.BookDetailContent>\n <S.BookLabel>Released:</S.BookLabel>\n <S.BookText>\n {format(new Date(book.released), \"MMM dd, yyyy\")}\n </S.BookText>\n </S.BookDetailContent>}\n {book.publisher && <S.BookDetailContent>\n <S.BookLabel>Publisher:</S.BookLabel>\n <S.BookText>{book.publisher}</S.BookText>\n </S.BookDetailContent>}\n {book.binding && <S.BookDetailContent>\n <S.BookLabel>Format:</S.BookLabel>\n <S.BookText>{book.binding}</S.BookText>\n </S.BookDetailContent>}\n </S.BookCodesContent>\n </S.BookContentWrapper>\n </div>\n <S.BottomWrapper>\n {book.countOfBuyOffers ? <S.OffersPricesWrapper>\n <S.Offers>{`${book.countOfBuyOffers} offers`}</S.Offers>\n <S.FromWrapper isVisible={!!book.minBuyPrice}>\n from <S.FromPrice>${book.minBuyPrice}</S.FromPrice>\n </S.FromWrapper>\n </S.OffersPricesWrapper> : <div></div>}\n <S.SeePricesButton label=\"SEE PRICES\" variant={ACCENT} style={{\n borderRadius: \"3px\"\n }} data-test-id=\"text-search see-prices-button\" />\n </S.BottomWrapper>\n </S.BookDetails>\n </S.BookContainerInner>\n <S.BottomWrapper>\n {book.countOfBuyOffers ? <S.OffersPricesWrapper>\n <S.Offers>{`${book.countOfBuyOffers} offers`}</S.Offers>\n <S.FromWrapper isVisible={!!book.minBuyPrice}>\n from <S.FromPrice>${book.minBuyPrice}</S.FromPrice>\n </S.FromWrapper>\n </S.OffersPricesWrapper> : <div></div>}\n <S.SeePricesButton label=\"SEE PRICES\" variant={ACCENT} style={{\n borderRadius: \"3px\"\n }} data-test-id=\"text-search see-prices-button\" />\n </S.BottomWrapper>\n </S.BookContainer>\n </S.BookWrapperLink>\n </Link>;\n};\nSearchCard.propTypes = {\n book: PropTypes.object.isRequired,\n searchTerm: PropTypes.string\n};\nSearchCard.defaultProps = {\n searchTerm: \"\"\n};\nexport default memo(SearchCard);","export const getHighlightText = (str = \"\", target = \"\") => {\n const fullText = str.toLowerCase();\n const targetText = target.trim().toLowerCase();\n\n const queryStart = fullText.indexOf(targetText);\n\n if (queryStart < 0) {\n return str;\n }\n\n const queryEnd = queryStart + targetText.length;\n const strStart = str.slice(0, queryStart);\n\n const highlightText = `<span class=\"highlight__accent__text\">${str.slice(\n queryStart,\n queryEnd\n )}</span>`;\n\n const strEnd = str.slice(queryEnd);\n\n return strStart + highlightText + strEnd;\n};\n","import SearchCard from \"./SearchCard\";\n\nexport default SearchCard;\n","import { styled } from \"@linaria/react\";\nimport { weights } from \"common/styles/config\";\nexport const Container = /*#__PURE__*/styled(\"div\")({\n name: \"Container\",\n class: \"Container_c1agcsmt\"\n});\nexport const Title = /*#__PURE__*/styled(\"p\")({\n name: \"Title\",\n class: \"Title_t5mjbqw\"\n});\nexport const Content = /*#__PURE__*/styled(\"p\")({\n name: \"Content\",\n class: \"Content_c1nnjiq4\"\n});\n\nrequire(\"./SearchTipsCard.styled.linaria.module.css!=!../../../../node_modules/@linaria/webpack5-loader/lib/outputCssLoader.js!./SearchTipsCard.styled.js\");","import React, { memo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Image from \"next/image\";\nimport { IMAGE_BLUR_PLACEHOLDER } from \"common/utils\";\nimport * as S from \"./SearchTipsCard.styled\";\nconst SearchTipsCard = ({\n title,\n content,\n img\n}) => {\n return <S.Container>\n <Image src={img} width={64} height={64} alt={`${title} image`} loading={\"lazy\"} placeholder={\"blur\"} blurDataURL={IMAGE_BLUR_PLACEHOLDER} />\n <S.Title>{title}</S.Title>\n <S.Content>{content}</S.Content>\n </S.Container>;\n};\nSearchTipsCard.propTypes = {\n title: PropTypes.string.isRequired,\n content: PropTypes.string.isRequired,\n img: PropTypes.string.isRequired\n};\nexport default memo(SearchTipsCard);","import SearchTipsCard from \"./SearchTipsCard\";\n\nexport default SearchTipsCard;\n","import React from \"react\";\nimport SearchCard from \"components/cards/SearchCard\";\nimport SearchTipsCard from \"components/cards/SearchTipsCard\";\n\nimport CheckSpellingImg from \"public/images/search/check-the-spelling.svg\";\nimport EnterIsbnImg from \"public/images/search/enter-an-isbn.svg\";\nimport UseFewerWordsImg from \"public/images/search/use-fewer-words.svg\";\nimport * as PATH from \"common/constants/pathRoutes\";\nimport { decodeSearchTerm } from \"common/utils\";\n\nconst ITEMS_PER_PAGE = 10;\n\nconst ADVANCED_SEARCH_TERMS_MAP = {\n \"term-title\": \"term.title\",\n \"term-author\": \"term.author\",\n \"term-publisher\": \"term.publisher\",\n \"range-published_year-gte\": \"range.published_year[gte]\",\n \"range-published_year-lte\": \"range.published_year[lte]\",\n term: \"term\"\n};\n\nexport const SEARCH_CONTROLS_CONFIG = {\n \"term.title\": {\n isEditable: true,\n displayedName: \"Title\",\n paramName: \"term-title\"\n },\n \"term.author\": {\n isEditable: false,\n displayedName: \"Author\",\n paramName: \"term-author\"\n },\n \"term.publisher\": {\n isEditable: false,\n displayedName: \"Publisher\",\n paramName: \"term-publisher\"\n },\n \"range.published_year[gte]\": {\n isEditable: false,\n displayedName: \"Min year\",\n paramName: \"range-published_year-gte\"\n },\n \"range.published_year[lte]\": {\n isEditable: false,\n displayedName: \"Max year\",\n paramName: \"range-published_year-lte\"\n },\n term: {\n isEditable: false,\n displayedName: \"Keyword\",\n paramName: \"term\"\n }\n};\n\nexport const getBooksCardList = (data, searchTerm, type) =>\n data.map((book, key) => (\n <SearchCard key={key} book={book} type={type} searchTerm={searchTerm} />\n ));\n\nexport const getBooksAdvancedSearchParams = (searchTerms, page, filterParams) => {\n const param = {\n params: { ...searchTerms, itemsPerPage: ITEMS_PER_PAGE, page, ...filterParams }\n };\n\n return param;\n};\n\nexport const getBooksSearchParams = (searchTerm, page, filterParams) => {\n const param = searchTerm.length > 0 && {\n params: { term: searchTerm, itemsPerPage: ITEMS_PER_PAGE, page, ...filterParams }\n };\n\n return param;\n};\n\nexport const getAdvancedSearchTerms = (query) => {\n const searchTerms = {};\n const filterParams = {};\n\n Object.keys(ADVANCED_SEARCH_TERMS_MAP).forEach((prop) => {\n if (query[prop]) {\n searchTerms[ADVANCED_SEARCH_TERMS_MAP[prop]] = decodeSearchTerm(query[prop]);\n }\n });\n\n Object.keys(query).forEach((prop) => {\n if (\n !ADVANCED_SEARCH_TERMS_MAP[prop] &&\n prop !== \"page\" &&\n prop !== \"type\" &&\n prop !== \"itemsPerPage\"\n ) {\n filterParams[prop] = query[prop];\n }\n });\n\n return { searchTerms, filterParams };\n};\n\nexport const getAdvancedSearchRoutByTerms = ({ terms, filterParams, page = 1, type = \"buy\" }) => {\n let query = Object.keys(terms)\n .map(\n (term) =>\n `&${encodeURIComponent(\n SEARCH_CONTROLS_CONFIG[term].paramName\n )}=${encodeURIComponent(terms[term])}`\n )\n .join(\"\")\n .slice(1);\n\n if (filterParams) {\n query = `${query}&type=${type}&page=${page}${getQueryStringByParams(filterParams)}`;\n }\n\n return `${PATH.ADVANCED_SEARCH}?${query}`;\n};\n\nexport const getQueryStringByParams = (params) => {\n const queryString = Object.keys(params)\n .map((key) => {\n if (Array.isArray(params[key])) {\n return params[key]\n .map((param) => `&${encodeURIComponent(key)}=${encodeURIComponent(param)}`)\n .join(\"\");\n }\n\n return `&${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`;\n })\n .join(\"\");\n\n return queryString;\n};\n\nexport const getBooksSearchQuery = ({ searchTerm, page, filterParams, type }) =>\n `${PATH.SEARCH}?query=${encodeURIComponent(\n searchTerm\n )}&type=${type}&page=${page}${getQueryStringByParams(filterParams)}`;\n\nexport const getSearchBasePath = (query, isAdvancedSearch) => {\n const filteredQuery = {};\n\n Object.keys(query).forEach((key) => {\n if (key !== \"page\" && key !== \"pageSize\") {\n filteredQuery[key] = query[key];\n }\n });\n\n return `${isAdvancedSearch ? PATH.ADVANCED_SEARCH : PATH.SEARCH}?${getQueryStringByParams(\n filteredQuery\n ).substring(1)}`;\n};\n\nexport const searchTipsConfig = [\n {\n img: CheckSpellingImg,\n title: \"Check the spelling\",\n content:\n \"Please check the search form up above for squiggly red lines that indicate a \" +\n \"misspelling. Sometimes you can right mouse click or tap the misspelled word for \" +\n \"suggestions.\"\n },\n {\n img: UseFewerWordsImg,\n title: \"Use fewer words\",\n content:\n \"Sometimes it helps to try fewer words in your search. Just the title often works best.\"\n },\n {\n img: EnterIsbnImg,\n title: \"Enter an ISBN\",\n content:\n \"Most books published after 1975 have a 10 or 13 digit number assigned to them. \" +\n \"Maybe you can gain access to a copy of the book you are looking for. If so, use \" +\n \"the ISBN to find the exact same edition.\"\n }\n];\n\nexport const searchTipsCards = searchTipsConfig.map(({ title, content, img }, index) => (\n <SearchTipsCard key={index} title={title} content={content} img={img} />\n));\n\nexport const getFilterState = (data, query) => {\n if (!data) {\n return {};\n }\n\n const filterData = {};\n\n Object.keys(data).forEach((key) => {\n filterData[key] = data[key].map((item) => {\n if (query[key]) {\n let isChecked;\n\n if (Array.isArray(query[key])) {\n isChecked = !!query[key].find((name) => name === item.key);\n } else {\n isChecked = query[key] === item.key;\n }\n return { name: item.key, isChecked };\n }\n\n return { name: item.key, isChecked: false };\n });\n });\n\n return filterData;\n};\n\nexport const makeFilterParamsFromFilterState = (filterState) => {\n const filterParams = {};\n\n Object.keys(filterState).forEach((key) => {\n filterState[key].forEach((param) => {\n if (param.isChecked) {\n if (filterParams[key]) {\n filterParams[key].push(param.name);\n } else {\n filterParams[key] = [param.name];\n }\n }\n });\n });\n\n return filterParams;\n};\n","var _circle, _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport * as React from \"react\";\nfunction SvgCheckTheSpelling(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 64,\n height: 64,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 32,\n fill: \"#EAEFEB\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.215 12.824l-.122-.324H28.069l-.121.325-11.416 30.549-.253.675H23.467l.114-.341 2.17-6.457h10.692l.644 1.907.325.962.565-.844a7.82 7.82 0 014.398-3.19l.526-.146-.193-.511-8.493-22.605zm-6.598 18.874l3.467-10.315 3.484 10.315h-6.95z\",\n stroke: \"#000\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.15 43.607a6.679 6.679 0 11-13.358 0 6.679 6.679 0 0113.358 0z\",\n fill: \"#EAEFEB\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.47 49.124a5.517 5.517 0 100-11.035 5.517 5.517 0 000 11.035zm0 1.162a6.679 6.679 0 100-13.358 6.679 6.679 0 000 13.358z\",\n fill: \"#000\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.478 41.822l-4.194 4.194-2.513-2.512.822-.822 1.69 1.691 3.373-3.372.822.821z\",\n fill: \"#000\"\n })));\n}\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMzIiIGN5PSIzMiIgcj0iMzIiIGZpbGw9IiNFQUVGRUIiLz4KPHBhdGggZD0iTTM0LjIxNDYgMTIuODI0MUwzNC4wOTI4IDEyLjVIMzMuNzQ2NUgzMi4zMTk1SDI5LjgyMjJIMjguNDE2MkgyOC4wNjkyTDI3Ljk0NzggMTIuODI1TDE2LjUzMTYgNDMuMzczN0wxNi4yNzk0IDQ0LjA0ODdIMTdIMjMuMTA2OEgyMy40NjYyTDIzLjU4MDggNDMuNzA4TDI1Ljc1MSAzNy4yNTA4SDM2LjQ0MzFMMzcuMDg3MSAzOS4xNTc3TDM3LjQxMjEgNDAuMTJMMzcuOTc2NiAzOS4yNzU1QzM5LjAwMTYgMzcuNzQxOSA0MC41NTQ5IDM2LjU5MjMgNDIuMzc0NSAzNi4wODYzTDQyLjkwMDcgMzUuOTRMNDIuNzA4NSAzNS40Mjg3TDM0LjIxNDYgMTIuODI0MVpNMjcuNjE3NCAzMS42OTc5TDMxLjA4NDIgMjEuMzgzTDM0LjU2NzggMzEuNjk3OUgyNy42MTc0WiIgc3Ryb2tlPSJibGFjayIvPgo8cGF0aCBkPSJNNTEuMTQ5NSA0My42MDY4QzUxLjE0OTUgNDcuMjk1NSA0OC4xNTkzIDUwLjI4NTcgNDQuNDcwNiA1MC4yODU3QzQwLjc4MiA1MC4yODU3IDM3Ljc5MTcgNDcuMjk1NSAzNy43OTE3IDQzLjYwNjhDMzcuNzkxNyAzOS45MTgyIDQwLjc4MiAzNi45Mjc5IDQ0LjQ3MDYgMzYuOTI3OUM0OC4xNTkzIDM2LjkyNzkgNTEuMTQ5NSAzOS45MTgyIDUxLjE0OTUgNDMuNjA2OFoiIGZpbGw9IiNFQUVGRUIiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00NC40NzA2IDQ5LjEyNDJDNDcuNTE3OCA0OS4xMjQyIDQ5Ljk4OCA0Ni42NTQgNDkuOTg4IDQzLjYwNjhDNDkuOTg4IDQwLjU1OTcgNDcuNTE3OCAzOC4wODk1IDQ0LjQ3MDYgMzguMDg5NUM0MS40MjM1IDM4LjA4OTUgMzguOTUzMyA0MC41NTk3IDM4Ljk1MzMgNDMuNjA2OEMzOC45NTMzIDQ2LjY1NCA0MS40MjM1IDQ5LjEyNDIgNDQuNDcwNiA0OS4xMjQyWk00NC40NzA2IDUwLjI4NTdDNDguMTU5MyA1MC4yODU3IDUxLjE0OTUgNDcuMjk1NSA1MS4xNDk1IDQzLjYwNjhDNTEuMTQ5NSAzOS45MTgyIDQ4LjE1OTMgMzYuOTI3OSA0NC40NzA2IDM2LjkyNzlDNDAuNzgyIDM2LjkyNzkgMzcuNzkxNyAzOS45MTgyIDM3Ljc5MTcgNDMuNjA2OEMzNy43OTE3IDQ3LjI5NTUgNDAuNzgyIDUwLjI4NTcgNDQuNDcwNiA1MC4yODU3WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC40Nzc2IDQxLjgyMjRMNDQuMjgzOCA0Ni4wMTYyTDQxLjc3MTQgNDMuNTAzOEw0Mi41OTI3IDQyLjY4MjRMNDQuMjgzOCA0NC4zNzM1TDQ3LjY1NjMgNDEuMDAxTDQ4LjQ3NzYgNDEuODIyNFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo=\";\nexport { SvgCheckTheSpelling as ReactComponent };","var _circle, _rect, _path, _path2, _circle2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport * as React from \"react\";\nfunction SvgUseFewerWords(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 64,\n height: 64,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 32,\n fill: \"#F4F9FD\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 10.5,\n y: 24.5,\n width: 43,\n height: 14,\n rx: 2.5,\n stroke: \"#000\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000\",\n d: \"M15 31h7v2h-7zM24 31h5v2h-5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.438 33L50 36\",\n stroke: \"#000\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 45.5,\n cy: 30.5,\n r: 3,\n stroke: \"#000\"\n })));\n}\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMzIiIGN5PSIzMiIgcj0iMzIiIGZpbGw9IiNGNEY5RkQiLz4KPHJlY3QgeD0iMTAuNSIgeT0iMjQuNSIgd2lkdGg9IjQzIiBoZWlnaHQ9IjE0IiByeD0iMi41IiBzdHJva2U9ImJsYWNrIi8+CjxyZWN0IHg9IjE1IiB5PSIzMSIgd2lkdGg9IjciIGhlaWdodD0iMiIgZmlsbD0iYmxhY2siLz4KPHJlY3QgeD0iMjQiIHk9IjMxIiB3aWR0aD0iNSIgaGVpZ2h0PSIyIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNDcuNDM3NSAzM0w1MCAzNiIgc3Ryb2tlPSJibGFjayIvPgo8Y2lyY2xlIGN4PSI0NS41IiBjeT0iMzAuNSIgcj0iMyIgc3Ryb2tlPSJibGFjayIvPgo8L3N2Zz4K\";\nexport { SvgUseFewerWords as ReactComponent };","var _circle, _path, _path2, _path3, _circle2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport * as React from \"react\";\nfunction SvgEnterAnIsbn(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 64,\n height: 64,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 32,\n fill: \"#FDECDC\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000\",\n d: \"M20.878 14.5h26v31h-26zM47.378 14.5L23.878 9v5.5\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.378 35h1.5v3h-1.5v-3zM26.378 35h.5v3h-.5v-3zM29.878 35h.258v3h-.258v-3zM29.378 35h-.784v3h.784v-3zM27.378 35h1v3h-1v-3zM24.378 39h7v1h-7zM24.378 41h5v1h-5z\",\n fill: \"#000\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.821 46.755l7.457 8.73\",\n stroke: \"#000\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 26.184,\n cy: 39.481,\n r: 9.684,\n stroke: \"#000\"\n })));\n}\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMzIiIGN5PSIzMiIgcj0iMzIiIGZpbGw9IiNGREVDREMiLz4KPHJlY3QgeD0iMjAuODc4MiIgeT0iMTQuNSIgd2lkdGg9IjI2IiBoZWlnaHQ9IjMxIiBzdHJva2U9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00Ny4zNzgyIDE0LjVMMjMuODc4MiA5VjE0LjUiIHN0cm9rZT0iYmxhY2siLz4KPHBhdGggZD0iTTI0LjM3ODIgMzVIMjUuODc4MlYzOEgyNC4zNzgyVjM1WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTI2LjM3ODIgMzVIMjYuODc4MlYzOEgyNi4zNzgyVjM1WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTI5Ljg3ODIgMzVMMzAuMTM2NCAzNVYzOEgyOS44NzgyVjM1WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTI5LjM3ODEgMzVIMjguNTk0NFYzOEgyOS4zNzgxVjM1WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTI3LjM3ODIgMzVIMjguMzc4MlYzOEgyNy4zNzgyVjM1WiIgZmlsbD0iYmxhY2siLz4KPHJlY3QgeD0iMjQuMzc4MiIgeT0iMzkiIHdpZHRoPSI3IiBoZWlnaHQ9IjEiIGZpbGw9ImJsYWNrIi8+CjxyZWN0IHg9IjI0LjM3ODIiIHk9IjQxIiB3aWR0aD0iNSIgaGVpZ2h0PSIxIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzEuODIxNCA0Ni43NTUxTDM5LjI3NzUgNTUuNDg0MiIgc3Ryb2tlPSJibGFjayIvPgo8Y2lyY2xlIGN4PSIyNi4xODQiIGN5PSIzOS40ODA4IiByPSI5LjY4Mzk3IiBzdHJva2U9ImJsYWNrIi8+Cjwvc3ZnPgo=\";\nexport { SvgEnterAnIsbn as ReactComponent };","import React, { memo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as S from \"../../SearchPage.styled\";\nimport SearchParamControl from \"../SearchParamControl\";\nimport { SEARCH_CONTROLS_CONFIG } from \"../../utils\";\nconst AdvancedSearchParamControls = ({\n filters,\n handleChange\n}) => {\n return <S.ParamsWrapper>\n <S.SearchTitleWrapper>\n <S.SearchTitle>{\"Search results\"}</S.SearchTitle>\n <S.ControlsWrapper>\n {Object.keys(filters).map(type => {\n return <SearchParamControl type={type} isEditable={SEARCH_CONTROLS_CONFIG[type]?.isEditable} value={filters[type]} key={type} name={SEARCH_CONTROLS_CONFIG[type].displayedName} onChange={handleChange} />;\n })}\n </S.ControlsWrapper>\n </S.SearchTitleWrapper>\n </S.ParamsWrapper>;\n};\nAdvancedSearchParamControls.propTypes = {\n filters: PropTypes.object,\n handleChange: PropTypes.func\n};\nAdvancedSearchParamControls.defaultProps = {\n handleChange: () => null\n};\nexport default memo(AdvancedSearchParamControls);","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport * as React from \"react\";\nfunction SvgFilter(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 22,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.487 4.972a49.4 49.4 0 00-10.974 0 .314.314 0 00-.21.51l3.224 3.985a8.02 8.02 0 011.785 5.044v2.649l1.375 1.008v-3.656a8.02 8.02 0 011.785-5.045l3.224-3.985a.314.314 0 00-.21-.51zM5.36 3.605a50.775 50.775 0 0111.28 0c1.326.148 1.965 1.704 1.125 2.741l-3.224 3.986a6.646 6.646 0 00-1.479 4.18v5.013a.687.687 0 01-1.094.554l-2.75-2.016a.687.687 0 01-.28-.555v-2.996a6.646 6.646 0 00-1.48-4.18L4.234 6.346c-.839-1.037-.2-2.593 1.126-2.74z\",\n fill: \"#ED5121\"\n })));\n}\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyMiAyMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IkNvbXBvbmVudCAxIj4KPHBhdGggaWQ9Ikljb24iIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYuNDg2OSA0Ljk3MTY5QzEyLjg0MDMgNC41NjQxMiA5LjE1OTU1IDQuNTY0MTIgNS41MTI5IDQuOTcxNjlDNS4yNjYxNiA0Ljk5OTI3IDUuMTQ3MzQgNS4yODg2MiA1LjMwMzQ5IDUuNDgxNjRMOC41Mjc0MiA5LjQ2Njg5QzkuNjgyMzMgMTAuODk0NSAxMC4zMTI0IDEyLjY3NTIgMTAuMzEyNCAxNC41MTE1VjE3LjE1OTlMMTEuNjg3NCAxOC4xNjgzVjE0LjUxMTVDMTEuNjg3NCAxMi42NzUyIDEyLjMxNzUgMTAuODk0NSAxMy40NzI0IDkuNDY2ODlMMTYuNjk2MyA1LjQ4MTY0QzE2Ljg1MjUgNS4yODg2MiAxNi43MzM3IDQuOTk5MjcgMTYuNDg2OSA0Ljk3MTY5Wk01LjM2MDE3IDMuNjA1MkM5LjEwODMzIDMuMTg2MjkgMTIuODkxNSAzLjE4NjI5IDE2LjYzOTYgMy42MDUyQzE3Ljk2NiAzLjc1MzQ0IDE4LjYwNDcgNS4zMDg4MyAxNy43NjUzIDYuMzQ2NDNMMTQuNTQxNCAxMC4zMzE3QzEzLjU4NDUgMTEuNTE0NiAxMy4wNjI0IDEyLjk5IDEzLjA2MjQgMTQuNTExNVYxOS41MjVDMTMuMDYyNCAxOS43ODQxIDEyLjkxNjggMjAuMDIxMSAxMi42ODU3IDIwLjEzODJDMTIuNDU0NiAyMC4yNTU0IDEyLjE3NzMgMjAuMjMyNiAxMS45NjgzIDIwLjA3OTRMOS4yMTgzNCAxOC4wNjI3QzkuMDQxNzQgMTcuOTMzMiA4LjkzNzQgMTcuNzI3MyA4LjkzNzQgMTcuNTA4M1YxNC41MTE1QzguOTM3NCAxMi45OSA4LjQxNTM0IDExLjUxNDYgNy40NTg0MiAxMC4zMzE3TDQuMjM0NDggNi4zNDY0M0MzLjM5NTEgNS4zMDg4MyA0LjAzMzgyIDMuNzUzNDQgNS4zNjAxNyAzLjYwNTJaIiBmaWxsPSIjRUQ1MTIxIi8+CjwvZz4KPC9zdmc+Cg==\";\nexport { SvgFilter as ReactComponent };","import AdvancedSearchParamControls from \"./AdvancedSearchParamControls\";\n\nexport default AdvancedSearchParamControls;\n","export const filterSectionsConfig = {\n binding: {\n withSearch: false,\n withMoreView: false,\n showMoreTitle: \"More formats\",\n title: \"Format\",\n position: 1\n },\n authors: {\n withSearch: true,\n withMoreView: true,\n showMoreTitle: \"More authors\",\n title: \"Author\",\n position: 2\n },\n edition: {\n withSearch: true,\n withMoreView: true,\n showMoreTitle: \"More editions\",\n title: \"Edition\",\n position: 3,\n sortFunction: (item1, item2) => {\n const numberFromItem = (name) => {\n const nameArr = name.split(\"\");\n let resultStr = \"\";\n\n nameArr.some((symbol) => {\n if (!isNaN(Number(symbol))) {\n resultStr = resultStr + symbol;\n return false;\n } else {\n return true;\n }\n });\n\n return Number(resultStr);\n };\n\n const item1Name = numberFromItem(item1.name);\n const item2Name = numberFromItem(item2.name);\n\n return item1Name - item2Name;\n }\n },\n published_year: {\n withSearch: false,\n withMoreView: true,\n showMoreTitle: \"More years\",\n title: \"Released\",\n position: 4,\n sortFunction: (item1, item2) => Number(item2.name) - Number(item1.name)\n },\n publisher: {\n withSearch: true,\n withMoreView: true,\n showMoreTitle: \"More publishers\",\n title: \"Publisher\",\n position: 5\n }\n};\n","import { styled } from \"@linaria/react\";\nimport Button from \"components/Button\";\nimport { breakpoints, sizes } from \"common/styles/config\";\nimport ArrowIcon from \"public/icons/new-arrow.svg\";\nexport const FilterWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"FilterWrapper\",\n class: \"FilterWrapper_f1wn3qpx\"\n});\nexport const ShowFilterButton = /*#__PURE__*/styled(Button)({\n name: \"ShowFilterButton\",\n class: \"ShowFilterButton_s18zlskl\"\n});\nexport const MobileFilterWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"MobileFilterWrapper\",\n class: \"MobileFilterWrapper_m13tjiza\"\n});\nexport const FilterPortalWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"FilterPortalWrapper\",\n class: \"FilterPortalWrapper_fgegbfr\"\n});\nexport const FilterOverlay = /*#__PURE__*/styled(\"div\")({\n name: \"FilterOverlay\",\n class: \"FilterOverlay_f5g8h78\",\n vars: {\n \"f5g8h78-0\": [({\n isFilterOpen\n }) => isFilterOpen ? 0 : \"-100%\"]\n }\n});\nexport const MobileFilterWrapperHelper = /*#__PURE__*/styled(\"div\")({\n name: \"MobileFilterWrapperHelper\",\n class: \"MobileFilterWrapperHelper_m131csbo\",\n vars: {\n \"m131csbo-0\": [({\n isFilterOpen\n }) => isFilterOpen ? 0 : \"-375px\"]\n }\n});\nexport const MobileFilterContent = /*#__PURE__*/styled(\"div\")({\n name: \"MobileFilterContent\",\n class: \"MobileFilterContent_m1ks87v\"\n});\nexport const LineSeparator = /*#__PURE__*/styled(\"div\")({\n name: \"LineSeparator\",\n class: \"LineSeparator_lhmwqja\"\n});\nexport const MobileFilterHeader = /*#__PURE__*/styled(\"div\")({\n name: \"MobileFilterHeader\",\n class: \"MobileFilterHeader_m1kbq8t1\"\n});\nexport const ShowMoreMobileContent = /*#__PURE__*/styled(\"div\")({\n name: \"ShowMoreMobileContent\",\n class: \"ShowMoreMobileContent_sxghcun\"\n});\nexport const CrossIcon = /*#__PURE__*/styled(\"i\")({\n name: \"CrossIcon\",\n class: \"CrossIcon_ceconzg\"\n});\nexport const CloseButton = /*#__PURE__*/styled(\"button\")({\n name: \"CloseButton\",\n class: \"CloseButton_cho031q\"\n});\nexport const BackIcon = /*#__PURE__*/styled(\"div\")({\n name: \"BackIcon\",\n class: \"BackIcon_bfbg5ud\"\n});\nexport const BackButton = /*#__PURE__*/styled(\"button\")({\n name: \"BackButton\",\n class: \"BackButton_b5wzjee\"\n});\nexport const FilterTitle = /*#__PURE__*/styled(\"div\")({\n name: \"FilterTitle\",\n class: \"FilterTitle_fpnwm6h\"\n});\nexport const FilterTitleBold = /*#__PURE__*/styled(\"span\")({\n name: \"FilterTitleBold\",\n class: \"FilterTitleBold_f1b29tfz\"\n});\nexport const ButtonBlock = /*#__PURE__*/styled(\"div\")({\n name: \"ButtonBlock\",\n class: \"ButtonBlock_b1m13akt\"\n});\n\nrequire(\"./TextSearchFilter.styled.linaria.module.css!=!../../../node_modules/@linaria/webpack5-loader/lib/outputCssLoader.js!./TextSearchFilter.styled.js\");","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { OUTLINE_SECONDARY, ACCENT, OUTLINE_PRIMARY } from \"common/constants/buttonTypes\";\nimport PropTypes from \"prop-types\";\nimport Button from \"components/Button\";\nimport CheckboxList from \"components/CheckboxList\";\nimport { CHECKBOX_LIST_MODES } from \"components/CheckboxList/constants\";\nimport { filterSectionsConfig } from \"../../constants\";\nimport * as S from \"../../TextSearchFilter.styled\";\nimport { ReactComponent as FilterIcon } from \"public/icons/filter.svg\";\nconst MobileTextSearchFilterComponent = ({\n resultsLength,\n filterState,\n onFilterCategoryChange,\n onClearFilter\n}) => {\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n const [activeCategoryName, setActiveCategoryName] = useState(null);\n const buttonLabel = `Filter (${resultsLength} results total)`;\n const ref = useRef(null);\n const onShowFilter = useCallback(() => {\n setIsFilterOpen(!isFilterOpen);\n setActiveCategoryName(null);\n }, [isFilterOpen]);\n const [isMounted, setIsMounted] = useState(false);\n useEffect(() => {\n if (isMounted) {\n ref.current.scrollTo(0, 0);\n }\n }, [activeCategoryName]);\n const onShowMore = useCallback(({\n id\n }) => {\n setActiveCategoryName(id);\n }, [activeCategoryName]);\n const onBackToFilter = useCallback(() => {\n setActiveCategoryName(null);\n }, []);\n const filterContent = useMemo(() => {\n return Object.keys(filterState).sort((key1, key2) => filterSectionsConfig[key1].position - filterSectionsConfig[key2].position).map(key => {\n let sortedItems = filterState[key];\n if (filterSectionsConfig[key].sortFunction) {\n sortedItems = sortedItems.sort(filterSectionsConfig[key].sortFunction);\n }\n return <div key={key}>\n <CheckboxList items={sortedItems} withMoreView={filterSectionsConfig[key] ? filterSectionsConfig[key].withMoreView : false} showMoreTitle={filterSectionsConfig[key] ? filterSectionsConfig[key].showMoreTitle : \"Show more\"} onChange={data => onFilterCategoryChange(key, data)} title={filterSectionsConfig[key] ? filterSectionsConfig[key].title : key} onShowMore={onShowMore} id={key} />\n <S.LineSeparator />\n </div>;\n });\n }, [filterState]);\n const activeCategoryContent = useMemo(() => {\n return <S.ShowMoreMobileContent>\n <CheckboxList items={filterState[activeCategoryName]} onChange={data => onFilterCategoryChange(activeCategoryName, data)} withSearch={filterSectionsConfig[activeCategoryName] ? filterSectionsConfig[activeCategoryName].withSearch : false} title={filterSectionsConfig[activeCategoryName] ? filterSectionsConfig[activeCategoryName].title : activeCategoryName} id={activeCategoryName} mode={CHECKBOX_LIST_MODES.MORE_VIEW} />\n </S.ShowMoreMobileContent>;\n }, [activeCategoryName]);\n useEffect(() => {\n setIsMounted(true);\n }, []);\n return <S.MobileFilterWrapper>\n <S.ShowFilterButton variant={OUTLINE_PRIMARY} onClick={onShowFilter} label={buttonLabel} icon={FilterIcon} />\n {isMounted && createPortal(<S.FilterPortalWrapper>\n <S.FilterOverlay isFilterOpen={isFilterOpen} />\n <S.MobileFilterWrapperHelper isFilterOpen={isFilterOpen}>\n {activeCategoryName ? <S.MobileFilterHeader>\n <S.BackButton onClick={onBackToFilter}>\n <S.BackIcon /> Back\n </S.BackButton>\n <S.CloseButton onClick={onShowFilter}>\n <S.CrossIcon />\n </S.CloseButton>\n </S.MobileFilterHeader> : <S.MobileFilterHeader>\n <S.CloseButton onClick={onShowFilter}>\n <S.CrossIcon />\n </S.CloseButton>\n <S.FilterTitle>\n <S.FilterTitleBold>Filters</S.FilterTitleBold>{\" \"}\n {resultsLength} results total\n </S.FilterTitle>\n </S.MobileFilterHeader>}\n <S.MobileFilterContent ref={ref}>\n {activeCategoryName ? activeCategoryContent : filterContent}\n </S.MobileFilterContent>\n <S.ButtonBlock>\n <Button onClick={onShowFilter} label=\"OK\" variant={ACCENT} style={{\n borderRadius: \"3px\",\n width: \"50%\"\n }} />\n <Button onClick={onClearFilter} label=\"Clear all filters\" variant={OUTLINE_SECONDARY} style={{\n width: \"50%\"\n }} />\n </S.ButtonBlock>\n </S.MobileFilterWrapperHelper>\n </S.FilterPortalWrapper>, document.body)}\n </S.MobileFilterWrapper>;\n};\nMobileTextSearchFilterComponent.propTypes = {\n resultsLength: PropTypes.number,\n onFilterCategoryChange: PropTypes.func,\n onClearFilter: PropTypes.func,\n filterState: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string,\n isChecked: PropTypes.bool\n })))\n};\nMobileTextSearchFilterComponent.defaultProps = {};\nexport default MobileTextSearchFilterComponent;","import React, { useCallback, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst getFilterComponent = (Component) => {\n const FilterComponent = ({ filterState, onChange, resultsLength }) => {\n const clearFilterState = useMemo(() => {\n const newFilterState = { ...filterState };\n\n Object.keys(newFilterState).forEach((key) => {\n newFilterState[key] = newFilterState[key].map((item) => ({\n ...item,\n isChecked: false\n }));\n });\n }, []);\n\n const onFilterClear = useCallback(() => {\n onChange({ ...clearFilterState });\n }, [onChange]);\n\n const onFilterCategoryChange = (key, data) => {\n onChange({ ...filterState, [key]: data });\n };\n\n if (!filterState) {\n return null;\n }\n\n return (\n <Component\n filterState={filterState}\n resultsLength={resultsLength}\n onClearFilter={onFilterClear}\n onApplyFilter={onChange}\n onFilterCategoryChange={onFilterCategoryChange}\n />\n );\n };\n\n FilterComponent.propTypes = {\n filterState: PropTypes.objectOf(\n PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n isChecked: PropTypes.bool\n })\n )\n ),\n onChange: PropTypes.func.isRequired,\n resultsLength: PropTypes.number\n };\n\n return FilterComponent;\n};\n\ngetFilterComponent.propTypes = {\n Component: PropTypes.node\n};\n\nexport default getFilterComponent;\n","import MobileTextSearchFilterComponent from \"./subcomponents/MobileTextSearchFilterComponent\";\nimport getFilterComponent from \"./getFilterComponent\";\n\nconst MobileTextFilter = getFilterComponent(MobileTextSearchFilterComponent);\n\nexport default MobileTextFilter;\n","import { styled } from \"@linaria/react\";\nexport const PopoverWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"PopoverWrapper\",\n class: \"PopoverWrapper_pieg4xd\",\n vars: {\n \"pieg4xd-0\": [({\n top\n }) => top, \"px\"],\n \"pieg4xd-1\": [({\n left\n }) => left, \"px\"]\n }\n});\nexport const PopoverInnerWrapper = /*#__PURE__*/styled(\"div\")({\n name: \"PopoverInnerWrapper\",\n class: \"PopoverInnerWrapper_p1mm6pzj\"\n});\nexport const CrossIcon = /*#__PURE__*/styled(\"i\")({\n name: \"CrossIcon\",\n class: \"CrossIcon_cci4qyl\"\n});\nexport const CloseButton = /*#__PURE__*/styled(\"button\")({\n name: \"CloseButton\",\n class: \"CloseButton_c6p4m6b\"\n});\n\nrequire(\"./Popover.styled.linaria.module.css!=!../../../node_modules/@linaria/webpack5-loader/lib/outputCssLoader.js!./Popover.styled.js\");","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as S from \"./Popover.styled\";\nconst Popover = ({\n onClose,\n content,\n targetRef,\n offSet,\n withCloseButton\n}) => {\n const [isMounted, setIsMounted] = useState(false);\n const [position, setPosition] = useState({});\n const ref = useRef();\n const handleClickOutside = useCallback(event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClose();\n }\n }, [ref]);\n useEffect(() => {\n if (!isMounted) {\n setPosition({\n top: targetRef.current.offsetTop - offSet.y,\n left: targetRef.current.offsetWidth + offSet.x\n });\n }\n setIsMounted(true);\n }, []);\n useEffect(() => {\n window.addEventListener(\"click\", handleClickOutside);\n return () => window.removeEventListener(\"click\", handleClickOutside);\n }, []);\n if (!isMounted && !targetRef) {\n return null;\n }\n\n //TODO: переделать на портал. Ðужно вешать клаÑÑ Ð½Ð° боди,\n // чтобы делать его relative и Ñтроить вÑе поповеры в портале,\n // а не где-то в разметке и только в одном ÑкземплÑре\n return <S.PopoverWrapper ref={ref} top={position.top} left={position.left}>\n <S.PopoverInnerWrapper>\n {withCloseButton && <S.CloseButton onClick={onClose}>\n <S.CrossIcon />\n </S.CloseButton>}\n {content}\n </S.PopoverInnerWrapper>\n </S.PopoverWrapper>;\n};\nPopover.propTypes = {\n targetRef: PropTypes.object,\n onClose: PropTypes.func.isRequired,\n content: PropTypes.node,\n offSet: PropTypes.object,\n withCloseButton: PropTypes.bool\n};\nPopover.defaultProps = {\n onClose: () => null,\n offSet: 15\n};\nexport default Popover;","import Popover from \"./Popover\";\n\nexport default Popover;\n","import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Popover from \"components/Popover\";\nimport CheckboxList from \"components/CheckboxList\";\nimport { CHECKBOX_LIST_MODES } from \"components/CheckboxList/constants\";\nimport Button from \"components/Button\";\nimport { OUTLINE_SECONDARY } from \"common/constants/buttonTypes\";\nimport { filterSectionsConfig } from \"../../constants\";\nimport * as S from \"../../TextSearchFilter.styled\";\nconst DesktopTextSearchFilterComponent = ({\n filterState,\n onFilterCategoryChange,\n onClearFilter\n}) => {\n const [activeCategoryName, setActiveCategoryName] = useState(null);\n const hideMoreViewContent = useCallback(() => {\n setActiveCategoryName(null);\n }, []);\n const [popoverTargetRef, setPopoverTargetRef] = useState(useRef());\n const onShowMore = useCallback(({\n id,\n ref\n }) => {\n setActiveCategoryName(id);\n setPopoverTargetRef(ref);\n }, [activeCategoryName]);\n const activeCategoryContent = useMemo(() => {\n return <>\n <CheckboxList items={filterState[activeCategoryName]} onChange={data => onFilterCategoryChange(activeCategoryName, data)} withSearch={filterSectionsConfig[activeCategoryName] ? filterSectionsConfig[activeCategoryName].withSearch : false} title={filterSectionsConfig[activeCategoryName] ? filterSectionsConfig[activeCategoryName].title : activeCategoryName} id={activeCategoryName} mode={CHECKBOX_LIST_MODES.MORE_VIEW} />\n </>;\n }, [activeCategoryName]);\n const filterContent = useMemo(() => {\n return Object.keys(filterState).sort((key1, key2) => filterSectionsConfig[key1].position - filterSectionsConfig[key2].position).map(key => {\n let sortedItems = filterState[key];\n if (filterSectionsConfig[key].sortFunction) {\n sortedItems = sortedItems.sort(filterSectionsConfig[key].sortFunction);\n }\n return <div key={key}>\n <CheckboxList id={key} items={sortedItems} withMoreView={filterSectionsConfig[key] ? filterSectionsConfig[key].withMoreView : false} showMoreTitle={filterSectionsConfig[key] ? filterSectionsConfig[key].showMoreTitle : \"Show more\"} onShowMore={onShowMore} onChange={data => onFilterCategoryChange(key, data)} title={filterSectionsConfig[key] ? filterSectionsConfig[key].title : key} />\n </div>;\n });\n }, [filterState, activeCategoryName]);\n if (!filterState) {\n return null;\n }\n return <S.FilterWrapper>\n {filterContent}\n {activeCategoryName && <Popover onClose={hideMoreViewContent} content={activeCategoryContent} targetRef={popoverTargetRef} withCloseButton offSet={{\n x: 35,\n y: 200\n }} />}\n <Button variant={OUTLINE_SECONDARY} label={\"Clear all filters\"} onClick={onClearFilter} />\n </S.FilterWrapper>;\n};\nDesktopTextSearchFilterComponent.propTypes = {\n filterState: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string,\n isChecked: PropTypes.bool\n }))),\n onFilterCategoryChange: PropTypes.func.isRequired,\n onClearFilter: PropTypes.func.isRequired,\n resultsLength: PropTypes.number\n};\nDesktopTextSearchFilterComponent.defaultProps = {\n onChange: () => {},\n onClearFilter: () => {}\n};\nexport default DesktopTextSearchFilterComponent;","import DesktopTextSearchFilterComponent from \"./subcomponents/DesktopTextSearchFilterComponent\";\nimport getFilterComponent from \"./getFilterComponent\";\n\nconst DesktopTextFilter = getFilterComponent(DesktopTextSearchFilterComponent);\n\nexport default DesktopTextFilter;\n","export const SET_SEARCH_TERM = \"SET_SEARCH_TERM\";\nexport const FETCH_SEARCH_QUERY_SUCCESS = \"FETCH_SEARCH_QUERY_SUCCESS\";\nexport const INIT_STATE_BY_PREFETCHED_DATA = \"INIT_STATE_BY_PREFETCHED_DATA\";\n\nexport const SET_ADVANCED_SEARCH_TERMS = \"SET_ADVANCED_SEARCH_TERMS\";\nexport const FETCH_ADVANCED_SEARCH_QUERY_SUCCESS = \"FETCH_ADVANCED_SEARCH_QUERY_SUCCESS\";\n","import http from \"api\";\n\nimport { addErrorNotification } from \"common/notifications\";\n\nimport {\n SET_SEARCH_TERM,\n FETCH_SEARCH_QUERY_SUCCESS,\n INIT_STATE_BY_PREFETCHED_DATA,\n SET_ADVANCED_SEARCH_TERMS,\n FETCH_ADVANCED_SEARCH_QUERY_SUCCESS\n} from \"../reducers/actionTypes\";\nimport { getBooksAdvancedSearchParams, getBooksSearchParams } from \"../utils\";\n\nexport const initStateFromPrefetchedData = async ({\n dispatch,\n filterData,\n booksData,\n searchTerm\n}) => {\n dispatch({\n type: INIT_STATE_BY_PREFETCHED_DATA,\n payload: {\n dispatch,\n filterData,\n booksData,\n searchTerm\n }\n });\n};\n\nexport const searchAdvanced = async ({\n dispatch,\n searchTerms,\n errorHandler,\n page,\n filterParams = {}\n}) => {\n try {\n dispatch({ type: SET_ADVANCED_SEARCH_TERMS, payload: searchTerms });\n\n const response = await http.getBooksBySearch(\n getBooksAdvancedSearchParams(searchTerms, page, filterParams)\n );\n\n dispatch({ type: FETCH_ADVANCED_SEARCH_QUERY_SUCCESS, payload: response });\n } catch (error) {\n errorHandler(error);\n }\n};\n\nexport const fetchSearchQuery = async ({\n dispatch,\n searchTerm,\n errorHandler,\n page,\n filterParams = {}\n}) => {\n try {\n dispatch({ type: SET_SEARCH_TERM, payload: searchTerm });\n\n const response = await http.getBooksBySearch(\n getBooksSearchParams(searchTerm, page, filterParams)\n );\n\n dispatch({ type: FETCH_SEARCH_QUERY_SUCCESS, payload: response });\n\n window.dataLayer.push({\n searchString: searchTerm,\n event: \"search\",\n type: \"request\"\n });\n } catch (error) {\n errorHandler(error);\n }\n};\n\nexport const prefetchSearchData = async ({ searchTerm, type, page, filterParams }) => {\n try {\n const response = await http.getBooksBySearch(\n getBooksSearchParams(searchTerm, page, filterParams)\n );\n\n return {\n props: {\n prefetchedData: {\n booksData: response.data,\n filterData: response.filterData,\n searchTerm,\n type\n },\n meta: response.meta,\n isPrefetched: true\n }\n };\n } catch (error) {\n console.error(error);\n\n addErrorNotification({ msg: error.message });\n }\n\n return { props: { prefetchedData: null, isPrefetched: false } };\n};\n","import {\n SET_SEARCH_TERM,\n FETCH_SEARCH_QUERY_SUCCESS,\n INIT_STATE_BY_PREFETCHED_DATA,\n SET_ADVANCED_SEARCH_TERMS,\n FETCH_ADVANCED_SEARCH_QUERY_SUCCESS\n} from \"./actionTypes\";\n\nexport const initState = {\n isLoading: true,\n searchTerm: \"\",\n meta: {},\n advancedSearchTerms: {},\n booksData: [],\n filterData: null\n};\n\nexport const reducer = (state, { type, payload }) => {\n switch (type) {\n case SET_SEARCH_TERM:\n return { ...state, searchTerm: payload, isLoading: true };\n case SET_ADVANCED_SEARCH_TERMS:\n return { ...state, advancedSearchTerms: payload, isLoading: true };\n\n case INIT_STATE_BY_PREFETCHED_DATA:\n return {\n ...state,\n searchTerm: payload.searchTerm,\n error: {},\n filterData: payload.filterData,\n isLoading: false,\n booksData: [...payload.booksData],\n meta: payload.meta\n };\n\n case FETCH_SEARCH_QUERY_SUCCESS:\n return {\n ...state,\n isLoading: false,\n booksData: [...payload.data],\n meta: payload.meta,\n error: {},\n filterData: payload.filterData\n };\n\n case FETCH_ADVANCED_SEARCH_QUERY_SUCCESS:\n return {\n ...state,\n isLoading: false,\n booksData: [...payload.data],\n meta: payload.meta,\n error: {},\n filterData: payload.filterData\n };\n\n default:\n return { ...state };\n }\n};\n","import React, { useEffect, useReducer, useMemo, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useRouter } from \"next/router\";\nimport Link from \"next/link\";\nimport AdvancedSearchParamControls from \"./subcomponents/AdvancedSearchParamControls\";\nimport Slider from \"components/Slider\";\nimport Pagination from \"components/Pagination\";\nimport { usePagination } from \"components/Pagination/hooks\";\nimport { DesktopTextSearchFilter, MobileTextSearchFilter } from \"components/TextSearchFilter\";\nimport { useErrorResourceContext } from \"contexts/ErrorResource/utils\";\nimport { ADVANCED_SEARCH_PARAMS, BOOK, MAIN } from \"common/constants/pathRoutes\";\nimport { getQueryParamsByTab, renderLoaderContent, decodeSearchTerm } from \"common/utils\";\nimport { PageMainContainer } from \"common/styles\";\nimport { useResourceType } from \"common/hooks\";\nimport ModalTypes from \"common/constants/modalTypes\";\nimport { PAGINATION_MODES } from \"components/Pagination/constants\";\nimport { useModalContext } from \"contexts/Modal\";\nimport { fetchSearchQuery, initStateFromPrefetchedData, searchAdvanced } from \"./actions\";\nimport { reducer, initState } from \"./reducers\";\nimport { getBooksCardList, getBooksSearchQuery, getFilterState, getSearchBasePath, makeFilterParamsFromFilterState, searchTipsCards, getAdvancedSearchTerms, getAdvancedSearchRoutByTerms } from \"./utils\";\nimport * as S from \"./SearchPage.styled\";\nimport { BUY_STATE } from \"common/constants/searchTypes\";\nconst Search = ({\n prefetchedData,\n isPrefetched,\n meta,\n isAdvancedSearch\n}) => {\n const router = useRouter();\n const {\n setPage\n } = usePagination();\n const [state, dispatch] = useReducer(reducer, initState);\n const {\n isLoading\n } = state;\n const booksData = isPrefetched ? prefetchedData.booksData : state.booksData;\n const searchTerm = isPrefetched ? prefetchedData.searchTerm : state.searchTerm;\n const advancedSearchTerms = state.advancedSearchTerms;\n const filterData = isPrefetched ? prefetchedData.filterData : state.filterData;\n const searchMeta = isPrefetched ? meta : state.meta;\n const {\n type\n } = useResourceType();\n const {\n modalAction\n } = useModalContext();\n const {\n addResourceError\n } = useErrorResourceContext();\n const isDataEmpty = useMemo(() => !booksData.length, [booksData]);\n const path = getSearchBasePath(router.query, isAdvancedSearch);\n const handleAdvancedSearchChange = useCallback(({\n type,\n value\n }) => {\n if (advancedSearchTerms[type] === value) {\n return;\n }\n const newTerms = {};\n Object.keys(advancedSearchTerms).forEach(term => {\n if (term === type && value) {\n newTerms[term] = value;\n } else if (term !== type) {\n newTerms[term] = advancedSearchTerms[term];\n }\n });\n const isTermsEmpty = !Object.keys(newTerms).length;\n if (isTermsEmpty) {\n router.push(ADVANCED_SEARCH_PARAMS);\n return;\n }\n const route = getAdvancedSearchRoutByTerms({\n terms: newTerms\n });\n router.push(route, undefined, {\n scroll: false\n });\n }, [advancedSearchTerms]);\n const onChangeFilter = useCallback(newFilterData => {\n const filterParams = makeFilterParamsFromFilterState(newFilterData);\n if (isAdvancedSearch) {\n const searchQuery = getAdvancedSearchRoutByTerms({\n terms: advancedSearchTerms,\n filterParams,\n type\n });\n router.push(searchQuery, undefined, {\n scroll: false\n });\n } else {\n const searchTerm = router.query?.query ? decodeSearchTerm(router.query.query) : \"\";\n const searchQuery = getBooksSearchQuery({\n searchTerm,\n page: 1,\n filterParams,\n type\n });\n router.push(searchQuery, undefined, {\n scroll: false\n });\n }\n }, [searchTerm, advancedSearchTerms, type]);\n const filterState = useMemo(() => getFilterState(filterData, router.query), [filterData, router.query]);\n useEffect(() => {\n if (!isPrefetched) {\n if (isAdvancedSearch) {\n const {\n searchTerms,\n filterParams\n } = getAdvancedSearchTerms(router.query);\n const {\n page = 1\n } = router.query;\n searchAdvanced({\n dispatch,\n searchTerms,\n errorHandler: addResourceError,\n page,\n filterParams\n });\n } else {\n const searchTerm = router.query?.query ? decodeSearchTerm(router.query.query) : \"\";\n const {\n page = 1,\n type,\n query,\n itemsPerPage,\n ...rest\n } = router.query;\n fetchSearchQuery({\n dispatch,\n searchTerm,\n errorHandler: addResourceError,\n page,\n filterParams: rest\n });\n }\n } else {\n initStateFromPrefetchedData({\n dispatch,\n filterData,\n booksData,\n searchTerm,\n meta\n });\n }\n }, [router.asPath]);\n const handleContactModal = useCallback(() => {\n modalAction({\n type: ModalTypes.CONTACT,\n title: \"Contact us\"\n });\n }, []);\n if (booksData.length === 1 && !filterData) {\n if (isAdvancedSearch) {\n router.push(`${BOOK}/${booksData[0].isbn13}-${booksData[0].slug}${getQueryParamsByTab(BUY_STATE)}`);\n } else {\n router.push(`${BOOK}/${booksData[0].isbn13}-${booksData[0].slug}${getQueryParamsByTab(type)}`);\n }\n return <S.LoaderWrapperHelper>{renderLoaderContent()}</S.LoaderWrapperHelper>;\n }\n const noResultsContent = <S.NoResultsWrapper withBackground>\n <S.SearchStatus>No Matches...</S.SearchStatus>\n <S.SearchText>\n {\"Unfortunately, there weren't any matches for your search. \" + \"Please check your title or use the ISBN for the book.\"}\n </S.SearchText>\n <S.SearchTips>Tips to help you find the book on BookScouter</S.SearchTips>\n <S.SliderWrapper>\n <Slider renderArrowPrev={() => null} renderArrowNext={() => null}>\n {searchTipsCards}\n </Slider>\n </S.SliderWrapper>\n <S.CardsContainer data-test-id=\"SearchPage-NoMatch-CardsContainer\">\n {searchTipsCards}\n </S.CardsContainer>\n <S.SearchActions>\n <Link href={MAIN} passHref>\n <S.SearchBackLink>Back to homepage</S.SearchBackLink>\n </Link>\n <S.ContactButton onClick={handleContactModal}>Contact us</S.ContactButton>\n </S.SearchActions>\n </S.NoResultsWrapper>;\n const filterNoDataContent = <S.NoResultsWrapper>\n <S.FilterNoDataContent>\n No Matches...\n <br />\n Unfortunately, there weren't any matches for your search. Please check if any\n advanced filters are enabled.\n </S.FilterNoDataContent>\n </S.NoResultsWrapper>;\n return <PageMainContainer style={{\n position: \"relative\",\n zIndex: 2\n }}>\n {isAdvancedSearch && <AdvancedSearchParamControls filters={advancedSearchTerms} handleChange={handleAdvancedSearchChange} />}\n {!isAdvancedSearch && filterData && <S.SearchTitleWrapper>\n <S.SearchTitle>{`Search results for \"${searchTerm}\"`}</S.SearchTitle>\n </S.SearchTitleWrapper>}\n <S.SearchContainer withBackground={filterData}>\n <S.SearchWrapper>\n <S.SearchFilterContentWrapper>\n {filterData && <>\n <DesktopTextSearchFilter filterState={filterState} onChange={onChangeFilter} resultsLength={searchMeta?.count} />\n <MobileTextSearchFilter filterState={filterState} onChange={onChangeFilter} resultsLength={searchMeta?.count} />\n </>}\n <S.SearchCardsContent wide={!filterData} isLoading={isLoading}>\n {isDataEmpty && !isLoading // no results case\n ? filterData // noResults view type\n ? filterNoDataContent : noResultsContent : isLoading // standard case - load or display data\n ? renderLoaderContent({\n showBackground: false\n }) : getBooksCardList(booksData, searchTerm, type)}\n </S.SearchCardsContent>\n </S.SearchFilterContentWrapper>\n {!isLoading && <Pagination data={booksData} meta={searchMeta} setPage={setPage} showPageSizeFilter={false} showPagesContent={false} mode={PAGINATION_MODES.WITH_PAGE_BUTTONS} basePath={path} usePaginationOnly={false} pageRouteProps={{\n shallow: false\n }} />}\n </S.SearchWrapper>\n </S.SearchContainer>\n </PageMainContainer>;\n};\nSearch.propTypes = {\n location: PropTypes.object,\n prefetchedData: PropTypes.object,\n isPrefetched: PropTypes.bool,\n isAdvancedSearch: PropTypes.bool,\n meta: PropTypes.shape({\n page: PropTypes.number.isRequired,\n pages: PropTypes.number\n })\n};\nSearch.defaultProps = {\n location: {},\n prefetchedData: null,\n isPrefetched: false,\n meta: {},\n isAdvancedSearch: false\n};\nexport default Search;","import Search from \"./SearchPage\";\n\nexport default Search;\n"],"names":["BookAssetWrapper","styled","name","class","require","BookAsset","book","WrapperComponent","wrapper","imageProps","showPreview","objectFit","useState","IMAGE_BLUR_PLACEHOLDER","imageSrc","setImageSrc","handleOnError","useCallback","BOOK_UNAVAILABLE_IMG","useEffect","previewImg","img","src","alt","title","blurDataURL","placeholder","layout","priority","onError","defaultProps","S","memo","usePagination","pageSize","router","useRouter","pageFromUrl","getPage","query","page","pageSizeFromUrl","getPageSize","DEFAULT_PAGE","pageValue","setPage","DEFAULT_PAGE_SIZE","pageSizeValue","setPageSize","Pagination","ButtonsWrapper","PageContainer","PreviousIcon","NextIcon","CellButton","vars","isCompact","isActive","Ellipsis","PaginationActions","PageSizeWrapper","PageViewingBottomWOPages","ResultsText","PaginationPageSizeActions","NumberedButtons","meta","handleSetPage","pages","Array","map","el","index","onClick","key","buttons","data","basePath","defaultPage","mode","showPageSizeFilter","isLoading","onPrevPageClick","onNextPageClick","scrollTargetPosY","pageRouteProps","parsedPageSize","getPaginationConfig","prevButtonProps","nextButtonProps","currentPageContainer","PAGINATION_MODES","navigateToPage","targetPosY","before","handlePrevPageClick","isPresentValue","handleNextPageClick","after","setPageSizeHandler","value","push","undefined","shallow","length","withNextPage","disabled","getDisabled","withPreviousPage","totalPages","PAGINATION_OPTIONS","pageTotal","Button","variant","ACCENT_TEXT","label","showPagesContent","hasQuery","match","scrollTo","defaultQueryParams","queryParams","navigateParam","parsedValue","parseInt","includes","SearchContainer","withBackground","LoaderWrapperHelper","SearchTitleWrapper","ContentWrapper","SearchWrapper","SearchTitle","ParamsWrapper","ControlsWrapper","ParamControlWrapper","SearchParamControlContainer","EditButton","StyledInput","Input","CloseButton","ParamControlCloseButton","SearchStatus","SearchText","SearchFilterContentWrapper","SearchTips","SearchCardsContent","wide","SearchActions","SearchBackLink","ContactButton","SliderWrapper","NoResultsWrapper","CardsContainer","FilterNoDataContent","_path","_path2","_extends","Object","assign","bind","target","i","arguments","source","prototype","hasOwnProperty","call","apply","this","SvgEdit","props","width","height","fill","xmlns","fillRule","clipRule","d","Tippy","dynamic","ssr","SearchParamControl","type","isEditable","onChange","isEditorOpen","setIsEditorOpen","currentValue","setCurrentValue","editableValue","setEditableValue","handleDelete","onEnterPress","event","interactive","content","currentTarget","styles","paddingTop","minHeight","inputStyles","borderBottom","fontSize","background","padding","minWidth","onKeyPress","placement","visible","onClickOutside","OffersPricesWrapper","Offers","FromWrapper","isVisible","FromPrice","BookWrapperLink","BookContainer","SeePricesButton","BottomWrapper","BookContainerInner","BookImgContent","BookContent","BookContentWrapper","BookTitle","BookDetails","BookDetailContent","BookLabel","BookText","BookCodesContent","SearchCard","searchTerm","isbn","isbn13","isbn10","formattedTitle","str","fullText","toLowerCase","targetText","trim","queryStart","indexOf","queryEnd","strStart","slice","highlightText","strEnd","getHighlightText","link","BOOK","slug","BUY_STATE","href","prefetch","passHref","loading","objectPosition","dangerouslySetInnerHTML","__html","author","edition","released","format","Date","publisher","binding","countOfBuyOffers","minBuyPrice","ACCENT","style","borderRadius","Container","Title","Content","SearchTipsCard","ADVANCED_SEARCH_TERMS_MAP","term","SEARCH_CONTROLS_CONFIG","displayedName","paramName","getBooksAdvancedSearchParams","searchTerms","filterParams","params","itemsPerPage","getBooksSearchParams","getAdvancedSearchRoutByTerms","terms","keys","encodeURIComponent","join","getQueryStringByParams","PATH","isArray","param","searchTipsCards","AdvancedSearchParamControls","filters","handleChange","filterSectionsConfig","withSearch","withMoreView","showMoreTitle","position","authors","sortFunction","item1","item2","numberFromItem","nameArr","split","resultStr","some","symbol","isNaN","Number","published_year","FilterWrapper","ShowFilterButton","MobileFilterWrapper","FilterPortalWrapper","FilterOverlay","isFilterOpen","MobileFilterWrapperHelper","MobileFilterContent","LineSeparator","MobileFilterHeader","ShowMoreMobileContent","CrossIcon","BackIcon","BackButton","FilterTitle","FilterTitleBold","ButtonBlock","SvgFilter","MobileTextSearchFilterComponent","resultsLength","filterState","onFilterCategoryChange","onClearFilter","setIsFilterOpen","activeCategoryName","setActiveCategoryName","buttonLabel","ref","useRef","onShowFilter","isMounted","setIsMounted","current","onShowMore","id","onBackToFilter","filterContent","useMemo","sort","key1","key2","sortedItems","CheckboxList","items","activeCategoryContent","CHECKBOX_LIST_MODES","OUTLINE_PRIMARY","icon","FilterIcon","createPortal","OUTLINE_SECONDARY","document","body","Component","clearFilterState","newFilterState","forEach","item","isChecked","onFilterClear","onApplyFilter","getFilterComponent","PopoverWrapper","top","left","PopoverInnerWrapper","Popover","onClose","targetRef","offSet","withCloseButton","setPosition","handleClickOutside","contains","offsetTop","y","offsetWidth","x","window","addEventListener","removeEventListener","DesktopTextSearchFilterComponent","hideMoreViewContent","popoverTargetRef","setPopoverTargetRef","SET_SEARCH_TERM","FETCH_SEARCH_QUERY_SUCCESS","INIT_STATE_BY_PREFETCHED_DATA","SET_ADVANCED_SEARCH_TERMS","FETCH_ADVANCED_SEARCH_QUERY_SUCCESS","initStateFromPrefetchedData","dispatch","filterData","booksData","payload","searchAdvanced","errorHandler","http","response","fetchSearchQuery","dataLayer","searchString","initState","advancedSearchTerms","reducer","state","error","Search","prefetchedData","isPrefetched","isAdvancedSearch","useReducer","searchMeta","useResourceType","modalAction","useModalContext","addResourceError","useErrorResourceContext","isDataEmpty","path","filteredQuery","substring","getSearchBasePath","handleAdvancedSearchChange","newTerms","ADVANCED_SEARCH_PARAMS","route","scroll","onChangeFilter","newFilterData","makeFilterParamsFromFilterState","searchQuery","getBooksSearchQuery","decodeSearchTerm","find","getFilterState","prop","getAdvancedSearchTerms","rest","asPath","handleContactModal","ModalTypes","getQueryParamsByTab","renderLoaderContent","noResultsContent","Slider","renderArrowPrev","renderArrowNext","MAIN","filterNoDataContent","zIndex","DesktopTextSearchFilter","count","MobileTextSearchFilter","showBackground","getBooksCardList","usePaginationOnly","location"],"sourceRoot":""}