{"version":3,"file":"static/js/325.e2ec5d4c.chunk.js","mappings":"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","sources":["components/balls/Balls.tsx","components/mainPageComponents/mainPageCases/PreviewCasesSectionStyles.ts","components/mainPageComponents/mainPageCases/PreviewCasesSection.tsx","pages/main/MainStyles.ts","components/mainPageComponents/mainPageBanner/MainPageBannerStyles.ts","components/mainPageComponents/mainPageBanner/MainPageBanner.tsx","components/mainPageComponents/mainPageWhyUs/MainPageWhyUsStyles.ts","components/mainPageComponents/mainPageWhyUs/MainPageWhyUs.tsx","components/mainPageComponents/mainPageBlog/MainPageBlogStyles.ts","components/mainPageComponents/mainPageBlog/MainPageBlog.tsx","components/mainPageComponents/mainMethodologies/MainMethodologies.tsx","components/mainPageComponents/mainProducts/MainProductsStyles.ts","components/mainPageComponents/mainProducts/MainProducts.tsx","pages/main/Main.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport Matter, { Runner } from 'matter-js';\nimport { useAppSelector } from '../../state/hooks';\n\ninterface Props {\n bgColor: string;\n ballBgColor: string;\n ballsData: { text: string; border?: string; borderImage?: string[] }[];\n bodyHeight: { desktop: number; tablet: number; mobile: number };\n fontSizes: { mobile: number; desktop: number };\n}\n\nfunction getWordWidth(\n word: string,\n fontSizes: { mobile: number; desktop: number },\n screenWidth: number,\n) {\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.whiteSpace = 'nowrap';\n span.style.position = 'absolute';\n span.style.fontSize = screenWidth > 1100 ? `${fontSizes.desktop}px` : `${fontSizes.mobile}px`; // Set the font size for the calculation\n span.innerText = word;\n document.body.appendChild(span);\n const width = span.getBoundingClientRect().width;\n document.body.removeChild(span);\n return width;\n}\n\nfunction getSplittedWordArray(\n text: string,\n fontSizes: { mobile: number; desktop: number },\n screenWidth: number,\n) {\n const ballWidth = screenWidth > 1100 ? 280 : 150;\n const textSplittedBySpace = text.split(' ');\n const result = [];\n\n let row = '';\n let totalRowWidth = 0;\n\n for (let i = 0; i < textSplittedBySpace.length; i++) {\n const wordWidth = getWordWidth(\n textSplittedBySpace[i],\n fontSizes,\n screenWidth,\n );\n\n if (totalRowWidth + wordWidth < ballWidth) {\n row += textSplittedBySpace[i];\n\n if (textSplittedBySpace.length - 1 !== i) {\n row += ' ';\n }\n\n totalRowWidth += wordWidth;\n\n if (i === textSplittedBySpace.length - 1 && row.length > 0) {\n result.push(row);\n }\n\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (totalRowWidth + wordWidth === ballWidth) {\n row += textSplittedBySpace[i];\n\n if (textSplittedBySpace.length - 1 !== i) {\n row += ' ';\n }\n\n result.push(row);\n row = '';\n totalRowWidth = 0;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (totalRowWidth + wordWidth > ballWidth) {\n result.push(row);\n row = `${textSplittedBySpace[i]} `;\n totalRowWidth = wordWidth;\n\n if (i === textSplittedBySpace.length - 1 && row.length > 0) {\n result.push(row);\n }\n }\n }\n\n return result;\n}\n\nexport const Balls = ({\n bgColor,\n ballBgColor,\n ballsData,\n bodyHeight,\n fontSizes,\n}: Props) => {\n const boxRef = useRef(null);\n const canvasRef = useRef(null);\n\n const [width, setWidth] = useState(window.innerWidth);\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n\n useEffect(() => {\n const updateWindowDimensions = () => {\n const newWidth = window.innerWidth;\n setWidth(newWidth);\n };\n\n window.addEventListener('resize', updateWindowDimensions);\n\n return () => window.removeEventListener('resize', updateWindowDimensions);\n }, []);\n\n const ratio = window.devicePixelRatio;\n\n console.log(ratio);\n\n function createImage(\n text: string,\n color: string,\n borderColor?: string,\n borderGradient?: string[],\n ) {\n const drawing = document.createElement('canvas');\n drawing.width = width > 1100 ? 298 : 160;\n drawing.height = width > 1100 ? 298 : 160;\n\n const fontSize = width > 1100 ? fontSizes.desktop : fontSizes.mobile;\n const retreatSize = 4;\n\n const textByRows = getSplittedWordArray(text, fontSizes, width);\n\n const textRows = textByRows.length;\n\n const textHeight = textRows * (fontSize + retreatSize);\n const textStartPosition = textRows > 1\n ? drawing.height / 2 - textHeight / 2 + fontSize\n : drawing.height / 2 + fontSize / 3;\n\n const ctx = drawing.getContext('2d');\n ctx!.imageSmoothingEnabled = true;\n\n let gradient: CanvasGradient | undefined;\n\n if (borderGradient?.length) {\n gradient = ctx!.createConicGradient(0, 100, 100);\n const colorPart = 1 / borderGradient!.length;\n\n borderGradient!.forEach((color, index) => {\n gradient!.addColorStop(\n index * colorPart - (index !== 0 ? colorPart / 2 : 0),\n color,\n );\n });\n\n gradient.addColorStop(1, borderGradient![0]);\n }\n\n ctx!.fillStyle = '#FFF';\n ctx!.beginPath();\n if (width > 1100) {\n ctx!.arc(150, 150, 148, 0, 2 * Math.PI, false);\n } else {\n ctx!.arc(77, 77, 75, 0, 2 * Math.PI, false);\n }\n ctx!.closePath();\n\n ctx!.fill();\n ctx!.fillStyle = '#000';\n ctx!.font = `${fontSize}px Montserrat sans-serif`;\n ctx!.textAlign = 'center';\n textByRows.map((text, index) => ctx!.fillText(\n text,\n +parseInt(String(drawing.width / 2 - 5), 10),\n +parseInt(\n String(textStartPosition + (fontSize + retreatSize) * index),\n 10,\n ),\n ));\n\n ctx!.beginPath();\n if (width > 1100) {\n ctx!.arc(149, 150, 144, 0, 2 * Math.PI);\n ctx!.lineWidth = 10;\n } else {\n ctx!.arc(77, 77, 73, 0, 2 * Math.PI);\n ctx!.lineWidth = 5;\n }\n ctx!.strokeStyle = borderColor || gradient || '#000';\n ctx!.stroke();\n\n return drawing.toDataURL('image/png');\n }\n\n useEffect(() => {\n const Engine = Matter.Engine;\n const Render = Matter.Render;\n const World = Matter.World;\n const Bodies = Matter.Bodies;\n const Mouse = Matter.Mouse;\n const MouseConstraint = Matter.MouseConstraint;\n\n let bodyHeightByScreenSize: number = 0;\n\n if (width > 1100) {\n bodyHeightByScreenSize = bodyHeight.desktop;\n } else if (width > 600) {\n bodyHeightByScreenSize = bodyHeight.tablet;\n } else if (width < 600) {\n bodyHeightByScreenSize = bodyHeight.mobile;\n }\n\n const engine = Engine.create();\n\n const render = Render.create({\n // @ts-ignore\n element: boxRef.current,\n engine,\n // @ts-ignore\n canvas: canvasRef.current,\n options: {\n width: window.innerWidth,\n height: bodyHeightByScreenSize,\n background: bgColor,\n wireframes: false,\n pixelRatio: ratio,\n },\n });\n\n World.add(engine.world, [\n // walls\n Bodies.rectangle(\n window.innerWidth / 2,\n width > 1100\n ? bodyHeightByScreenSize + 100\n : bodyHeightByScreenSize + 50,\n window.innerWidth,\n width > 1100 ? 200 : 100,\n {\n isStatic: true,\n render: {\n fillStyle: 'green',\n },\n },\n ),\n Bodies.rectangle(\n window.innerWidth + 100,\n bodyHeightByScreenSize / 2,\n 200,\n bodyHeightByScreenSize,\n {\n isStatic: true,\n render: {\n visible: true,\n fillStyle: 'green',\n },\n },\n ),\n\n Bodies.rectangle(\n -100,\n bodyHeightByScreenSize / 2,\n 200,\n bodyHeightByScreenSize,\n {\n isStatic: true,\n render: {\n visible: true,\n fillStyle: 'green',\n },\n },\n ),\n Bodies.rectangle(window.innerWidth / 2, -100, window.innerWidth, 200, {\n isStatic: true,\n render: { visible: true, fillStyle: 'initial' },\n }),\n ]);\n\n ballsData.map((ball) => setTimeout(\n () => World.add(\n engine.world,\n Bodies.circle(\n window.innerWidth * Math.random(),\n 0,\n width > 1100 ? 150 : 77,\n {\n restitution: 0.3,\n render: {\n fillStyle: ballBgColor,\n sprite: {\n texture: createImage(\n ball.text,\n '#fff',\n ball.border,\n ball.borderImage,\n ),\n xScale: 1,\n yScale: 1,\n },\n },\n },\n ),\n ),\n 0,\n ));\n\n // add mouse control\n const mouse = Mouse.create(render.canvas);\n const mouseConstraint = MouseConstraint.create(engine, {\n mouse,\n // @ts-ignore\n constraint: {\n damping: 0.5,\n stiffness: 0.3,\n render: {\n visible: false,\n },\n },\n });\n\n mouseConstraint.mouse.element.removeEventListener(\n 'mousewheel',\n // @ts-ignore\n mouseConstraint.mouse.mousewheel,\n );\n mouseConstraint.mouse.element.removeEventListener(\n 'DOMMouseScroll',\n // @ts-ignore\n mouseConstraint.mouse.mousewheel,\n );\n\n World.add(engine.world, mouseConstraint);\n\n let touchStart: TouchEvent | null = null;\n mouseConstraint.mouse.element.addEventListener('touchstart', (event) => {\n if (!mouseConstraint.body) {\n touchStart = event;\n }\n });\n\n mouseConstraint.mouse.element.addEventListener('touchend', (event) => {\n event.preventDefault();\n touchStart = null;\n });\n\n mouseConstraint.mouse.element.addEventListener('touchmove', (event) => {\n if (!mouseConstraint.body && touchStart) {\n event.preventDefault();\n const start = touchStart.touches[0].clientY;\n const end = event.touches[0].clientY;\n const delta = start - end;\n window.scrollTo(0, window.scrollY + delta);\n touchStart = event;\n }\n });\n\n const runner = Matter.Runner.create();\n runner.isFixed = true;\n runner.delta = 30;\n Runner.start(runner, engine);\n Render.run(render);\n\n return () => {\n World.clear(engine.world, false);\n Engine.clear(engine);\n Render.stop(render);\n render.canvas.remove();\n };\n }, [width, interfaceLanguage]);\n\n return (\n
\n \n
\n );\n};\n","import styled from 'styled-components';\n\nexport const PreviewCasesSectionStyles = styled.div`\n padding: 53px 0 144px;\n\n @media (max-width: 900px) {\n padding: 42px 0 54px;\n }\n\n @media (max-width: 575px) {\n padding: 69px 0 70px;\n }\n\n .container {\n margin-bottom: 65px;\n\n @media (max-width: 900px) {\n margin-bottom: 30px;\n }\n\n span {\n font-weight: 700;\n font-size: 25px;\n line-height: 30px;\n\n @media (max-width: 900px) {\n font-size: 14px;\n line-height: 17px;\n }\n\n @media (max-width: 575px) {\n padding-left: 20px;\n\n font-size: 16px;\n line-height: 20px;\n color: #0000ff;\n }\n }\n }\n\n .slide {\n width: 770px;\n height: auto;\n\n border-radius: 10px;\n overflow: hidden;\n\n @media (max-width: 900px) {\n width: 440px;\n }\n\n @media (max-width: 575px) {\n width: 280px;\n }\n\n a {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .headContainer {\n height: 270px;\n position: relative;\n\n @media (max-width: 900px) {\n height: 155px;\n }\n\n @media (max-width: 575px) {\n height: 171px;\n }\n\n .captions {\n padding: 28px 30px;\n position: relative;\n z-index: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 5px;\n\n @media (max-width: 900px) {\n padding: 16px 17px;\n }\n\n @media (max-width: 575px) {\n padding: 19px 20px;\n }\n\n .caption {\n padding: 5px 21px;\n font-weight: 700;\n font-size: 18px;\n line-height: 115%;\n text-align: center;\n color: #ffffff;\n background: #eb2e4b;\n border-radius: 50px;\n white-space: nowrap;\n\n @media (max-width: 900px) {\n padding: 3px 12px;\n font-size: 10.3792px;\n line-height: 115%;\n }\n\n @media (max-width: 575px) {\n padding: 5px 10px;\n }\n }\n }\n\n img {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 270px;\n object-fit: cover;\n\n @media (max-width: 900px) {\n height: 155px;\n }\n\n @media (max-width: 575px) {\n height: 171px;\n width: 280px;\n }\n }\n }\n\n .textContainer {\n padding: 35px 45px 50px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n flex-grow: 1;\n\n @media (max-width: 900px) {\n padding: 20px 25px 29px;\n }\n\n @media (max-width: 575px) {\n padding: 30px 30px 35px 30px;\n }\n\n p {\n margin-bottom: 24px;\n\n font-weight: 700;\n font-size: 30px;\n line-height: 115%;\n\n @media (max-width: 900px) {\n font-size: 16px;\n }\n\n @media (max-width: 575px) {\n font-size: 14px;\n }\n }\n\n .hashtagAndButtonWrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 5px;\n\n .hashtagsContainer {\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n\n span {\n font-weight: 600;\n font-size: 18px;\n line-height: 115%;\n color: #0000ff;\n\n @media (max-width: 900px) {\n font-size: 10px;\n }\n }\n }\n\n .button {\n position: relative;\n display: flex;\n align-items: center;\n background: rgba(0, 0, 255, 0.5);\n border-radius: 100px;\n padding: 5px 26px;\n color: #fff;\n\n span {\n font-weight: 700;\n font-size: 13px;\n line-height: 115%;\n transform: translateX(-2px);\n }\n\n svg {\n height: 10px;\n position: absolute;\n right: 10px;\n transform: translate(-4px, 1px);\n }\n }\n }\n }\n }\n\n .lastSlide {\n width: 770px;\n height: auto;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n border: 2px solid #0000ff;\n border-radius: 10px;\n overflow: hidden;\n\n padding: 80px 65px 68px;\n box-sizing: border-box;\n\n @media (max-width: 900px) {\n padding: 46px 37px 29px;\n width: 440px;\n }\n\n @media (max-width: 575px) {\n padding: 27px 30px 35px;\n width: 280px;\n }\n\n .description {\n font-weight: 600;\n font-size: 60px;\n line-height: 73px;\n\n @media (max-width: 900px) {\n font-size: 32px;\n line-height: 39px;\n }\n\n @media (max-width: 575px) {\n font-size: 26px;\n line-height: 32px;\n }\n }\n\n a {\n display: flex;\n justify-content: flex-end;\n\n @media (max-width: 600px) {\n width: 100%;\n\n .lastSlideButton {\n width: 100%;\n\n button {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n }\n }\n }\n\n .lastSlideButton {\n white-space: nowrap;\n\n @media (max-width: 600px) {\n .hashtag {\n font-size: 8px;\n line-height: 10px;\n }\n\n .description {\n font-size: 26px;\n line-height: 32px;\n }\n }\n\n button {\n @media (max-width: 600px) {\n padding: 0;\n\n span {\n font-size: 16px;\n line-height: 20px;\n }\n }\n }\n }\n }\n\n &.lightTheme {\n .container {\n span {\n color: #000;\n }\n }\n\n .slide {\n border: 2px solid #000000;\n\n .textContainer {\n p {\n color: #000;\n }\n\n .hashtagAndButtonWrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 5px;\n }\n }\n }\n\n .lastSlide {\n border: 2px solid #000000;\n\n .description {\n color: #000;\n }\n }\n }\n\n &.darkTheme {\n .container {\n span {\n color: #fff;\n }\n }\n\n .slide {\n border: 2px solid #0000ff;\n\n .textContainer {\n p {\n color: #fff;\n }\n\n .hashtagAndButtonWrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 5px;\n }\n }\n }\n\n .lastSlide {\n border: 2px solid #0000ff;\n\n .description {\n color: #fff;\n }\n }\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { PreviewCasesSectionStyles } from './PreviewCasesSectionStyles';\nimport SwiperCenteredSlidesPerViewAuto from '../../swiperCenteterSlidesPerViewAuto/SwiperCenteredSlidesPerViewAuto';\nimport { Link } from 'react-router-dom';\nimport { SwiperSlide } from 'swiper/react';\nimport ArrowRightSmall from '../../../assets/icons/ArrowRightSmall';\nimport ButtonWithArrowOnHover from '../../buttonWithArrowOnHover/ButtonWithArrowOnHover';\nimport { useAppSelector } from '../../../state/hooks';\nimport getTranslationsByLangOrEng from '../../../utils/getTranslationsByLangOrLang';\nimport workWithResponse from '../../../functions/workWithResponse';\nimport { AdminApi } from '../../../api/adminApi';\nimport { IPost } from '../../../enteties/IPost';\nimport Loader from '../../loader/Loader';\n\nimport defaultImage from '../../../assets/images/image-not-found.jpg';\n\nfunction PreviewCasesSection({ theme }: { theme: 'darkTheme' | 'lightTheme' }) {\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n const [isLoading, setIsLoading] = useState(true);\n const [loadingError, setLoadingError] = useState(false);\n const [posts, setPosts] = useState(null);\n\n async function getPosts() {\n setIsLoading(true);\n\n if (loadingError) {\n setLoadingError(false);\n }\n\n try {\n await workWithResponse(() => AdminApi.getPosts(interfaceLanguage, { type: '1' }, 3, 0)).then(({ error, data: postsData }) => {\n if (!error && postsData) {\n setPosts(postsData.data);\n }\n });\n } catch (e) {\n console.warn(e);\n } finally {\n setIsLoading(false);\n }\n }\n\n useEffect(() => {\n getPosts();\n }, [interfaceLanguage]);\n\n return (\n \n
\n \n {getTranslationsByLangOrEng(\n interfaceLanguage,\n 'preview_cases_section_1',\n )}\n \n
\n\n {!isLoading && posts ? (\n 0}\n buttonsIconsColor={theme === 'darkTheme' ? '#FFF' : '#000'}\n >\n {posts.map((item, index) => (\n // eslint-disable-next-line react/no-array-index-key\n \n \n
\n \n
\n\n
\n

{item.contentTitle}

\n
\n
\n \n {getTranslationsByLangOrEng(interfaceLanguage, 'more')}\n \n \n
\n
\n
\n \n
\n ))}\n \n \n {getTranslationsByLangOrEng(\n interfaceLanguage,\n 'preview_cases_section_2',\n )}\n \n\n \n {}}\n arrowColor=\"#000000\"\n background=\"#CBCBCB\"\n hoverBackground=\"#FFF\"\n hoverTextColor=\"#000000\"\n text={getTranslationsByLangOrEng(\n interfaceLanguage,\n 'find_out_more',\n )}\n className=\"lastSlideButton\"\n />\n \n \n \n ) : (\n
\n \n
\n )}\n
\n );\n}\n\nexport default PreviewCasesSection;\n","import styled from 'styled-components';\n\nexport const MainStyles = styled.div`\n background: #000;\n overflow: hidden;\n\n .ballsBlock {\n position: relative;\n\n height: 1440px;\n\n @media (max-width: 1100px) {\n height: 788px;\n }\n\n @media (max-width: 600px) {\n height: 1312px;\n }\n\n .container {\n position: absolute;\n color: #fff;\n left: 50%;\n transform: translateX(-50%);\n pointer-events: none;\n\n .titleWrapper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 20px;\n\n margin-bottom: 165px;\n\n @media (max-width: 1100px) {\n margin-bottom: 74px;\n }\n\n @media (max-width: 600px) {\n margin-bottom: 65px;\n flex-direction: column;\n }\n\n span {\n font-weight: 500;\n font-size: 226px;\n line-height: 275px;\n\n @media (max-width: 1100px) {\n font-size: 150px;\n line-height: 183px;\n }\n\n @media (max-width: 600px) {\n font-size: 126px;\n line-height: 154px;\n }\n }\n\n p {\n font-weight: 600;\n font-size: 40px;\n line-height: 100%;\n\n max-width: 570px;\n\n @media (max-width: 1100px) {\n font-size: 23px;\n line-height: 120%;\n max-width: 328px;\n }\n\n @media (max-width: 600px) {\n font-size: 26px;\n text-align: center;\n }\n }\n }\n\n .caption {\n font-weight: 700;\n font-size: 25px;\n line-height: 30px;\n\n @media (max-width: 1100px) {\n font-size: 14px;\n line-height: 17px;\n }\n\n @media (max-width: 600px) {\n font-size: 16px;\n line-height: 20px;\n\n text-align: center;\n display: block;\n margin: auto;\n }\n }\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const MainPageBannerStyles = styled.div`\n position: relative;\n overflow: hidden;\n\n .bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 1440px;\n\n @media (max-width: 768px) {\n width: 1117px;\n }\n\n @media (max-width: 500px) {\n width: 1150px;\n }\n\n video {\n width: 100%;\n }\n }\n\n .content {\n position: relative;\n z-index: 1;\n padding: 176px 0 202px;\n\n @media (max-width: 768px) {\n padding: 172px 0 188px;\n }\n\n @media (max-width: 768px) {\n padding: 67px 0 159px;\n }\n\n h1 {\n margin-bottom: 108px;\n\n font-weight: 700;\n font-size: 80px;\n line-height: 115%;\n color: #ffffff;\n\n @media (max-width: 768px) {\n margin-bottom: 70px;\n\n font-size: 45px;\n line-height: 115%;\n max-width: 617px;\n }\n\n @media (max-width: 500px) {\n font-size: 36px;\n text-align: center;\n }\n }\n\n .buttonsWrapper {\n display: flex;\n gap: 60px;\n\n @media (max-width: 768px) {\n gap: 21px;\n\n button {\n height: 40px;\n\n span {\n font-size: 16px;\n line-height: 20px;\n }\n }\n }\n\n @media (max-width: 570px) {\n flex-direction: column-reverse;\n align-items: center;\n }\n }\n }\n`;\n","import React from 'react';\nimport { MainPageBannerStyles } from './MainPageBannerStyles';\nimport ButtonWithArrowOnHover from '../../buttonWithArrowOnHover/ButtonWithArrowOnHover';\nimport backgroundVideo from '../../../assets/videos/CX_Man.mp4';\nimport { useAppSelector } from '../../../state/hooks';\nimport getTranslationsByLangOrEng from '../../../utils/getTranslationsByLangOrLang';\n\nfunction MainPageBanner() {\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n\n return (\n \n
\n \n \n \n
\n
\n
\n

{getTranslationsByLangOrEng(interfaceLanguage, 'main_2')}

\n
\n {/* { */}\n {/* const elem = document.getElementById('copter'); */}\n\n {/* elem!.scrollIntoView({ block: 'center', behavior: 'smooth' }); */}\n {/* }} */}\n {/* background=\"#0000FF\" */}\n {/* arrowColor=\"#0000FF\" */}\n {/* hoverBackground=\"#FFF\" */}\n {/* hoverTextColor=\"#0000FF\" */}\n {/* /> */}\n\n {\n const elem = document.getElementById('form');\n localStorage.setItem('toFooter', '1');\n\n setTimeout(() => localStorage.removeItem('toFooter'), 3000);\n\n elem!.scrollIntoView({\n inline: 'start',\n block: 'start',\n behavior: 'smooth',\n });\n }}\n background=\"src/components/mainPageComponents/mainPageBanner/MainPageBanner#CBCBCB\"\n arrowColor=\"#0F0E0C\"\n hoverBackground=\"#FFF\"\n hoverTextColor=\"#0F0E0C\"\n />\n
\n
\n
\n
\n );\n}\n\nexport default MainPageBanner;\n","import styled from 'styled-components';\n\nexport const MainPageWhyUsStyles = styled.div`\n color: #fff;\n padding: 44px 0 92px;\n\n @media (max-width: 1000px) {\n padding: 17px 0 99px;\n }\n\n @media (max-width: 710px) {\n padding: 98px 0 45px;\n }\n\n .container {\n @media (max-width: 1000px) {\n padding: 0 40px;\n }\n\n @media (max-width: 710px) {\n padding: 0 10px;\n }\n }\n\n .titleWrapper {\n position: relative;\n z-index: 1;\n display: flex;\n align-items: center;\n\n @media (max-width: 710px) {\n flex-direction: column;\n align-items: flex-start;\n }\n\n span {\n font-weight: 700;\n font-size: 25px;\n line-height: 30px;\n\n @media (max-width: 1000px) {\n font-size: 14px;\n line-height: 17px;\n }\n\n @media (max-width: 710px) {\n font-size: 16px;\n line-height: 20px;\n color: #0000ff;\n }\n }\n\n h2 {\n max-width: 570px;\n margin-left: auto;\n\n font-weight: 600;\n font-size: 40px;\n line-height: 49px;\n\n transform: translateY(50%);\n\n @media (max-width: 1000px) {\n font-size: 23px;\n line-height: 120%;\n max-width: 328px;\n }\n\n @media (max-width: 710px) {\n font-size: 26px;\n\n max-width: none;\n padding-left: 20px;\n }\n }\n }\n\n .listWrapper {\n position: relative;\n padding: 10px;\n box-sizing: border-box;\n\n .bg {\n top: 0;\n left: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n\n overflow: hidden;\n\n video {\n object-fit: cover;\n height: 644px;\n width: 100%;\n\n @media (max-width: 1000px) {\n height: 349px;\n }\n }\n\n .bgMask {\n position: absolute;\n top: 0;\n background: linear-gradient(\n 360deg,\n #000000 32.63%,\n rgba(0, 0, 0, 0) 74.04%\n ),\n rgba(0, 0, 255, 0.7);\n width: 100%;\n height: 100%;\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n ul {\n position: relative;\n display: flex;\n justify-content: center;\n gap: 30px;\n padding: 215px 0 37px;\n z-index: 1;\n\n @media (max-width: 1000px) {\n padding: 116px 0 0;\n gap: 20px;\n }\n\n @media (max-width: 710px) {\n display: none;\n }\n }\n\n .listItem {\n padding: 48px 35px;\n\n border: 1px solid #0000ff;\n max-width: 370px;\n width: 100%;\n height: auto;\n box-sizing: border-box;\n text-align: center;\n justify-content: space-between;\n display: flex;\n flex-direction: column;\n\n @media (max-width: 1000px) {\n max-width: 214px;\n padding: 30px 20px;\n }\n\n h3 {\n margin-bottom: 20px;\n\n font-weight: 600;\n font-size: 30px;\n line-height: 120%;\n\n @media (max-width: 1000px) {\n font-size: 18px;\n }\n }\n\n p {\n font-weight: 400;\n font-size: 21px;\n line-height: 120%;\n\n @media (max-width: 1000px) {\n font-size: 14px;\n }\n }\n }\n\n .sliderWrapper {\n .swiper {\n padding-bottom: 5px;\n }\n\n display: none;\n padding-top: 110px;\n\n @media (max-width: 710px) {\n display: block;\n }\n }\n }\n`;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { MainPageWhyUsStyles } from './MainPageWhyUsStyles';\nimport SwiperCenteredSlidesPerViewAuto from '../../swiperCenteterSlidesPerViewAuto/SwiperCenteredSlidesPerViewAuto';\nimport { SwiperSlide } from 'swiper/react';\nimport bgVideo from '../../../assets/videos/whyusmainbg.mp4';\nimport { useAppSelector } from '../../../state/hooks';\nimport getTranslationsByLangOrEng from '../../../utils/getTranslationsByLangOrLang';\n\nfunction MainPageWhyUs() {\n const [titleHeight, setTitleHeight] = useState(0);\n\n const titleRef = useRef();\n\n const [width, setWidth] = useState(window.innerWidth);\n\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n\n useEffect(() => {\n const updateWindowDimensions = () => {\n const newWidth = window.innerWidth;\n setWidth(newWidth);\n };\n\n window.addEventListener('resize', updateWindowDimensions);\n\n return () => window.removeEventListener('resize', updateWindowDimensions);\n }, []);\n\n useEffect(() => {\n setTitleHeight(titleRef.current.offsetHeight);\n }, [width]);\n\n return (\n \n
\n
\n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_32')}\n \n

\n {getTranslationsByLangOrEng(interfaceLanguage, 'main_33')}\n

\n
\n
\n
\n
\n
\n \n
\n\n
\n
\n
    \n
  • \n

    {getTranslationsByLangOrEng(interfaceLanguage, 'main_34')}

    \n

    \n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_35')}\n {' '}\n {getTranslationsByLangOrEng(interfaceLanguage, 'main_36')}\n

    \n
  • \n\n
  • \n

    {getTranslationsByLangOrEng(interfaceLanguage, 'main_37')}

    \n

    \n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_38')}\n {' '}\n {getTranslationsByLangOrEng(interfaceLanguage, 'main_39')}\n

    \n
  • \n\n
  • \n

    {getTranslationsByLangOrEng(interfaceLanguage, 'main_40')}

    \n

    \n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_41')}\n {' '}\n {getTranslationsByLangOrEng(interfaceLanguage, 'main_42')}\n

    \n
  • \n
\n\n \n \n

{getTranslationsByLangOrEng(interfaceLanguage, 'main_34')}

\n

\n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_35')}\n {' '}\n {getTranslationsByLangOrEng(interfaceLanguage, 'main_36')}\n

\n
\n\n \n

{getTranslationsByLangOrEng(interfaceLanguage, 'main_37')}

\n

\n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_38')}\n {' '}\n {getTranslationsByLangOrEng(interfaceLanguage, 'main_39')}\n

\n
\n\n \n

{getTranslationsByLangOrEng(interfaceLanguage, 'main_40')}

\n

\n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_41')}\n {' '}\n {getTranslationsByLangOrEng(interfaceLanguage, 'main_42')}\n

\n
\n
\n
\n \n );\n}\n\nexport default MainPageWhyUs;\n","import styled from 'styled-components';\n\nexport const MainPageBlogStyles = styled.div`\n padding: 169px 0 144px;\n\n @media (max-width: 1000px) {\n padding: 114px 0 102px;\n }\n\n @media (max-width: 600px) {\n padding: 69px 0 70px;\n }\n\n .container {\n margin-bottom: 61px;\n\n @media (max-width: 1000px) {\n margin-bottom: 30px;\n }\n\n .title {\n font-weight: 700;\n font-size: 25px;\n line-height: 30px;\n\n color: #ffffff;\n\n @media (max-width: 1000px) {\n font-size: 14px;\n line-height: 17px;\n }\n\n @media (max-width: 600px) {\n font-size: 16px;\n line-height: 20px;\n color: #0000ff;\n padding-left: 20px;\n }\n }\n }\n\n .loader {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .content {\n position: relative;\n left: calc(50% - 585px);\n width: calc(50% + 585px);\n\n @media (max-width: 1200px) {\n left: 10px;\n width: calc(100% - 10px);\n }\n\n .linkButton {\n &:hover {\n color: #fff;\n\n background-color: #000;\n\n span,\n svg {\n transform: translateX(-20px);\n }\n\n svg {\n opacity: 1;\n\n path {\n fill: #fff;\n }\n }\n }\n }\n }\n\n .sliderWrapper {\n .container {\n margin: 0;\n }\n\n .swiper {\n position: relative;\n\n @media (max-width: 1000px) {\n padding-left: 36px;\n }\n\n @media (max-width: 600px) {\n padding-left: 0;\n }\n }\n\n .swiper-slide {\n height: auto;\n width: 870px;\n border-radius: 10px;\n overflow: hidden;\n\n @media (max-width: 1000px) {\n width: 505px;\n }\n\n @media (max-width: 600px) {\n width: 240px;\n }\n\n a {\n display: flex;\n color: #fff;\n grid-template-columns: repeat(9, 1fr);\n border-radius: 10px;\n overflow: hidden;\n height: 100%;\n\n @media (max-width: 600px) {\n grid-template-columns: 1fr;\n flex-direction: column;\n }\n\n .textContainer {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n grid-column: 5/10;\n\n padding: 35px 30px;\n box-sizing: border-box;\n\n background: #0000ff;\n\n @media (max-width: 1000px) {\n padding: 20px 18px;\n }\n\n @media (max-width: 600px) {\n padding: 24px 20px;\n grid-column: 1/2;\n }\n\n .titleWrapper {\n @media (max-width: 600px) {\n display: grid;\n gap: 5px;\n }\n }\n\n .hashtag {\n font-weight: 400;\n font-size: 12px;\n line-height: 15px;\n margin-bottom: 14px;\n display: inline-block;\n\n @media (max-width: 1000px) {\n font-size: 7px;\n line-height: 9px;\n margin-bottom: 8px;\n }\n\n @media (max-width: 600px) {\n font-size: 8px;\n line-height: 10px;\n margin-bottom: 5px;\n }\n }\n\n h3 {\n font-weight: 500;\n font-size: 27px;\n line-height: 33px;\n\n @media (max-width: 1000px) {\n font-size: 16px;\n line-height: 20px;\n }\n\n @media (max-width: 600px) {\n font-size: 16px;\n line-height: 20px;\n margin-bottom: 27px;\n }\n }\n\n p {\n font-weight: 400;\n font-size: 19px;\n line-height: 23px;\n\n @media (max-width: 1000px) {\n font-size: 11px;\n line-height: 13px;\n }\n\n @media (max-width: 600px) {\n font-size: 10px;\n line-height: 12px;\n }\n }\n }\n\n .imageContainer {\n height: auto;\n grid-column: 1/5;\n width: 100%;\n max-width: 370px;\n\n @media (max-width: 600px) {\n height: 140px;\n }\n\n @media (max-width: 600px) {\n grid-column: 1/2;\n }\n\n img {\n height: 100%;\n width: 370px;\n object-fit: cover;\n\n @media (max-width: 1000px) {\n width: 213px;\n }\n\n @media (max-width: 600px) {\n width: 100%;\n height: 140px;\n object-fit: cover;\n transform: translateY(1px);\n }\n }\n }\n }\n }\n\n .lastSlide {\n padding: 35px 30px 57px;\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n border-radius: 10px;\n\n background: #0000ff;\n box-sizing: border-box;\n\n @media (max-width: 1000px) {\n padding: 20px 17px 32px;\n }\n\n .textContainer {\n display: grid;\n gap: 14px;\n color: #fff;\n\n .hashtag {\n font-weight: 400;\n font-size: 12px;\n line-height: 15px;\n\n @media (max-width: 1000px) {\n font-size: 7px;\n line-height: 9px;\n }\n }\n\n .description {\n font-weight: 500;\n font-size: 44px;\n line-height: 54px;\n\n @media (max-width: 1000px) {\n font-size: 25.3885px;\n line-height: 31px;\n }\n }\n }\n\n a {\n display: block;\n margin-left: auto;\n }\n\n a {\n @media (max-width: 600px) {\n width: 100%;\n\n .lastSlideButton {\n width: 100%;\n\n button {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n }\n }\n }\n\n .lastSlideButton {\n white-space: nowrap;\n\n @media (max-width: 600px) {\n .hashtag {\n font-size: 8px;\n line-height: 10px;\n }\n\n .description {\n font-size: 26px;\n line-height: 32px;\n }\n }\n\n button {\n @media only screen and (min-width: 600px) and (max-width: 1000px) {\n padding: 8px 26px;\n\n height: 28px;\n\n &:hover {\n span {\n transform: translateX(-12px);\n }\n\n svg {\n transform: translateX(-12px);\n }\n }\n\n span {\n font-size: 9.23218px;\n line-height: 11px;\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n }\n\n @media (max-width: 600px) {\n padding: 0;\n\n span {\n font-size: 16px;\n line-height: 20px;\n }\n }\n }\n }\n }\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { MainPageBlogStyles } from './MainPageBlogStyles';\nimport SwiperCenteredSlidesPerViewAuto from '../../swiperCenteterSlidesPerViewAuto/SwiperCenteredSlidesPerViewAuto';\nimport { SwiperSlide } from 'swiper/react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport ButtonWithArrowOnHover from '../../buttonWithArrowOnHover/ButtonWithArrowOnHover';\nimport { useAppSelector } from '../../../state/hooks';\nimport getTranslationsByLangOrEng from '../../../utils/getTranslationsByLangOrLang';\nimport { IPost } from '../../../enteties/IPost';\nimport { useIsFirstRender } from 'usehooks-ts';\nimport { MoonLoader } from 'react-spinners';\nimport defaultImage from '../../../assets/images/image-not-found.jpg';\nimport workWithResponse from '../../../functions/workWithResponse';\nimport { AdminApi } from '../../../api/adminApi';\nimport { customPostsUa, parseDate } from '../../../constants';\n\nfunction MainPageBlog() {\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n const isFirstRender = useIsFirstRender();\n\n const [posts, setPosts] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n async function getPosts() {\n setIsLoading(true);\n\n workWithResponse(() => AdminApi.getPosts(interfaceLanguage, { type: '2' }, 4, 0))\n .then((res) => {\n if (!res.error && res.data) {\n if (interfaceLanguage === 'uk') {\n setPosts(\n [...res.data.data, ...customPostsUa].sort(\n (a, b) => parseDate(b.createdAt).getTime()\n - parseDate(a.createdAt).getTime(),\n ).slice(0, 5),\n );\n } else {\n setPosts(res.data.data);\n }\n } else {\n console.warn('error');\n }\n })\n .finally(() => setIsLoading(false));\n }\n\n useEffect(() => {\n getPosts();\n }, []);\n\n useEffect(() => {\n if (!isFirstRender) {\n getPosts();\n }\n }, [interfaceLanguage]);\n\n return (\n \n
\n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_63')}\n \n
\n\n {!isLoading && posts ? (\n
\n 1190\n ? (window.innerWidth - 1190) / 2\n : window.innerWidth > 600\n ? 46\n : 10\n }\n >\n {posts.map((item) => (\n \n \n
\n \n
\n\n
\n
\n

{item.contentTitle}

\n
\n\n

\n {item.previewDescription.slice(0, 170)}\n {item.previewDescription.length > 170 && '...'}\n

\n
\n \n
\n ))}\n \n
\n \n {getTranslationsByLangOrEng(interfaceLanguage, 'main_64')}\n \n
\n \n {}}\n arrowColor=\"#000000\"\n background=\"src/components/mainPageComponents/mainPageBlog/MainPageBlog#CBCBCB\"\n hoverBackground=\"#FFF\"\n hoverTextColor=\"#000000\"\n text={getTranslationsByLangOrEng(\n interfaceLanguage,\n 'find_out_more',\n )}\n className=\"lastSlideButton\"\n />\n \n
\n \n
\n ) : (\n
\n \n
\n )}\n
\n );\n}\n\nexport default MainPageBlog;\n","import React from 'react';\nimport { MainMethodologiesStyles } from './MainMethodologiesStyles';\nimport { mainPageMethodologiesData } from '../../../constants';\nimport MainTabsSection from '../mainTabsSection/MainTabsSection';\nimport { useAppSelector } from '../../../state/hooks';\nimport getTranslationsByLangOrEng from '../../../utils/getTranslationsByLangOrLang';\n\nfunction MainMethodologies() {\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n\n return (\n \n \n \n );\n}\n\nexport default MainMethodologies;\n","import styled from 'styled-components';\n\nexport const MainProductsStyles = styled.div``;\n","import React from 'react';\nimport { MainProductsStyles } from './MainProductsStyles';\nimport { mainPageProductsData } from '../../../constants';\nimport MainTabsSection from '../mainTabsSection/MainTabsSection';\nimport { useAppSelector } from '../../../state/hooks';\nimport getTranslationsByLangOrEng from '../../../utils/getTranslationsByLangOrLang';\n\nfunction MainProducts() {\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n\n return (\n \n \n \n );\n}\n\nexport default MainProducts;\n","import React, { useState } from 'react';\nimport { MainStyles } from './MainStyles';\nimport MainPageBanner from '../../components/mainPageComponents/mainPageBanner/MainPageBanner';\nimport MainPageWhyUs from '../../components/mainPageComponents/mainPageWhyUs/MainPageWhyUs';\nimport MainPageBlog from '../../components/mainPageComponents/mainPageBlog/MainPageBlog';\nimport PreviewCasesSection from '../../components/mainPageComponents/mainPageCases/PreviewCasesSection';\nimport MainMethodologies from '../../components/mainPageComponents/mainMethodologies/MainMethodologies';\nimport MainProducts from '../../components/mainPageComponents/mainProducts/MainProducts';\nimport { Balls } from '../../components/balls/Balls';\nimport { mainPageBallsData } from '../../constants';\nimport { InView } from 'react-intersection-observer';\nimport EmptyHeaderBlockOnBlackPage from '../../components/emptyHeaderBlockOnBlackPage/EmptyHeaderBlockOnBlackPage';\nimport { useAppSelector } from '../../state/hooks';\nimport getTranslationsByLangOrEng from '../../utils/getTranslationsByLangOrLang';\nimport MetaFromApi from '../../components/metaFromApi/MetaFromApi';\nimport { MainMarketResearch } from '../../components';\n\nexport default function Main() {\n const [ballsVisible, setBallsVisible] = useState(false);\n\n const { interfaceLanguage } = useAppSelector((state) => state.languages);\n\n return (\n \n \n\n \n \n \n \n \n \n
\n
\n
\n 75%\n\n

{getTranslationsByLangOrEng(interfaceLanguage, 'main_1')}

\n
\n\n (inView ? setBallsVisible(true) : '')}\n >\n {getTranslationsByLangOrEng(interfaceLanguage, 'ad_testing_4')}\n \n
\n\n {ballsVisible && (\n \n )}\n
\n \n \n
\n );\n}\n"],"names":["getWordWidth","word","fontSizes","screenWidth","span","document","createElement","style","visibility","whiteSpace","position","fontSize","desktop","mobile","innerText","body","appendChild","width","getBoundingClientRect","removeChild","Balls","bgColor","ballBgColor","ballsData","bodyHeight","boxRef","useRef","canvasRef","useState","window","innerWidth","setWidth","interfaceLanguage","useAppSelector","state","languages","useEffect","updateWindowDimensions","newWidth","addEventListener","removeEventListener","ratio","devicePixelRatio","createImage","text","color","borderColor","borderGradient","drawing","height","gradient","textByRows","ballWidth","textSplittedBySpace","split","result","row","totalRowWidth","i","length","wordWidth","push","getSplittedWordArray","textRows","textHeight","textStartPosition","ctx","getContext","imageSmoothingEnabled","createConicGradient","colorPart","forEach","index","addColorStop","fillStyle","beginPath","arc","Math","PI","closePath","fill","font","textAlign","map","fillText","parseInt","String","lineWidth","strokeStyle","stroke","toDataURL","console","log","Engine","Matter","Render","World","Bodies","Mouse","MouseConstraint","bodyHeightByScreenSize","tablet","engine","create","render","element","current","canvas","options","background","wireframes","pixelRatio","add","world","rectangle","isStatic","visible","ball","setTimeout","circle","random","restitution","sprite","texture","border","borderImage","xScale","yScale","mouse","mouseConstraint","constraint","damping","stiffness","mousewheel","touchStart","event","preventDefault","delta","touches","clientY","scrollTo","scrollY","runner","isFixed","Runner","run","clear","stop","remove","className","ref","PreviewCasesSectionStyles","styled","theme","isLoading","setIsLoading","loadingError","setLoadingError","posts","setPosts","workWithResponse","AdminApi","type","then","error","postsData","data","warn","getPosts","getTranslationsByLangOrEng","SwiperCenteredSlidesPerViewAuto","loop","buttonsIconsColor","item","to","slug","src","coverImage","defaultImage","alt","contentTitle","ArrowRightSmall","ButtonWithArrowOnHover","textColor","onClick","arrowColor","hoverBackground","hoverTextColor","Loader","MainStyles","MainPageBannerStyles","controls","autoPlay","muted","playsInline","backgroundVideo","elem","getElementById","localStorage","setItem","removeItem","scrollIntoView","inline","block","behavior","MainPageWhyUsStyles","titleHeight","setTitleHeight","titleRef","offsetHeight","transform","id","bgVideo","disabledPrev","disabledNext","MainPageBlogStyles","isFirstRender","useIsFirstRender","res","customPostsUa","sort","a","b","parseDate","createdAt","getTime","slice","finally","centeredSlides","freeMode","linkButtonText","link","offsetRight","previewDescription","MoonLoader","size","MainMethodologiesStyles","MainTabsSection","colorTheme","tabsData","mainPageMethodologiesData","description","signature","MainProductsStyles","mainPageProductsData","Main","ballsVisible","setBallsVisible","MetaFromApi","EmptyHeaderBlockOnBlackPage","as","rootMargin","onChange","inView","entry","mainPageBallsData","PreviewCasesSection"],"sourceRoot":""}