1function isMobileNumbers(){if(document.documentElement.clientWidth<=1024){return!0} 2return!1} 3function animateAbout(){gsap.registerPlugin(ScrollTrigger);var sections01=[{selector:"#marked-text-01 .animate-text .highlight",trigger:"#marked-text-01",bar:"#marked-text-01 .cap-pink",image:"#marked-text-01 .set-background-image .elementor-widget-image"},{selector:"#marked-text-02 .animate-text-02 .highlight",trigger:"#marked-text-02",bar:"#marked-text-02 .cap-pink",image:"#marked-text-02 .set-background-image .elementor-widget-image"}];var startNumber=190;if(isMobileNumbers()){startNumber=70} 4sections01.forEach(section=>{var highlights=document.querySelectorAll(section.selector);var tl=gsap.timeline({scrollTrigger:{trigger:section.trigger,start:"top-="+startNumber+"px top",end:"+=200%",pin:!0,scrub:!0,markers:!1,onEnter:()=>tl.scrollTrigger.spacer.style.backgroundColor="#CCF1FF",}});tl.scrollTrigger.spacer.style.backgroundColor="#CCF1FF";highlights.forEach((highlight,i,highlightsArray)=>{highlight.style.color="#2D1DA3";tl.fromTo(highlight,{color:"#2D1DA3",opacity:1},{color:"#FF2C95",duration:1,ease:"power3.out",}).to(highlight,{color:"#2D1DA3",duration:1,ease:"power3.in"},`-=0.2`)});if(highlights.length>0){let lastHighlight=highlights[highlights.length-1];tl.to(lastHighlight,{color:"#2D1DA3",duration:0.2,ease:"power3.in"})} 5let lb=gsap.timeline({scrollTrigger:{trigger:section.trigger,ease:"none",start:"top-=80% center",end:`+=280%`,scrub:!0,pin:!1,}});lb.from(section.bar,{width:"0%",ease:"none",}).to(section.bar,{width:"100%",ease:"none",});let tli=gsap.timeline({scrollTrigger:{trigger:section.trigger,start:"top-=80% center",end:`+=280%`,scrub:!0,pin:!1,},});tli.from(section.image,{yPercent:0,ease:"none",}).to(section.image,{yPercent:-30,ease:"none",})})} 6function getElementOffsetFromTop(element){const rect=element.getBoundingClientRect();const scrollTop=window.pageYOffset||document.documentElement.scrollTop;return rect.top+scrollTop} 7function animationAbout2(){const aimSection=document.querySelector('.container-hotizontal-scroll');let kWidth=1 8if(document.documentElement.clientWidth<=1024){kWidth=0.6} 9gsap.registerPlugin(ScrollTrigger,MotionPathPlugin);const sections=gsap.utils.toArray(".panel-horizontal");if(!document.querySelector(".container-hotizontal-scroll")){return} 10let chartWidth=document.querySelector(".container-hotizontal-scroll").offsetWidth;const chartHeight=document.querySelector(".container-hotizontal-scroll").offsetHeight;const windowWidth=window.innerWidth;const aspect=Math.min((window.innerHeight-70)/chartHeight,1) 11console.log('aspect',aspect,window.innerHeight,chartHeight) 12if(aspect<1){document.querySelector(".container-hotizontal-scroll").style.transform=`scale(${aspect})`} 13const xPercent=(windowWidth/(chartWidth*aspect*kWidth)-1)*100;gsap.registerEase("customPauseEase",function(progress){const startPause=(windowWidth*0.6)/chartWidth;const endPause=1-startPause;if(progress<startPause){return 0}else if(progress>endPause){return 1}else{return(progress-startPause)/(endPause-startPause)}});var startTop=100-100*aspect;var setTop='top';if(isMobileNumbers()){startTop=100-100*aspect;setTop='top-=70'} 14const floatingButton=document.createElement('div');floatingButton.id='floating-button';floatingButton.innerHTML=` 15 <svg width="45" height="45" viewBox="0 0 45 45" fill="none" xmlns="http://www.w3.org/2000/svg"> 16 <rect width="45" height="45" rx="22.5" fill="url(#a)"/> 17 <path d="M22.311 30.737l-2.615-2.615.005-.005-7.838-7.865 2.615-2.615 7.834 7.86 7.827-7.853 2.615 2.615-7.831 7.858.003.004-1.981 1.98-.634.636Z" fill="#fff"/> 18 <defs> 19 <linearGradient id="a" x1="22.5" y1="0" x2="22.5" y2="45" gradientUnits="userSpaceOnUse"> 20 <stop stop-color="#FF2C95"/> 21 <stop offset="1" stop-color="#F59E22"/> 22 </linearGradient> 23 </defs> 24 </svg> 25 Skip Timeline 26 `;floatingButton.style.cssText=` 27 position: fixed; 28 bottom: 12px; 29 background-color: transparent; 30 color: white; 31 padding: 0; 32 er-radius: 50px; 33 /* box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px; */ 34 cursor: pointer; 35 opacity: 1; 36 opacity:0; 37 z-index: 1000; 38 left: 72px; 39 display: flex; 40 align-items: center; 41 gap: 10px; 42 color: #FF2C95; 43 text-transform: uppercase; 44 font-weight: 600; 45 `;document.body.appendChild(floatingButton);floatingButton.addEventListener('click',()=>{jQuery('html, body').animate({scrollTop:jQuery('#section-investors').offset().top-100},800)});console.log('Show/Hide Floating Button Based on ScrollTrigger with fade animations');gsap.to(floatingButton,{scrollTrigger:{trigger:".container-hotizontal-scroll",start:`top-=${startTop} ${setTop}`,end:()=>"+="+(chartWidth*kWidth),onEnter:()=>gsap.to(floatingButton,{duration:0.5,opacity:1,bottom:"12px",ease:"power2.out"}),onLeave:()=>gsap.to(floatingButton,{duration:0.5,opacity:0,bottom:"-50px",ease:"power2.in"}),onEnterBack:()=>gsap.to(floatingButton,{duration:0.5,opacity:1,bottom:"12px",ease:"power2.out"}),onLeaveBack:()=>gsap.to(floatingButton,{duration:0.5,opacity:0,bottom:"-50px",ease:"power2.in"}),}}
45);gsap.to(sections,{xPercent:xPercent*kWidth,ease:"customPauseEase",scrollTrigger:{trigger:".container-hotizontal-scroll",pin:!0,scrub:!0,start:`top-=${startTop} `+setTop,end:()=>"+="+(chartWidth*kWidth)}});console.log('drawLine');const drawLine=(line,i)=>{const container=sections[i];const rect=container.getBoundingClientRect();const scrollTop=window.scrollY||window.pageYOffset;let startPoint=rect.top+scrollTop;if(isMobileNumbers()){startPoint=rect.top+scrollTop} 46const lineLength=line.getTotalLength();line.style.strokeDasharray=lineLength;line.style.strokeDashoffset=lineLength;gsap.fromTo(line,{strokeDashoffset:lineLength},{strokeDashoffset:0,ease:'none',scrollTrigger:{start:()=>parseInt(startPoint),end:()=>`+=${container.offsetWidth * kWidth}`,scrub:!0,onUpdate:function(self){const progress=self.progress;const gradient=document.querySelector('#gradient1');const x1Start=0;const x1End=70;const x2Start=100;const x2End=140;const x1Value=x1Start+(x1End-x1Start)*progress;const x2Value=x2Start+(x2End-x2Start)*progress;gradient.setAttribute('x1',`${x1Value}%`);gradient.setAttribute('x2',`${x2Value}%`);updateText()}}});function updateText(){const currentOffset=parseFloat(line.style.strokeDashoffset);const drawnLength=lineLength-currentOffset;const allActions=document.querySelectorAll('.actions');const allYears=document.querySelectorAll('.year');allActions.forEach((action)=>{action.classList.remove('show') 47const left=action.dataset.left 48if(left<drawnLength*0.91){action.classList.add('show')}});allYears.forEach(year=>{year.classList.remove('show') 49const left=year.dataset.left 50if(left<drawnLength*0.91){year.classList.add('show')}})}};const svgs=gsap.utils.toArray("svg.svg-1 path");svgs.forEach(drawLine)} 51function managementAnimation(){const arrowBlock=`<div class="custom-arrow-block"><div class="c-arrow arrow-left"><</div><div class="c-arrow arrow-right">></div> </div>` 52const parent=document.querySelector('.management-section-1') 53if(!document.querySelector('.management-section-1 .swiper')){return} 54const arrowLeft=document.querySelector('.custom-arrow-block .arrow-left') 55const arrowRight=document.querySelector('.custom-arrow-block .arrow-right') 56const swiperManagementContainer=document.querySelector('.management-section-1 .swiper').swiper;if(!swiperManagementContainer){arrowLeft.style.display='none';arrowRight.style.display='none';return} 57arrowLeft.addEventListener('click',()=>{swiperManagementContainer.slidePrev()}) 58arrowRight.addEventListener('click',()=>{swiperManagementContainer.slideNext()}) 59const startPoint={x:null,y:null} 60parent.addEventListener('mousedown',(e)=>{startPoint.x=e.clientX;startPoint.y=e.clientY});parent.addEventListener('mouseup',(e)=>{const endX=e.clientX;const endY=e.clientY;const diffX=endX-startPoint.x;const diffY=endY-startPoint.y;if(Math.abs(diffX)>Math.abs(diffY)){if(diffX>0){swiperManagementContainer.slidePrev()}else{swiperManagementContainer.slideNext()}}});window.addEventListener('wheel',(e)=>{if(isElementInViewport(parent)){if(Math.abs(e.deltaY)<Math.abs(e.deltaX)){if(e.deltaX>1){swiperManagementContainer.slideNext()} 61if(e.deltaX<-1){swiperManagementContainer.slidePrev()}}}});function isElementInViewport(el){const rect=el.getBoundingClientRect();return(rect.top>=0&&rect.left>=0&&rect.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&rect.right<=(window.innerWidth||document.documentElement.clientWidth))}} 62jQuery(window).on('elementor/frontend/init',function(){window.onload=function(){conosole.log('elementor/frontend/init');const pictureElement=document.querySelector('picture.attachment-large.size-large.wp-image-52673');if(pictureElement){pictureElement.removeAttribute('loading');const imgElement=pictureElement.querySelector('img');if(imgElement){imgElement.removeAttribute('loading');const src=imgElement.getAttribute('src');imgElement.setAttribute('src',src)}} 63function getURLParams(){const urlParams=new URLSearchParams(window.location.search);return urlParams} 64const img=new Image();img.src="https://optibus.com/file/2024/10/Placeholder-Alt.png";img.onload=()=>console.log("loaded");img.onerror=err=>console.error(err);const params=getURLParams();conosole.log('elementor/frontend/init');
64if(!params.has('animateAbout')){} 65document.querySelectorAll('.capsule').forEach(element=>{element.style.display='none'})};window.requestAnimationFrame(animationAbout2);window.requestAnimationFrame(managementAnimation);window.requestAnimationFrame(otherFunctions)});function otherFunctions(){if(jQuery('.awards-gallery .swiper').length>0&&window.innerWidth>767&&jQuery('.awards-gallery .swiper')[0].swiper){jQuery('.awards-gallery .swiper')[0].swiper.destroy()} 66if(!document.querySelector('.management-section-the-loop .swiper')){return} 67const swiper=document.querySelector('.management-section-the-loop .swiper').swiper;if(!swiper){return} 68swiper.on('slideChange',function(){toggleLeftArrow(swiper)});toggleLeftArrow(swiper);function toggleLeftArrow(swiperInstance){var screenWidth=jQuery(window).width();if((screenWidth<767&&swiperInstance.activeIndex<=1)||(screenWidth<767&&swiperInstance.activeIndex>=12)||(screenWidth>=767&&swiperInstance.activeIndex<=6)||(screenWidth>=767&&swiperInstance.activeIndex>=17)){jQuery('.arrow-left').css('opacity',0.5);jQuery('.left-arrow-box .cover-arrow').css('display',"block")}else{jQuery('.arrow-left').css('opacity',1);jQuery('.left-arrow-box .cover-arrow').css('display',"none")}}} 69function applyResponsiveClipPath(imageCoverCloud){const clipPathValues={desktop:'inset(20.73% 28.8% 60.28% 60.84%)',tablet:'inset(18.5% 38.55% 58% 55.8%)',mobile:'inset(16.73% 21.2% 60.28% 64.64%)'};function getCurrentScreenSize(){const width=window.innerWidth;if(width<=768){return'mobile'}else if(width<=1024){return'tablet'}else{return'desktop'}} 70function updateClipPath(){const screenSize=getCurrentScreenSize();const clipPath=clipPathValues[screenSize];imageCoverCloud.style.clipPath=clipPath;console.log(`Responsive clip-path applied for ${screenSize}:`,clipPath)} 71updateClipPath();let resizeTimeout;window.addEventListener('resize',()=>{clearTimeout(resizeTimeout);resizeTimeout=setTimeout(updateClipPath,100)})} 72function createDraggableMask(targetSelector){const targetElement=document.querySelector(targetSelector);if(!targetElement)return;const rect=targetElement.getBoundingClientRect();const scrollTop=window.pageYOffset||document.documentElement.scrollTop;const scrollLeft=window.pageXOffset||document.documentElement.scrollLeft;const maskContainer=document.createElement('div');maskContainer.id='cloud-mask-container';maskContainer.style.cssText=` 73 position: absolute; 74 top: ${rect.top + scrollTop}px; 75 left: ${rect.left + scrollLeft}px; 76 width: ${rect.width}px; 77 height: ${rect.height}px; 78 pointer-events: none; 79 z-index: 10000; 80 border: 2px dashed #ff2c95; 81 background: rgba(255, 44, 149, 0.1); 82 `;const maskSquare=document.createElement('div');maskSquare.id='cloud-mask-square';maskSquare.style.cssText=` 83 position: absolute; 84 top: 20%; 85 left: 20%; 86 width: 60%; 87 height: 60%; 88 background: rgba(255, 44, 149, 0.3); 89 border: 2px solid #ff2c95; 90 cursor: move; 91 pointer-events: all; 92 box-shadow: 0 0 10px rgba(255, 44, 149, 0.5); 93 `;const handles=['nw','ne','sw','se'];handles.forEach(handle=>{const resizeHandle=document.createElement('div');resizeHandle.className=`resize-handle ${handle}`;resizeHandle.style.cssText=` 94 position: absolute; 95 width: 10px; 96 height: 10px; 97 background: #ff2c95; 98 border: 1px solid white; 99 pointer-events: all; 100 z-index: 10001; 101 `;switch(handle){case 'nw':resizeHandle.style.cssText+='top: -5px; left: -5px; cursor: nw-resize;';break;case 'ne':resizeHandle.style.cssText+='top: -5px; right: -5px; cursor: ne-resize;';break;case 'sw':resizeHandle.style.cssText+='bottom: -5px; left: -5px; cursor: sw-resize;';break;case 'se':resizeHandle.style.cssText+='bottom: -5px; right: -5px; cursor: se-resize;';break} 102maskSquare.appendChild(resizeHandle)});const controlPanel=document.createElement('div');controlPanel.id='mask-control-panel';controlPanel.style.cssText=` 103 position: fixed; 104 top: 20px; 105 right: 20px; 106 background: white; 107 padding: 15px; 108 border: 2px solid #ff2c95; 109 border-radius: 8px; 110 box-shadow: 0 4px 12px rgba(0,0,0,0.15); 111 z-index: 10002; 112 font-family: Arial, sans-serif; 113 min-width: 200px; 114 `;controlPanel.innerHTML=` 115 <h4 style="margin: 0 0 10px 0; color: #ff2c95;">Image Cover Mask Controls</h4> 116 <p style="margin: 0 0 10px 0; font-size: 11px; color: #666;">Only the marked area will be VISIBLE</p> 117 <button id="apply-mask-btn" style="background: #ff2c95; color: white; border: none; padding: 8px 12px; border-radius: 4px; cursor: pointer; margin-right: 5px;">Show Area</button> 118 <button id="remove-mask-btn" style="background: #ccc; color: #333; border: none; padding: 8px 12px; border-radius: 4px; cursor: pointer;">Remove Mask</button> 119 <div id="mask-coordinates" style="margin-top: 10px; font-size: 12px; color: #666;"></div> 120 `;maskContainer.appendChild(maskSquare);document.body.appendChild(maskContainer);document.body.appendChild(controlPanel);let isDragging=!1;let isResizing=!1;let currentHandle=null;let startX,startY,startLeft,startTop,startWidth,startHeight;maskSquare.addEventListener('mousedown',(e)=>{if(e.target.classList.contains('resize-handle')){isResizing=!0;currentHandle=e.target.classList[1];const rect=maskSquare.getBoundingClientRect();startX=e.clientX;startY=e.clientY;startLeft=rect.left;startTop=rect.top;startWidth=rect.width;startHeight=rect.height}else{isDragging=!0;startX=e.clientX-maskSquare.offsetLeft;startY=e.clientY-maskSquare.offsetTop} 121e.preventDefault()});document.addEventListener('mousemove',(e)=>{if(isDragging){const newLeft=e.clientX-startX;const newTop=e.clientY-startY;const maxLeft=maskContainer.offsetWidth-maskSquare.offsetWidth;const maxTop=maskContainer.offsetHeight-maskSquare.offsetHeight;maskSquare.style.left=Math.max(0,Math.min(newLeft,maxLeft))+'px';maskSquare.style.top=Math.max(0,Math.min(newTop,maxTop))+'px';updateCoordinates()}else if(isResizing){const dx=e.clientX-startX;const dy=e.clientY-startY;let newLeft=startLeft;let newTop=startTop;let newWidth=startWidth;let newHeight=startHeight;switch(currentHandle){case 'nw':newLeft=startLeft+dx;newTop=startTop+dy;newWidth=startWidth-dx;newHeight=startHeight-dy;break;
121case 'ne':newTop=startTop+dy;newWidth=startWidth+dx;newHeight=startHeight-dy;break;case 'sw':newLeft=startLeft+dx;newWidth=startWidth-dx;newHeight=startHeight+dy;break;case 'se':newWidth=startWidth+dx;newHeight=startHeight+dy;break} 122if(newWidth>=30&&newHeight>=30){const containerRect=maskContainer.getBoundingClientRect();const relativeLeft=newLeft-containerRect.left;const relativeTop=newTop-containerRect.top;maskSquare.style.left=Math.max(0,Math.min(relativeLeft,containerRect.width-newWidth))+'px';maskSquare.style.top=Math.max(0,Math.min(relativeTop,containerRect.height-newHeight))+'px';maskSquare.style.width=newWidth+'px';maskSquare.style.height=newHeight+'px';updateCoordinates()}}});document.addEventListener('mouseup',()=>{isDragging=!1;isResizing=!1;currentHandle=null});function updateCoordinates(){const left=Math.round(parseFloat(maskSquare.style.left||0));const top=Math.round(parseFloat(maskSquare.style.top||0));const width=Math.round(maskSquare.offsetWidth);const height=Math.round(maskSquare.offsetHeight);document.getElementById('mask-coordinates').innerHTML=` 123 Position: ${left}px, ${top}px<br> 124 Size: ${width}px à ${height}px 125 `} 126document.getElementById('apply-mask-btn').addEventListener('click',()=>{const left=parseFloat(maskSquare.style.left||0);const top=parseFloat(maskSquare.style.top||0);const width=maskSquare.offsetWidth;const height=maskSquare.offsetHeight;const imageCoverCloud=document.querySelector('.image-cover-cloud');if(!imageCoverCloud){alert('Image cover cloud element not found!');return} 127const leftPercent=(left/maskContainer.offsetWidth)*100;const topPercent=(top/maskContainer.offsetHeight)*100;const rightPercent=((maskContainer.offsetWidth-left-width)/maskContainer.offsetWidth)*100;const bottomPercent=((maskContainer.offsetHeight-top-height)/maskContainer.offsetHeight)*100;const clipPath=`inset(${topPercent}% ${rightPercent}% ${bottomPercent}% ${leftPercent}%)`;imageCoverCloud.style.clipPath=clipPath;const existingMask=document.getElementById('fixed-cloud-mask');if(existingMask){existingMask.remove()} 128console.log('Clip-path applied to .image-cover-cloud to show selected area');console.log('Clip-path:',clipPath);console.log('Mask coordinates (%):',{left:leftPercent,top:topPercent,right:rightPercent,bottom:bottomPercent,width:((width/maskContainer.offsetWidth)*100),height:((height/maskContainer.offsetHeight)*100)});document.getElementById('apply-mask-btn').textContent='Update Visible Area';alert('Mask applied! Only the selected area of the image cover is now visible.')});document.getElementById('remove-mask-btn').addEventListener('click',()=>{targetElement.style.clipPath='';const imageCoverCloud=document.querySelector('.image-cover-cloud');if(imageCoverCloud){imageCoverCloud.style.clipPath=''} 129const cloudElement=document.querySelector('.cloud-sidetoside');if(cloudElement){cloudElement.style.mask='';cloudElement.style.webkitMask='';cloudElement.style.maskComposite='';cloudElement.style.webkitMaskComposite=''} 130const fixedMask=document.getElementById('fixed-cloud-mask');if(fixedMask){fixedMask.remove()} 131maskContainer.remove();controlPanel.remove();console.log('All masks and overlays removed')});updateCoordinates();console.log('Draggable mask overlay created for',targetSelector)} 132function createLeftCloudMask(targetSelector){const targetElement=document.querySelector(targetSelector);if(!targetElement)return;const rect=targetElement.getBoundingClientRect();const scrollTop=window.pageYOffset||document.documentElement.scrollTop;const scrollLeft=window.pageXOffset||document.documentElement.scrollLeft;const maskContainer=document.createElement('div');maskContainer.id='left-cloud-mask-container';maskContainer.style.cssText=` 133 position: absolute; 134 top: ${rect.top + scrollTop}px; 135 left: ${rect.left + scrollLeft}px; 136 width: ${rect.width}px; 137 height: ${rect.height}px; 138 pointer-events: none; 139 z-index: 10000; 140 border: 2px dashed #ff2c95; 141 background: rgba(255, 44, 149, 0.1); 142 `;const maskSquare=document.createElement('div');maskSquare.id='left-cloud-mask-square';maskSquare.style.cssText=` 143 position: absolute; 144 top: 20%; 145 left: 20%; 146 width: 60%; 147 height: 60%; 148 background: rgba(255, 255, 255, 0.7); 149 border: 2px solid #ff2c95; 150 cursor: move; 151 pointer-events: all; 152 box-shadow: 0 0 10px rgba(255, 44, 149, 0.5); 153 `;const handles=['nw','ne','sw','se'];
153handles.forEach(handle=>{const resizeHandle=document.createElement('div');resizeHandle.className=`resize-handle ${handle}`;resizeHandle.style.cssText=` 154 position: absolute; 155 width: 10px; 156 height: 10px; 157 background: #ff2c95; 158 border: 1px solid white; 159 pointer-events: all; 160 z-index: 10001; 161 `;switch(handle){case 'nw':resizeHandle.style.cssText+='top: -5px; left: -5px; cursor: nw-resize;';break;case 'ne':resizeHandle.style.cssText+='top: -5px; right: -5px; cursor: ne-resize;';break;case 'sw':resizeHandle.style.cssText+='bottom: -5px; left: -5px; cursor: sw-resize;';break;case 'se':resizeHandle.style.cssText+='bottom: -5px; right: -5px; cursor: se-resize;';break} 162maskSquare.appendChild(resizeHandle)});const controlPanel=document.createElement('div');controlPanel.id='left-mask-control-panel';controlPanel.style.cssText=` 163 position: fixed; 164 top: 20px; 165 left: 20px; 166 background: white; 167 padding: 15px; 168 border: 2px solid #ff2c95; 169 border-radius: 8px; 170 box-shadow: 0 4px 12px rgba(0,0,0,0.15); 171 z-index: 10002; 172 font-family: Arial, sans-serif; 173 min-width: 200px; 174 `;controlPanel.innerHTML=` 175 <h4 style="margin: 0 0 10px 0; color: #ff2c95;">Left Cloud Hide Controls</h4> 176 <p style="margin: 0 0 10px 0; font-size: 11px; color: #666;">The marked area will be HIDDEN (white overlay)</p> 177 <button id="apply-left-mask-btn" style="background: #ff2c95; color: white; border: none; padding: 8px 12px; border-radius: 4px; cursor: pointer; margin-right: 5px;">Hide Area</button> 178 <button id="remove-left-mask-btn" style="background: #ccc; color: #333; border: none; padding: 8px 12px; border-radius: 4px; cursor: pointer;">Remove Mask</button> 179 <div id="left-mask-coordinates" style="margin-top: 10px; font-size: 12px; color: #666;"></div> 180 `;maskContainer.appendChild(maskSquare);document.body.appendChild(maskContainer);document.body.appendChild(controlPanel);let isDragging=!1;let isResizing=!1;let currentHandle=null;let startX,startY,startLeft,startTop,startWidth,startHeight;maskSquare.addEventListener('mousedown',(e)=>{if(e.target.classList.contains('resize-handle')){isResizing=!0;currentHandle=e.target.classList[1];const rect=maskSquare.getBoundingClientRect();startX=e.clientX;startY=e.clientY;startLeft=rect.left;startTop=rect.top;startWidth=rect.width;startHeight=rect.height}else{isDragging=!0;startX=e.clientX-maskSquare.offsetLeft;startY=e.clientY-maskSquare.offsetTop} 181e.preventDefault()});document.addEventListener('mousemove',(e)=>{if(isDragging){const newLeft=e.clientX-startX;const newTop=e.clientY-startY;const maxLeft=maskContainer.offsetWidth-maskSquare.offsetWidth;const maxTop=maskContainer.offsetHeight-maskSquare.offsetHeight;maskSquare.style.left=Math.max(0,Math.min(newLeft,maxLeft))+'px';maskSquare.style.top=Math.max(0,Math.min(newTop,maxTop))+'px';updateLeftCoordinates()}else if(isResizing){const dx=e.clientX-startX;const dy=e.clientY-startY;let newLeft=startLeft;let newTop=startTop;let newWidth=startWidth;let newHeight=startHeight;switch(currentHandle){case 'nw':newLeft=startLeft+dx;newTop=startTop+dy;newWidth=startWidth-dx;newHeight=startHeight-dy;break;case 'ne':newTop=startTop+dy;newWidth=startWidth+dx;newHeight=startHeight-dy;break;case 'sw':newLeft=startLeft+dx;newWidth=startWidth-dx;newHeight=startHeight+dy;break;case 'se':newWidth=startWidth+dx;newHeight=startHeight+dy;break} 182if(newWidth>=30&&newHeight>=30){const containerRect=maskContainer.getBoundingClientRect();const relativeLeft=newLeft-containerRect.left;const relativeTop=newTop-containerRect.top;maskSquare.style.left=Math.max(0,Math.min(relativeLeft,containerRect.width-newWidth))+'px';maskSquare.style.top=Math.max(0,Math.min(relativeTop,containerRect.height-newHeight))+'px';maskSquare.style.width=newWidth+'px';maskSquare.style.height=newHeight+'px';updateLeftCoordinates()}}});document.addEventListener('mouseup',()=>{isDragging=!1;isResizing=!1;currentHandle=null});function updateLeftCoordinates(){const left=Math.round(parseFloat(maskSquare.style.left||0));const top=Math.round(parseFloat(maskSquare.style.top||0));const width=Math.round(maskSquare.offsetWidth);const height=Math.round(maskSquare.offsetHeight);document.getElementById('left-mask-coordinates').innerHTML=` 183 Position: ${left}px, ${top}px<br> 184 Size: ${width}px à ${height}px 185 `} 186document.getElementById('apply-left-mask-btn').addEventListener('click',()=>{const left=parseFloat(maskSquare.style.left||0);const top=parseFloat(maskSquare.style.top||0);const width=maskSquare.offsetWidth;const height=maskSquare.offsetHeight;const viewportWidth=window.innerWidth;
186const viewportHeight=window.innerHeight;const cloudRect=targetElement.getBoundingClientRect();const leftPercent=((cloudRect.left+left)/viewportWidth)*100;const topPercent=((cloudRect.top+top)/viewportHeight)*100;const widthPercent=(width/viewportWidth)*100;const heightPercent=(height/viewportHeight)*100;const fixedWhiteOverlay=document.createElement('div');fixedWhiteOverlay.id='fixed-left-cloud-mask';fixedWhiteOverlay.style.cssText=` 187 position: fixed; 188 top: ${topPercent}%; 189 left: ${leftPercent}%; 190 width: ${widthPercent}%; 191 height: ${heightPercent}%; 192 background: white; 193 z-index: 9999; 194 pointer-events: none; 195 opacity: 1; 196 `;const existingMask=document.getElementById('fixed-left-cloud-mask');if(existingMask){existingMask.remove()} 197document.body.appendChild(fixedWhiteOverlay);console.log('Fixed white overlay applied to left cloud with percentages:');console.log(`Position: top: ${topPercent.toFixed(2)}%, left: ${leftPercent.toFixed(2)}%`);console.log(`Size: width: ${widthPercent.toFixed(2)}%, height: ${heightPercent.toFixed(2)}%`);console.log('CSS values:',{top:`${topPercent.toFixed(2)}%`,left:`${leftPercent.toFixed(2)}%`,width:`${widthPercent.toFixed(2)}%`,height:`${heightPercent.toFixed(2)}%`});document.getElementById('apply-left-mask-btn').textContent='Update Hidden Area';alert('White overlay applied with percentages! Check console for percentage values.')});document.getElementById('remove-left-mask-btn').addEventListener('click',()=>{const fixedMask=document.getElementById('fixed-left-cloud-mask');if(fixedMask){fixedMask.remove()} 198maskContainer.remove();controlPanel.remove();console.log('Left cloud mask and overlay removed')});updateLeftCoordinates();console.log('Draggable hide mask created for left cloud')} 199jQuery(document).ready(function(){jQuery(".color-change-on-hover .elementor-heading-title").hover(function(){jQuery(this).css("color","#FF2C95")},function(){jQuery(this).css("color","#FD78B2")})});jQuery(document).ready(function(){setTimeout(function(){const element=jQuery(".white-square > *");const targetElement=jQuery(".optibus-is-optimizing");if(element.length>0&&targetElement.length>0){element.css({width:"0",height:"0",padding:"0 15px 0 11px"});element.find('.elementor-element').css({opacity:0,});targetElement.css({position:"absolute",right:"0px",left:"auto",opacity:"0"});let observer=new IntersectionObserver(function(entries){entries.forEach(entry=>{if(entry.isIntersecting){element.animate({width:"100%"},700,"swing",function(){element.animate({height:"100%"},500,"swing",function(){element.find('.elementor-widget-heading, .elementor-widget-spacer').animate({opacity:1},300,function(){element.animate({padding:"25px 15px 20px 11px",opacity:1},400,function(){if(document.documentElement.clientWidth<=1024){targetElement.animate({top:"20px",opacity:1},600,"swing")}else{targetElement.animate({right:"-220px",opacity:1},600,"swing")}})})})});observer.disconnect()}})},{threshold:0.5});observer.observe(element[0]);observer.observe(element[1])}},1000)});jQuery(document).ready(function(){const hero=document.querySelector('.top-map');const shadow=document.querySelector('.shadow-map');if(!shadow){return} 200shadow.addEventListener('mousemove',(e)=>{const rect=shadow.getBoundingClientRect();if(rect.width>0&&rect.height>0){const x=Math.round(((e.clientX-rect.left)/rect.width)*100);const y=Math.round(((e.clientY-rect.top)/rect.height)*100);shadow.style.setProperty('--x',`${x}%`);shadow.style.setProperty('--y',`${y}%`)}})});jQuery(function($){const target=".bell-driverapp";if(document.querySelector(target)){gsap.set(target,{transformOrigin:"50% 0%"});gsap.to(target,{keyframes:[{rotation:18,duration:0.10},{rotation:-18,duration:0.10},{rotation:14,duration:0.09},{rotation:-14,duration:0.09},{rotation:8,duration:0.08},{rotation:-8,duration:0.08},{rotation:0,duration:0.10,delay:7}],ease:"sine.inOut",repeat:-1})} 201const btn=".button-press-animation";if(document.querySelector(btn)){gsap.set(btn,{transformOrigin:"center"});gsap.to(btn,{keyframes:[{scale:0.9,duration:0.07},{scale:1,duration:0.07},{scale:0.9,duration:0.07},{scale:1,duration:0.07},{scale:0.9,duration:0.07},{scale:1,duration:0.07},{scale:0.9,duration:0.07,delay:5}],ease:"power1.inOut",repeat:-1})}});jQuery(window).on('elementor/frontend/init',function(){window.onload=function(){if(typeof gsap!=='undefined'){gsap.ticker.fps(20);console.log('GSAP frame rate set to 20fps')} 202const targetElement='.cloud-sidetoside';if(document.querySelector(targetElement)){const imageCoverCloud=document.querySelector('.image-cover-cloud');if(imageCoverCloud){applyResponsiveClipPath(imageCoverCloud)} 203gsap.to(targetElement,{x:40,duration:3,ease:"power1.out",repeat:-1,yoyo:!0})} 204const leftCloudeElement='.left-cloude';if(document.querySelector(leftCloudeElement)){gsap.to(leftCloudeElement,{x:20,duration:2,ease:"power1.out",repeat:-1,yoyo:!0})} 205if(typeof gsap!=='undefined'){const selectors=['.thev','.shield','.exclamationmark','.lockandexclamationmark'];const animatedGroups=[];
205selectors.forEach(selector=>{const elementsInGroup=document.querySelectorAll(selector);if(elementsInGroup.length>0){const randomYOffset=gsap.utils.random(-10,10);const randomDelay=gsap.utils.random(0,1);gsap.to(elementsInGroup,{y:randomYOffset,duration:0.8,ease:"power1.out",repeat:-1,yoyo:!0,delay:0.2});animatedGroups.push(selector)}});if(animatedGroups.length>0){const data=`GSAP animation script executed for groups: ${animatedGroups.join(', ')} with random Y movement per group.`}else{const data="GSAP is available, but no elements were found for any of the specified selectors."}}else{const data="GSAP is not available on this page."}}})
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.