{"version":3,"file":"magazine_search.js","sources":["../../../../../src/components/Magazine/MagazineResult.jsx","../../../../../src/services/masonry.service.js","../../../../../src/components/Magazine/MagazineSearch.jsx","../../../../../src/components/Magazine/MagazineFilter.jsx","../../../../../src/magazine_search.js"],"sourcesContent":["import {getTranslations} from \"../../services/language.service.js\";\nimport {useState} from \"react\";\nimport {Modal} from \"../Modal.jsx\";\n\nconst LANG = getTranslations()\nexport const MagazineResult = (props) => {\n const [showModal,setShowModal] = useState(false)\n let download = false;\n\n const onClick = (e) => {\n if (showModal) {\n return\n }\n e.preventDefault()\n setShowModal(true)\n }\n\n if (props.result.magazineType === 'completeEdition' || props.result.magazineType === 'longArticle') {\n download = props.result.filename;\n }\n return
\n\n \n\n {props.result.image !== '' &&\n
\n {props.result.title}/\n
\n }\n
\n
\n {props.result.tags.map(tag =>\n {tag}\n )}\n
\n\n
\n {props.result.publishedAt}\n | {props.result.category}\n
\n
\n {props.result.title}\n
\n\n
\n\n
\n
\n\n
\n {(props.result.magazineType === 'completeEdition' || props.result.magazineType === 'longArticle') &&\n PDF\n Download}\n {props.result.magazineType === 'singleArticle' &&\n {LANG.readArticle}}\n\n
\n {props.result.readingTime !== '' ?\n : ''}\n
\n
\n
\n {(showModal) &&\n \n }\n
\n
\n}\n","export const calculatePosition = (items) => {\n let lowestDivPosition = 0;\n let highestDivPosition = 0;\n let lowestDivCol = 0;\n let highestDivCol = 0;\n let lowestDivHeight = 0;\n let highestDivHeight = 0;\n let cols = 0;\n let highestElement;\n let lowestElement;\n let sortedItems = items;\n document.querySelectorAll(\".masonry > div > div > div:last-child\").forEach((element, index) => {\n cols = index + 1;\n if (element.getBoundingClientRect().bottom > lowestDivPosition) {\n lowestDivPosition = element.getBoundingClientRect().bottom;\n lowestDivHeight = element.offsetHeight;\n lowestDivCol = index + 1;\n lowestElement = element;\n }\n if (element.getBoundingClientRect().bottom < highestDivPosition || highestDivPosition === 0) {\n highestDivPosition = element.getBoundingClientRect().bottom;\n highestDivHeight = element.offsetHeight;\n highestDivCol = index + 1;\n highestElement = element;\n }\n })\n if (highestDivPosition < lowestDivPosition - lowestDivHeight) {\n let indexFrom = findLastIndexInColumn(items.length,cols, lowestDivCol);\n let indexTo = findLastIndexInColumn(items.length,cols, highestDivCol);\n if (lowestDivHeight < highestDivHeight) {\n if (lowestElement.previousSibling.offsetHeight > highestDivHeight) {\n indexFrom = indexFrom - cols;\n } else {\n indexTo = indexTo - cols;\n }\n }\n sortedItems = array_move(items, indexFrom,indexTo)\n if (indexFrom > indexTo) {\n sortedItems = array_move(items,indexTo + 1, indexFrom);\n }\n }\n return sortedItems;\n\n}\n\nconst findLastIndexInColumn = (length, numColumns, column) => {\n if (column > numColumns) {\n throw new Error(\"Column index is out of bounds.\");\n }\n\n // Initialize variables to track the index and count of elements per column\n let lastIndex = -1;\n\n // Iterate through the array and track indices in the specified column\n for (let i = 0; i < length; i++) {\n // Determine the current column based on the index\n let currentColumn = i % numColumns + 1;\n\n // If the current column matches the specified column, update lastIndex\n if (currentColumn === column) {\n lastIndex = i;\n }\n }\n\n return lastIndex;\n}\n\nconst array_move = (arr, old_index, new_index) => {\n if (new_index >= arr.length) {\n var k = new_index - arr.length + 1;\n while (k--) {\n arr.push(undefined);\n }\n }\n arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);\n return arr; // for testing\n};","import {useCallback, useEffect, useRef, useState} from \"react\"\nimport Masonry, {ResponsiveMasonry} from \"react-responsive-masonry\"\nimport {loadSolrResults} from \"../../services/solr.service.js\"\nimport {MagazineResult} from \"./MagazineResult.jsx\"\nimport {calculatePosition} from \"../../services/masonry.service.js\";\nimport {getTranslations} from \"../../services/language.service.js\";\n\nexport const MagazineSearch = () => {\n const [search, setSearch] = useState('')\n const [filter, setFilter] = useState({})\n const [items, setItems] = useState([])\n const [isLoading, setIsLoading] = useState(true);\n const [hasMore, setHasMore] = useState(true);\n const [currentPage, setCurrentPage] = useState(1);\n const container = useRef(null);\n const LANG = getTranslations()\n\n const mapResults = {\n tags: (element) => {\n const tags = []\n\n for (const e of element.children) {\n tags.push(e.textContent)\n }\n\n return tags\n },\n magazineType: 'string',\n url: 'string',\n filename: 'string',\n title: 'string',\n teaser: 'string',\n content: 'string',\n image: 'string',\n score: 'number',\n readingTime: 'string',\n publishedAt: 'string',\n category: 'string',\n locked: 'boolean',\n stickyNews: 'boolean',\n userRoles: (element) => {\n const userRoles = []\n\n if (element === undefined) {\n return userRoles\n }\n\n for (const e of element.children) {\n userRoles.push(e.textContent)\n }\n\n return userRoles\n },\n loginUrl: 'string'\n }\n\n useEffect(() => {\n document.addEventListener('filter', (e) => {\n setFilter(e.detail)\n setCurrentPage(1);\n setItems([])\n setHasMore(true)\n })\n\n document.addEventListener('search', (e) => {\n setSearch(e.detail)\n setCurrentPage(1);\n setItems([])\n setHasMore(true)\n })\n\n document.addEventListener('reset', () => {\n setSearch('')\n setCurrentPage(1);\n setItems([])\n setHasMore(true)\n loadResponse()\n })\n },[])\n\n useEffect(() => {\n setIsLoading(true);\n loadResponse()\n }, [search, filter]);\n\n useEffect(() => {\n setIsLoading(true);\n }, []);\n\n const loadNextItems = useCallback(async () => {\n\n if (isLoading) return;\n\n setIsLoading(true);\n loadResponse()\n }, [currentPage,isLoading]);\n\n useEffect(() => {\n const handleScroll = () => {\n const { clientHeight } =\n document.documentElement;\n const { top,height } =\n container.current.getBoundingClientRect();\n if (top + height - clientHeight < 400) {\n void loadNextItems();\n\n }\n };\n if (hasMore) {\n window.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }, [loadNextItems]);\n\n const loadResponse = () => {\n if (!hasMore) {\n return\n }\n const solrParams = {\n q: search === '' ? '*' : search.replace('*', ''),\n page: currentPage\n }\n\n const filters = {\n ...filter,\n type: '20'\n }\n\n\n loadSolrResults(solrParams, filters, mapResults).then((response) => {\n setItems((prevItems) => [...prevItems, ...response.results]);\n setCurrentPage((prevIndex) => prevIndex + 1);\n if (!response.hasMore) {\n setHasMore(false)\n }\n document.dispatchEvent(new CustomEvent('facets', {\n detail: response.facets\n }))\n setIsLoading(false)\n })\n }\n\n useEffect(() => {\n if (!isLoading && items.length > 4) {\n setItems(() => [...calculatePosition(items)]);\n\n }\n },[isLoading])\n\n return (\n
\n {(items.length < 1 && !isLoading) &&

{LANG.noResults}

}\n {isLoading && }\n \n \n {items && items.map(result => )}\n \n \n
\n\n )\n\n\n}\n","import {SolrSearchInput} from \"../SolrSearchInput.jsx\";\nimport {useEffect, useRef, useState} from \"react\";\nimport {futureDate, getDateStringFromInput, isValidDate, pastDate} from \"../../services/date.service.js\";\nimport {getShowMoreText, getURLParams, setURLParams} from \"../../services/filter.service.js\";\nimport {getTranslations} from \"../../services/language.service.js\";\n\nconst INITIAL_FILTER = {\n magazines: undefined,\n magazineType: undefined,\n tags: undefined,\n creationDateRange: undefined,\n startDate: undefined,\n endDate: undefined,\n search: undefined\n}\n\nexport const MagazineFilter = () => {\n const [filter, setFilter] = useState(Object.assign({}, INITIAL_FILTER, getURLParams()))\n const [facets, setFacets] = useState(undefined)\n const fromInput = useRef()\n const toInput = useRef()\n const [showMoreTags, setShowMoreTags] = useState(false)\n const [showAllTags, setShowAllTags] = useState(false)\n const LANG = getTranslations()\n const [showMobileFilters, setShowMobileFilters] = useState(false)\n\n\n useEffect(() => {\n document.addEventListener('facets', (e) => {\n setFacets(e.detail)\n })\n document.addEventListener('facets', () => {\n setFilter(Object.assign({}, INITIAL_FILTER, getURLParams()))\n if (filter.startDate !== undefined) {\n fromInput.current.value = filter.startDate;\n }\n if (filter.endDate !== undefined) {\n toInput.current.value = filter.endDate;\n }\n setTimeout(() => {\n if (filter.search !== undefined) {\n onSearch(filter.search)\n }\n },300)\n },{once:true})\n },[])\n\n\n useEffect(() => {\n setURLParams(filter)\n document.dispatchEvent(new CustomEvent('filter', {\n detail: filter\n }))\n }, [filter])\n\n const isFilter = (name, value) => {\n return filter[name] === value\n }\n\n const toggleFilter = (name, value) => {\n setFilter((current) => {\n return {\n ...current,\n [name]: filter[name] === value ? undefined : value\n }\n })\n }\n\n const setDate = () => {\n let startDate = undefined;\n let endDate = undefined;\n if (isValidDate(fromInput.current.value)) {\n startDate = fromInput.current.value;\n }\n if (isValidDate(toInput.current.value)) {\n endDate = toInput.current.value;\n }\n\n setFilter((current) => {\n return {\n ...current,\n startDate: startDate,\n endDate: endDate,\n }\n })\n if (isValidDate(fromInput.current.value) || isValidDate(toInput.current.value)) {\n const from = isValidDate(fromInput.current.value) ? getDateStringFromInput(fromInput.current.value) : pastDate\n const to = isValidDate(toInput.current.value) ? getDateStringFromInput(toInput.current.value, '2359') : futureDate\n console.log(\"set date 2\")\n\n setFilter((current) => {\n return {\n ...current,\n creationDateRange: `${from}-${to}`\n }\n })\n } else if (filter.creationDateRange !== undefined) {\n setFilter((current) => {\n return {\n ...current,\n creationDateRange: undefined\n }\n })\n }\n }\n\n const onSearch = (search) => {\n filter.search = search;\n setURLParams(filter)\n document.dispatchEvent(new CustomEvent('search', {\n detail: search\n }))\n }\n\n const onReset = () => {\n document.dispatchEvent(new CustomEvent('reset'))\n\n fromInput.current.value = ''\n toInput.current.value = ''\n\n setFilter(INITIAL_FILTER)\n setURLParams(filter)\n\n }\n\n const onShowMore = () => {\n if (!showMoreTags) {\n setShowMoreTags(true)\n if (facets && facets.find(f => f.name === 'tags').options.length <= 30) {\n setShowAllTags(true)\n }\n return\n }\n if (!showAllTags) {\n setShowAllTags(true)\n return\n }\n setShowAllTags(false)\n setShowMoreTags(false)\n }\n\n\n\n return
\n \n
\n
\n
\n
{LANG.magazines}
\n
\n {facets && facets.find(f => f.name === 'magazines').options.map(option =>\n
\n toggleFilter('magazines', option.value)}>{option.label}\n
\n )}\n
\n\n
\n
\n
\n
\n
{LANG.type}
\n
\n {facets && facets.find(f => f.name === 'magazineType').options\n .sort((a, b) => a.value === 'completeedition' ? -1 : b.value === 'completeedition' ? 1 : 0)\n .map(option =>\n
\n toggleFilter('magazineType', option.value)}>{option.label}\n
\n )}\n
\n
\n
\n
\n
{LANG.freeSearch}
\n onSearch(e)} searchvalue={filter.search}>\n
\n
\n
\n\n
\n\n
\n
\n
{LANG.tags}
\n
\n {facets && facets.find(f => f.name === 'tags').options.map((option,index) => {\n if (showAllTags || isFilter('tags', option.value) || index < 15 || index < 30 && showMoreTags)\n return
\n \n
\n }\n )}\n
\n {(facets && facets.find(f => f.name === 'tags').options.length > 15) &&\n }\n
\n
\n
{LANG.date}
\n
\n
\n setDate()}/>\n
\n
\n setDate()}/>\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n
\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport {MagazineSearch} from \"./components/Magazine/MagazineSearch.jsx\";\nimport {MagazineFilter} from \"./components/Magazine/MagazineFilter.jsx\";\n\nconst initFilter = () => {\n const element = document.querySelector('.solr-magazine-filter')\n\n if (element === null) {\n return\n }\n\n const root = ReactDOM.createRoot(element)\n root.render(\n React.createElement(React.StrictMode, null,\n React.createElement(MagazineFilter)\n )\n )\n}\n\nconst initResults = () => {\n const element = document.querySelector('.solr-magazine-results')\n\n if (element === null) {\n return\n }\n\n const root = ReactDOM.createRoot(element)\n root.render(\n React.createElement(React.StrictMode, null,\n React.createElement(MagazineSearch)\n )\n )\n}\n\nwindow.onload = () => {\n initFilter()\n initResults()\n}"],"names":["LANG","getTranslations","MagazineResult","props","showModal","setShowModal","useState","download","onClick","e","jsxs","jsx","tag","Modal","calculatePosition","items","lowestDivPosition","highestDivPosition","lowestDivCol","highestDivCol","lowestDivHeight","highestDivHeight","cols","lowestElement","sortedItems","element","index","indexFrom","findLastIndexInColumn","indexTo","array_move","length","numColumns","column","lastIndex","i","arr","old_index","new_index","k","MagazineSearch","search","setSearch","filter","setFilter","setItems","isLoading","setIsLoading","hasMore","setHasMore","currentPage","setCurrentPage","container","useRef","mapResults","tags","userRoles","useEffect","loadResponse","loadNextItems","useCallback","handleScroll","clientHeight","top","height","solrParams","filters","loadSolrResults","response","prevItems","prevIndex","ResponsiveMasonry","Masonry","result","INITIAL_FILTER","MagazineFilter","getURLParams","facets","setFacets","fromInput","toInput","showMoreTags","setShowMoreTags","showAllTags","setShowAllTags","showMobileFilters","setShowMobileFilters","onSearch","setURLParams","isFilter","name","value","toggleFilter","current","setDate","startDate","endDate","isValidDate","from","getDateStringFromInput","pastDate","to","futureDate","onReset","onShowMore","f","option","a","b","SolrSearchInput","getShowMoreText","_","initFilter","ReactDOM","React","initResults"],"mappings":"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"}