Files
MyClub/frontend/build/static/js/154.a93817c6.chunk.js.map
T
Tomas Dvorak 84a8acf944 update
2026-03-02 20:20:56 +01:00

1 line
21 KiB
Plaintext

{"version":3,"file":"static/js/154.a93817c6.chunk.js","mappings":"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","sources":["components/home/BlogSwiper.tsx","../node_modules/popmotion/dist/es/utils/wrap.mjs"],"sourcesContent":["import React, { useState, useCallback, useMemo, useEffect } from 'react';\nimport { Box, Image, Heading, Text, VStack, HStack, Skeleton, Button, IconButton, Flex, Container } from '@chakra-ui/react';\nimport { useQuery } from '@tanstack/react-query';\nimport { getArticles, getFeaturedArticles, Article } from '../../services/articles';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { assetUrl } from '../../utils/url';\nimport { ChevronLeftIcon, ChevronRightIcon } from '@chakra-ui/icons';\nimport { useClubTheme } from '../../contexts/ClubThemeContext';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { wrap } from 'popmotion';\n\nconst MotionBox = motion(Box);\nconst MotionImage = motion(Image);\n\ntype FallbackArticle = Partial<Article> & {\n id?: number | string;\n title: string;\n excerpt?: string;\n image?: string;\n date?: string;\n};\n\ninterface BlogSwiperProps {\n fallbackArticles?: FallbackArticle[];\n}\n\nconst variants = {\n enter: (direction: number) => ({\n x: direction > 0 ? 1000 : -1000,\n opacity: 0\n }),\n center: {\n zIndex: 1,\n x: 0,\n opacity: 1\n },\n exit: (direction: number) => ({\n zIndex: 0,\n x: direction < 0 ? 1000 : -1000,\n opacity: 0\n })\n};\n\nconst swipeConfidenceThreshold = 10000;\nconst swipePower = (offset: number, velocity: number) => {\n return Math.abs(offset) * velocity;\n};\n\nconst HeroSlide: React.FC<{ article: Article }> = ({ article }) => {\n const theme = useClubTheme();\n const excerpt = (article.content || '').replace(/<[^>]*>/g, '').slice(0, 200) + '...';\n const link = article.slug ? `/news/${article.slug}` : `/articles/${article.id}`;\n \n return (\n <Box\n position=\"relative\"\n w=\"100%\"\n h={{ base: '500px', md: '600px' }}\n overflow=\"hidden\"\n borderRadius={{ base: 'none', md: 'xl' }}\n boxShadow=\"lg\"\n >\n <MotionImage\n src={assetUrl(article.image_url) || '/stadium-placeholder.jpg'}\n alt={article.title}\n w=\"100%\"\n h=\"100%\"\n objectFit=\"cover\"\n initial={{ opacity: 0.7 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.5 }}\n />\n <Box\n position=\"absolute\"\n bottom={0}\n left={0}\n right={0}\n p={{ base: 6, md: 10 }}\n bgGradient=\"linear(to-t, blackAlpha.900, blackAlpha.700, transparent)\"\n color=\"white\"\n >\n <Container maxW=\"7xl\" px={{ base: 4, md: 6 }}>\n {/* Top-left BLOG link badge */}\n <HStack spacing={3} mb={4}>\n <Button\n as={RouterLink}\n to=\"/blog\"\n size=\"sm\"\n px={3}\n height=\"28px\"\n borderRadius=\"full\"\n bg={theme.primary}\n color=\"white\"\n _hover={{ bg: theme.accent }}\n >\n BLOG\n </Button>\n <Text fontSize={{ base: 'xs', md: 'sm' }} opacity={0.85}>•</Text>\n <Text fontSize={{ base: 'xs', md: 'sm' }} opacity={0.85}>Klubové aktuality</Text>\n </HStack>\n\n <Box maxW={{ base: '100%', md: '70%', lg: '55%' }}>\n <Text \n fontSize={{ base: 'sm', md: 'md' }} \n fontWeight=\"bold\" \n color={theme.accent} \n textTransform=\"uppercase\" \n letterSpacing=\"0.1em\"\n mb={2}\n >\n Nejnovější aktualita\n </Text>\n <Heading \n as=\"h2\" \n size={{ base: 'xl', md: '2xl', lg: '3xl' }} \n mb={4}\n lineHeight=\"1.2\"\n textShadow=\"0 2px 4px rgba(0,0,0,0.5)\"\n >\n {article.title}\n </Heading>\n <Text \n fontSize={{ base: 'sm', md: 'md' }} \n noOfLines={3} \n mb={6}\n textShadow=\"0 1px 2px rgba(0,0,0,0.5)\"\n >\n {excerpt}\n </Text>\n <HStack spacing={4}>\n <Button \n as={RouterLink} \n to={link}\n size=\"lg\"\n bg={theme.primary}\n color=\"white\"\n rightIcon={<ChevronRightIcon />}\n _hover={{\n bg: theme.accent,\n transform: 'translateY(-2px)',\n boxShadow: 'lg',\n }}\n >\n Číst více\n </Button>\n <Button\n as={RouterLink}\n to=\"/blog\"\n size=\"lg\"\n variant=\"outline\"\n borderColor=\"whiteAlpha.700\"\n color=\"white\"\n _hover={{ bg: 'whiteAlpha.200' }}\n >\n Všechny články\n </Button>\n </HStack>\n </Box>\n </Container>\n </Box>\n </Box>\n );\n};\n\nconst BlogSwiper: React.FC<BlogSwiperProps> = ({ fallbackArticles = [] }) => {\n const [[slideIndex, direction], setSlideIndex] = useState([0, 0]);\n const { data: featuredData, isLoading: loadingFeatured } = useQuery({\n queryKey: ['featured-articles', { page: 1, page_size: 5 }],\n queryFn: () => getFeaturedArticles({ page: 1, page_size: 5 }),\n refetchOnWindowFocus: false,\n refetchOnMount: true,\n refetchInterval: 300000,\n staleTime: 60000,\n });\n // Fallback to latest published if no featured are available\n const { data: latestData } = useQuery({\n queryKey: ['latest-articles', { page: 1, page_size: 5, published: true }],\n queryFn: () => getArticles({ page: 1, page_size: 5, published: true }),\n enabled: Boolean(!loadingFeatured && !(featuredData?.data?.length)),\n });\n\n const normalizedFallback = useMemo<Article[]>(() => fallbackArticles.map((item, index) => ({\n id: typeof item.id === 'number' ? item.id : index,\n title: item.title,\n content: item.content ?? item.excerpt ?? '',\n image_url: item.image_url ?? item.image ?? undefined,\n author: item.author,\n category: typeof item.category === 'string' ? { id: index, name: item.category } : item.category,\n category_name: typeof item.category === 'string' ? item.category : item.category_name,\n slug: item.slug,\n created_at: item.created_at ?? item.published_at ?? item.date ?? new Date().toISOString(),\n published: item.published ?? true,\n })), [fallbackArticles]);\n\n const remoteArticles = useMemo<Article[]>(() => {\n if (featuredData?.data?.length) {\n return featuredData.data;\n }\n if (latestData?.data?.length) {\n return latestData.data;\n }\n return [];\n }, [featuredData?.data, latestData?.data]);\n\n const articles = remoteArticles.length ? remoteArticles : normalizedFallback;\n const articleCount = articles.length;\n const articleIndex = articleCount > 0 ? wrap(0, articleCount, slideIndex) : 0;\n const paginate = useCallback(\n (newDirection: number) => {\n setSlideIndex([slideIndex + newDirection, newDirection]);\n },\n [slideIndex]\n );\n\n // Auto-advance slides\n useEffect(() => {\n if (articleCount <= 1) return;\n\n const timer = setInterval(() => {\n paginate(1);\n }, 8000);\n\n return () => clearInterval(timer);\n }, [articleCount, paginate]);\n\n useEffect(() => {\n if (articleCount === 0 && slideIndex !== 0) {\n setSlideIndex([0, 0]);\n } else if (articleIndex >= articleCount && articleCount > 0) {\n setSlideIndex([0, 0]);\n }\n }, [articleCount, articleIndex, slideIndex]);\n\n const isLoading = loadingFeatured && !remoteArticles.length && !normalizedFallback.length;\n\n if (isLoading) {\n return (\n <Skeleton \n w=\"100%\" \n h={{ base: '500px', md: '600px' }} \n borderRadius={{ base: 'none', md: 'xl' }}\n />\n );\n }\n\n if (!articleCount) {\n return (\n <Box\n position=\"relative\"\n w=\"100%\"\n h={{ base: '480px', md: '560px' }}\n borderRadius={{ base: 'none', md: 'xl' }}\n bgGradient=\"linear(to-br, blackAlpha.600, blackAlpha.800)\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n color=\"whiteAlpha.800\"\n textAlign=\"center\"\n px={8}\n >\n <VStack spacing={4}>\n <Heading size=\"lg\">Žádné články k zobrazení</Heading>\n <Text maxW=\"lg\">\n Přidejte prosím nové články nebo nastavte vybrané příspěvky, aby se karusel mohl zobrazit.\n </Text>\n </VStack>\n </Box>\n );\n }\n\n const currentArticle = articles[articleIndex];\n if (!currentArticle) {\n return null;\n }\n\n return (\n <Box\n position=\"relative\"\n w=\"100%\"\n overflow=\"hidden\"\n minH={{ base: '500px', md: '600px' }}\n >\n <AnimatePresence initial={false} custom={direction}>\n <MotionBox\n key={slideIndex}\n custom={direction}\n variants={variants}\n initial=\"enter\"\n animate=\"center\"\n exit=\"exit\"\n transition={{\n x: { type: 'spring', stiffness: 300, damping: 30 },\n opacity: { duration: 0.2 }\n }}\n drag=\"x\"\n dragConstraints={{ left: 0, right: 0 }}\n dragElastic={1}\n onDragEnd={(e, { offset, velocity }) => {\n const swipe = swipePower(offset.x, velocity.x);\n if (swipe < -swipeConfidenceThreshold) {\n paginate(1);\n } else if (swipe > swipeConfidenceThreshold) {\n paginate(-1);\n }\n }}\n position=\"absolute\"\n top={0}\n left={0}\n w=\"100%\"\n h=\"100%\"\n >\n <HeroSlide article={currentArticle} />\n </MotionBox>\n </AnimatePresence>\n\n {articles.length > 1 && (\n <>\n <IconButton\n aria-label=\"Předchozí slide\"\n icon={<ChevronLeftIcon />}\n position=\"absolute\"\n left={4}\n top=\"50%\"\n transform=\"translateY(-50%)\"\n zIndex={2}\n borderRadius=\"full\"\n colorScheme=\"blackAlpha\"\n onClick={() => paginate(-1)}\n size=\"lg\"\n />\n <IconButton\n aria-label=\"Další slide\"\n icon={<ChevronRightIcon />}\n position=\"absolute\"\n right={4}\n top=\"50%\"\n transform=\"translateY(-50%)\"\n zIndex={2}\n borderRadius=\"full\"\n colorScheme=\"blackAlpha\"\n onClick={() => paginate(1)}\n size=\"lg\"\n />\n <Flex\n position=\"absolute\"\n bottom={8}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex={2}\n gap={2}\n >\n {articles.map((_, index) => (\n <Box\n key={index}\n as=\"button\"\n px={2}\n h=\"20px\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n fontSize=\"xs\"\n fontWeight=\"700\"\n color={index === articleIndex ? 'black' : 'white'}\n bg={index === articleIndex ? 'white' : 'whiteAlpha.500'}\n borderRadius=\"sm\"\n onClick={() => setSlideIndex([index, index > articleIndex ? 1 : -1])}\n transition=\"all 0.3s\"\n _hover={{\n bg: 'white',\n color: 'black',\n }}\n >\n {String(index + 1).padStart(2, '0')}\n </Box>\n ))}\n </Flex>\n </>\n )}\n </Box>\n );\n};\n\nexport default BlogSwiper;\n","const wrap = (min, max, v) => {\n const rangeSize = max - min;\n return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;\n};\n\nexport { wrap };\n"],"names":["MotionBox","motion","Box","MotionImage","Image","variants","enter","direction","x","opacity","center","zIndex","exit","HeroSlide","_ref","article","theme","useClubTheme","excerpt","content","replace","slice","link","slug","concat","id","_jsxs","position","w","h","base","md","overflow","borderRadius","boxShadow","children","_jsx","src","assetUrl","image_url","alt","title","objectFit","initial","animate","transition","duration","bottom","left","right","p","bgGradient","color","Container","maxW","px","HStack","spacing","mb","Button","as","RouterLink","to","size","height","bg","primary","_hover","accent","Text","fontSize","lg","fontWeight","textTransform","letterSpacing","Heading","lineHeight","textShadow","noOfLines","rightIcon","ChevronRightIcon","transform","variant","borderColor","_ref2","_featuredData$data","fallbackArticles","slideIndex","setSlideIndex","useState","data","featuredData","isLoading","loadingFeatured","useQuery","queryKey","page","page_size","queryFn","getFeaturedArticles","refetchOnWindowFocus","refetchOnMount","refetchInterval","staleTime","latestData","published","getArticles","enabled","Boolean","length","normalizedFallback","useMemo","map","item","index","_ref3","_item$content","_ref4","_item$image_url","_ref5","_ref6","_item$created_at","_item$published","image","undefined","author","category","name","category_name","created_at","published_at","date","Date","toISOString","remoteArticles","_featuredData$data2","_latestData$data","articles","articleCount","articleIndex","wrap","min","max","v","rangeSize","paginate","useCallback","newDirection","useEffect","timer","setInterval","clearInterval","Skeleton","display","alignItems","justifyContent","textAlign","VStack","currentArticle","minH","AnimatePresence","custom","type","stiffness","damping","drag","dragConstraints","dragElastic","onDragEnd","e","_ref7","offset","velocity","swipe","swipePower","Math","abs","top","_Fragment","IconButton","icon","ChevronLeftIcon","colorScheme","onClick","Flex","gap","_","String","padStart"],"sourceRoot":""}