mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
1 line
20 KiB
Plaintext
1 line
20 KiB
Plaintext
{"version":3,"file":"static/js/558.0464ebe3.chunk.js","mappings":"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","sources":["../node_modules/lucide-react/src/icons/arrow-right.ts","components/home/GallerySection.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('ArrowRight', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n]);\n\nexport default ArrowRight;\n","import React, { useEffect, useState } from 'react';\nimport { API_URL } from '../../services/api';\nimport { getZoneramaManifestWithFallbacks } from '../../services/zonerama';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Box,\n Heading,\n SimpleGrid,\n Image,\n Text,\n VStack,\n HStack,\n Button,\n Skeleton,\n Badge,\n useColorModeValue,\n} from '@chakra-ui/react';\nimport { Calendar, Image as ImageIcon, ExternalLink, ArrowRight } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\ninterface Album {\n id: string;\n title: string;\n url: string;\n date: string;\n photos_count: number;\n views_count?: number;\n photos: Array<{\n id: string;\n page_url: string;\n image_1500: string;\n }>;\n}\n\nconst resolveBackendUrl = (path: string) => {\n try {\n if (/^https?:\\/\\//i.test(path)) return path;\n if (path.startsWith('/cache') || path.startsWith('/uploads') || path.startsWith('/api/')) {\n // Prefer explicit asset base (backend origin) when provided; fallback to API_URL origin\n let origin = '';\n try {\n const assetBase = (process.env.REACT_APP_ASSET_BASE_URL || '').trim();\n if (assetBase) {\n origin = new URL(assetBase, typeof window !== 'undefined' ? window.location.origin : 'http://localhost:3000').origin;\n }\n } catch {}\n if (!origin) {\n try {\n origin = new URL(API_URL, typeof window !== 'undefined' ? window.location.origin : 'http://localhost:3000').origin;\n } catch {}\n }\n const abs = new URL(path, origin || (typeof window !== 'undefined' ? window.location.origin : 'http://localhost:3000'));\n return abs.toString();\n }\n return path;\n } catch {\n return path;\n }\n};\n\nconst GallerySection: React.FC<{ zoneramaUrl?: string | null }> = ({ zoneramaUrl }) => {\n const { t } = useTranslation();\n const [albums, setAlbums] = useState<Album[]>([]);\n const [loading, setLoading] = useState(true);\n const [profileUrl, setProfileUrl] = useState<string | null>(null);\n \n // Dark mode colors\n const cardBg = useColorModeValue('white', 'gray.800');\n const headingColor = useColorModeValue('gray.800', 'gray.100');\n const textColor = useColorModeValue('gray.600', 'gray.300');\n const infoBg = useColorModeValue('blue.50', 'blue.900');\n const infoBorder = useColorModeValue('blue.200', 'blue.700');\n const infoText = useColorModeValue('blue.700', 'blue.200');\n\n useEffect(() => {\n const fetchAlbums = async () => {\n setLoading(true);\n \n try {\n // Load from both sources and combine\n const [profileRes, albumsRes] = await Promise.allSettled([\n fetch(resolveBackendUrl('/cache/prefetch/zonerama_profile.json'), { cache: 'no-cache' }),\n fetch(resolveBackendUrl('/cache/prefetch/zonerama_albums.json'), { cache: 'no-cache' })\n ]);\n \n let combinedAlbums: Album[] = [];\n \n // Get profile albums (newest/main source)\n if (profileRes.status === 'fulfilled' && profileRes.value.ok) {\n const profileData = await profileRes.value.json();\n if (profileData && profileData.input_link) {\n setProfileUrl(profileData.input_link);\n }\n combinedAlbums = [...(profileData.albums || [])];\n }\n \n // Get blog-related albums (additional source)\n if (albumsRes.status === 'fulfilled' && albumsRes.value.ok) {\n const albumsData = await albumsRes.value.json();\n const blogAlbums = Array.isArray(albumsData) ? albumsData : [];\n \n // Filter out albums with empty/invalid data and avoid duplicates\n const validBlogAlbums = blogAlbums.filter((album: any) => \n album.id && \n album.title && \n !combinedAlbums.some(existing => existing.id === album.id)\n );\n \n combinedAlbums = [...combinedAlbums, ...validBlogAlbums];\n }\n\n // Fallback: synthesize albums from manifest/picks when both sources are empty or invalid\n if ((!combinedAlbums || combinedAlbums.length === 0)) {\n try {\n const items = await getZoneramaManifestWithFallbacks();\n if (Array.isArray(items) && items.length > 0) {\n const byAlbum: Record<string, typeof items> = {} as any;\n items.forEach((it) => {\n const aid = String(it.album_id || 'unknown');\n (byAlbum[aid] = byAlbum[aid] || []).push(it);\n });\n const synthesized: Album[] = Object.entries(byAlbum).map(([aid, arr]) => ({\n id: aid,\n title: 'Album',\n url: (arr[0] as any).page_url || '#',\n date: '',\n photos_count: arr.length,\n photos: arr.slice(0, 12).map((p: any) => ({ id: String(p.id || ''), page_url: String(p.page_url || ''), image_1500: String(p.src || p.local || '') })),\n }));\n combinedAlbums = synthesized;\n }\n } catch {}\n }\n \n // Sort by date (newest first)\n combinedAlbums.sort((a, b) => {\n const parseDate = (dateStr: string) => {\n if (!dateStr) return new Date(0);\n const parts = dateStr.split(/[.\\s]+/).filter(Boolean);\n if (parts.length === 3) {\n const [day, month, year] = parts;\n return new Date(`${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`);\n }\n return new Date(dateStr);\n };\n \n return parseDate(b.date).getTime() - parseDate(a.date).getTime();\n });\n \n // Get the 3 most recent albums\n const recentAlbums = combinedAlbums.slice(0, 3);\n setAlbums(recentAlbums);\n } catch (err) {\n console.error('Error loading albums:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchAlbums();\n }, []);\n\n if (loading) {\n return (\n <Box py={12}>\n <VStack spacing={6} align=\"stretch\">\n <Heading size=\"xl\">Galerie</Heading>\n <SimpleGrid columns={{ base: 1, md: 2, lg: 3 }} spacing={6}>\n {[1, 2, 3].map((i) => (\n <Skeleton key={i} height=\"300px\" borderRadius=\"lg\" />\n ))}\n </SimpleGrid>\n </VStack>\n </Box>\n );\n }\n\n if (albums.length === 0) {\n return null;\n }\n\n return (\n <Box py={12}>\n <VStack spacing={6} align=\"stretch\">\n {/* Header */}\n <HStack justify=\"space-between\" align=\"center\" flexWrap=\"wrap\">\n <VStack align=\"start\" spacing={1}>\n <Heading size=\"xl\" color={headingColor} id=\"home-gallery-heading\">\n {t('homepage.gallery')}\n </Heading>\n <Text color={textColor} fontSize=\"sm\">\n {t('gallery.latest_albums')}\n </Text>\n </VStack>\n \n <Button\n as={RouterLink}\n to=\"/galerie\"\n rightIcon={<ArrowRight size={18} />}\n colorScheme=\"blue\"\n variant=\"outline\"\n size=\"md\"\n >\n {t('nav.view_all')}\n </Button>\n </HStack>\n\n {/* Zonerama Attribution (single source of truth) */}\n <Box\n bg={infoBg}\n borderWidth=\"1px\"\n borderColor={infoBorder}\n borderRadius=\"md\"\n px={4}\n py={2}\n >\n <Text fontSize=\"xs\" color={infoText}>\n © Fotografie z{' '}\n <Text\n as=\"a\"\n href={zoneramaUrl || profileUrl || 'https://zonerama.com'}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n fontWeight=\"600\"\n color=\"blue.600\"\n _hover={{ textDecoration: 'underline' }}\n >\n Zonerama\n </Text>\n </Text>\n </Box>\n\n {/* Albums Grid */}\n <SimpleGrid columns={{ base: 1, md: 2, lg: 3 }} spacing={6}>\n {albums.map((album) => {\n const coverPhoto = album.photos && album.photos.length > 0 \n ? album.photos[0] \n : null;\n\n return (\n <Box\n key={album.id}\n as={RouterLink}\n to={`/galerie/album/${album.id}`}\n className=\"card\"\n bg={cardBg}\n overflow=\"hidden\"\n transition=\"all 0.3s\"\n borderWidth=\"1px\"\n borderColor={useColorModeValue('gray.200', 'gray.700')}\n _hover={{\n transform: 'translateY(-8px)',\n boxShadow: '2xl',\n borderColor: useColorModeValue('gray.300', 'gray.600'),\n }}\n cursor=\"pointer\"\n >\n {/* Cover Image */}\n {coverPhoto ? (\n <Image\n src={coverPhoto.image_1500}\n alt={album.title}\n w=\"100%\"\n h=\"200px\"\n objectFit=\"cover\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n ) : (\n <Box\n w=\"100%\"\n h=\"200px\"\n bg=\"gray.200\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <ImageIcon size={48} color=\"gray\" />\n </Box>\n )}\n\n {/* Album Info */}\n <VStack align=\"stretch\" p={4} spacing={2}>\n <Heading size=\"sm\" color={headingColor} noOfLines={2} minH=\"40px\">\n {album.title}\n </Heading>\n \n <VStack spacing={2} fontSize=\"xs\" color={textColor} align=\"stretch\">\n {album.date && (\n <HStack spacing={1}>\n <Calendar size={14} />\n <Text>{album.date}</Text>\n </HStack>\n )}\n <HStack spacing={1}>\n <ImageIcon size={14} />\n <Text>{album.photos_count} foto</Text>\n </HStack>\n </VStack>\n\n {album.views_count !== undefined && album.views_count > 0 && (\n <Badge colorScheme=\"purple\" fontSize=\"2xs\" alignSelf=\"flex-start\">\n {album.views_count} zhlédnutí\n </Badge>\n )}\n </VStack>\n </Box>\n );\n })}\n </SimpleGrid>\n\n {/* Bottom CTA */}\n <Box textAlign=\"center\" pt={4}>\n <Button\n as={RouterLink}\n to=\"/galerie\"\n rightIcon={<ArrowRight size={18} />}\n colorScheme=\"blue\"\n size=\"lg\"\n >\n {t('gallery.view_all_albums')}\n </Button>\n </Box>\n </VStack>\n </Box>\n );\n};\n\nexport default GallerySection;\n"],"names":["ArrowRight","createLucideIcon","d","key","resolveBackendUrl","path","test","startsWith","origin","assetBase","process","trim","URL","window","location","_unused","API_URL","_unused2","toString","_unused3","_ref","zoneramaUrl","t","useTranslation","albums","setAlbums","useState","loading","setLoading","profileUrl","setProfileUrl","cardBg","useColorModeValue","headingColor","textColor","infoBg","infoBorder","infoText","useEffect","async","profileRes","albumsRes","Promise","allSettled","fetch","cache","combinedAlbums","status","value","ok","profileData","json","input_link","albumsData","validBlogAlbums","Array","isArray","filter","album","id","title","some","existing","length","items","getZoneramaManifestWithFallbacks","byAlbum","forEach","it","aid","String","album_id","push","synthesized","Object","entries","map","_ref2","arr","url","page_url","date","photos_count","photos","slice","p","image_1500","src","local","_unused4","sort","a","b","parseDate","dateStr","Date","parts","split","Boolean","day","month","year","concat","padStart","getTime","recentAlbums","err","console","error","fetchAlbums","_jsx","Box","py","children","_jsxs","VStack","spacing","align","Heading","size","SimpleGrid","columns","base","md","lg","i","Skeleton","height","borderRadius","HStack","justify","flexWrap","color","Text","fontSize","Button","as","RouterLink","to","rightIcon","colorScheme","variant","bg","borderWidth","borderColor","px","href","target","rel","fontWeight","_hover","textDecoration","coverPhoto","className","overflow","transition","transform","boxShadow","cursor","Image","alt","w","h","objectFit","decoding","display","alignItems","justifyContent","ImageIcon","noOfLines","minH","Calendar","undefined","views_count","Badge","alignSelf","textAlign","pt"],"sourceRoot":""} |