1var observersDefault = [] 2var observersCurtain = [] 3var observersLetter = [] 4var letterAnim 5var originalLetters 6var animObject 7 8function getDefaultPreviewAnimObj($target = '', $animation_style = 'fu', $distance = '200', $rotation = '0', $scale = '1', $duration = '2000', $direction = 'normal', $loop = '1', $easing = 'linear', is_stagger = false, $delay = '0', stagger_delay = '500', elTarget = null) { 9 switch ($animation_style) { 10 case 'fu': 11 var animObj = { 12 targets: $target, 13 duration: $duration, 14 delay: $delay, 15 opacity: [0,1], 16 translateY: [$distance,0], 17 easing: $easing, 18 loop: $loop, 19 direction: $direction, 20 } 21 break; 22 case 'fd': 23 var animObj = { 24 targets: $target, 25 duration: $duration, 26 delay: $delay, 27 opacity: [0,1], 28 translateY: [-$distance,0], 29 easing: $easing, 30 loop: $loop, 31 direction: $direction, 32 } 33 break; 34 case 'fl': 35 var animObj = { 36 targets: $target, 37 duration: $duration, 38 delay: $delay, 39 opacity: [0,1], 40 translateX: [$distance,0], 41 easing: $easing, 42 loop: $loop, 43 direction: $direction, 44 } 45 break; 46 case 'fr': 47 var animObj = { 48 targets: $target, 49 duration: $duration, 50 delay: $delay, 51 opacity: [0,1], 52 translateX: [-$distance,0], 53 easing: $easing, 54 loop: $loop, 55 direction: $direction, 56 } 57 break; 58 case 'rotate': 59 var animObj = { 60 targets: $target, 61 duration: $duration, 62 delay: $delay, 63 opacity: [0,1], 64 rotate: [-$rotation,0], 65 easing: $easing, 66 loop: $loop, 67 direction: $direction, 68 } 69 break; 70 case 'scale': 71 var animObj = { 72 targets: $target, 73 duration: $duration, 74 delay: $delay, 75 opacity: [0,1], 76 scale: [1/$scale,1], 77 easing: $easing, 78 loop: $loop, 79 direction: $direction, 80 } 81 break; 82 default: 83 var animObj = { 84 targets: $target, 85 duration: $duration, 86 delay: $delay, 87 opacity: [0,1], 88 translateY: [$distance,0], 89 easing: $easing, 90 loop: $loop, 91 direction: $direction, 92 } 93 break; 94 } 95 96 if (is_stagger) { 97 animObj.delay = anime.stagger(stagger_delay) 98 } 99 100 if (elTarget) { 101 animObj.begin = function(anim) { 102 if ( anim.began ) { 103 // elTarget.setAttribute("style", "") 104 elTarget.setAttribute("data-de-reveal-animated", true) 105 } 106 } 107 108 animObj.complete = function(anim) { 109 if ( anim.completed ) { 110 elTarget.setAttribute("data-de-reveal-animated", false) 111 } 112 } 113 114 animObj.change = function() { 115 // elTarget.style.backgroundColor = '#00FF00' 116 // elTarget.style.opacity = 0 117 } 118 } 119 120 return animObj 121} 122 123function observerCallbackDefault(entries, observer) { 124 entries.forEach(function (entry) { 125 var element = entry.target; 126 var animating = false 127 if ( element.hasAttribute("data-de-reveal-animated") ) { 128 if ( element.getAttribute("data-de-reveal-animated") === "true" ) { 129 animating = true 130 } 131 } 132 133 var infinite = element.hasAttribute("data-anim-infinite") ? true : false; 134 135 var animation_style = element.getAttribute("data-de-reveal-animation-style") 136 var distance = element.getAttribute("data-de-reveal-distance") 137 var rotation = element.getAttribute("data-de-reveal-default-rotation") 138 var scale = element.getAttribute("data-de-reveal-default-scale") 139 var duration = element.getAttribute("data-de-reveal-duration") 140 var direction = element.getAttribute("data-de-reveal-direction") 141 var easing = element.getAttribute("data-de-reveal-easing") 142 // var loop = element.getAttribute("data-de-reveal-animation-loop") 143 var loop = element.hasAttribute("data-de-reveal-animation-loop-infinite") ? true : element.getAttribute("data-de-reveal-animation-loop") 144 145 var id = element.getAttribute("data-id") 146 var is_section = element.hasAttribute("data-de-reveal-section") ? true : false;
147 var is_stagger = element.hasAttribute("data-de-reveal-stagger") ? true : false; 148 var run_animation = element.hasAttribute("data-de-reveal-run-animation") ? true : false; 149 150 var delay = element.getAttribute("data-de-reveal-default-delay") 151 var stagger_delay = element.getAttribute("de-reveal-stagger-child-delay") 152 153 // if (id === '137f2861') { 154 // console.log('isIntersecting: ' + entry.isIntersecting) 155 // } 156 157 if (entry.isIntersecting) { 158 var targets 159 160 if (is_stagger) { 161 targets = ".de_reveal_animation_yes.elementor-element-" + id + " > .elementor-container > .elementor-column" 162 } else { 163 if (is_section) { 164 targets = ".de_reveal_animation_yes.elementor-section.elementor-element-" + id 165 } else { 166 targets = ".de_reveal_animation_yes.elementor-element-" + id 167 } 168 } 169 170 if ( !animating ) { 171 if (run_animation) { 172 var animObj = getDefaultPreviewAnimObj(targets,animation_style,distance,rotation,scale,duration,direction,loop,easing,is_stagger,delay,stagger_delay, element) 173 anime(animObj) 174 } else { 175 element.style.opacity = 1 176 } 177 } 178 179 if (element.classList.contains('de_reveal_animate_in_viewport_runonce') && observer.root === null) { 180 observer.unobserve(element) 181 } 182 183 } else { 184 element.style.opacity = 0 185 if (infinite) { 186 187 } 188 } 189 }) 190} 191 192function observerCallbackCurtain(entries, observer) { 193 entries.forEach(function (entry) { 194 var element = entry.target; 195 196 // To be implemented later: 197 var infinite = element.hasAttribute("data-anim-infinite") ? true : false; 198 199 200 var duration = element.getAttribute("data-de-reveal-duration") 201 var curtain_direction = element.getAttribute("data-de-reveal-curtain-direction") 202 var easing = element.getAttribute("data-de-reveal-easing") 203 var curtain_delay = element.getAttribute("data-de-reveal-curtain-delay") 204 var run_animation = element.hasAttribute("data-de-reveal-run-animation") ? true : false; 205 206 if (entry.isIntersecting) { 207 if (run_animation) { 208 209 var revealer = new RevealFx(element); 210 211 revealer.reveal({ 212 duration: duration, 213 direction: curtain_direction, 214 easing: easing, 215 delay: curtain_delay, 216 onStart: function(contentEl, revealerEl) { 217 if (contentEl) { contentEl.style.opacity = 0 } 218 }, 219 onCover: function(contentEl, revealerEl) { 220 if (contentEl) { 221 contentEl.style.opacity = 1 222 223 const nodelist = contentEl.querySelectorAll(".elementor-element"); 224 225 for (let i = 0; i < nodelist.length; i++) { 226 nodelist[i].style.opacity = 1; 227 } 228 } 229 }, 230 onComplete: function(contentEl, revealerEl) { 231 if (contentEl) { 232 contentEl.style.opacity = 1 233 234 const nodelist = contentEl.querySelectorAll(".elementor-element"); 235 236 for (let i = 0; i < nodelist.length; i++) { 237 nodelist[i].style.opacity = 1; 238 } 239 } 240 }, 241 }); 242 } else { 243 var wcontainer = element.querySelector(".elementor-widget-container") 244 245 if (wcontainer) { 246 wcontainer.style.opacity = 1 247 } 248 } 249 250 if (element.classList.contains('de_reveal_animate_in_viewport_runonce') && observer.root === null) { 251 observer.unobserve(element) 252 } 253 } else { 254 if (infinite) { 255 256 } 257 } 258 }) 259} 260 261function observerCallbackLetter(entries, observer) { 262 entries.forEach(function (entry) { 263 var element = entry.target 264 265 // To be implemented later: 266 var infinite = element.hasAttribute("data-anim-infinite") ? true : false; 267 var run_animation = element.hasAttribute("data-de-reveal-run-animation") ? true : false; 268 269 if (entry.isIntersecting) { 270 if (run_animation) { 271 var animated = element.querySelectorAll(".elementor-widget-container > *:not(style)"); 272 273 Array.prototype.forEach.call(animated, function(el, i){ 274 doLetterEffect(element,el) 275 }) 276 } 277 278 if (element.classList.contains('de_reveal_animate_in_viewport_runonce') && observer.root === null) { 279 observer.unobserve(element) 280 } 281 } else { 282 if (infinite) { 283 284 } 285 } 286 }) 287} 288 289function doLetterEffect(element,text_element) { 290 var effect = element.getAttribute("data-dereveal-letter-effects") 291 var initial_state = element.getAttribute("data-dereveal-letter-initial-state") 292 293 var hasLetterEffect = text_element.classList.contains('letter-effect') 294 var tempInnerText = text_element.innerHTML 295 296 if ( !hasLetterEffect ) { 297 var letterAnim = new TextFx(text_element) 298 299 if ( initial_state==='hidden' ) { 300 letterAnim.hide() 301 } else { 302 letterAnim.show() 303 } 304 305 letterAnim.show(effect, function(){ 306 if (!element.classList.contains('de_reveal_letter_animated')) { 307 element.classList.add('de_reveal_letter_animated') 308 } 309 310 311 if (tempInnerText !== '') { 312 text_element.innerHTML = tempInnerText 313 } 314 text_element.classList.remove('letter-effect') 315 }) 316 } 317} 318 319function deFindUpTemplateElement(el) { 320 while (el.parentElement) { 321 el = el.parentElement; 322 if ( el.hasAttribute('data-elementor-type') ) { 323 if ( el.getAttribute('data-elementor-type') !== "wp-page" ) 324 return el; 325 } 326 } 327 return null; 328} 329 330function deFindUpParentElementByClass(el,classname) { 331 while (el.parentElement) { 332 el = el.parentElement; 333 if ( el.classList.contains(classname) ) { 334 return el; 335 } 336 } 337 return null; 338} 339 340function deClassToSelector(classes) { 341 result = classes.replace(' ','.') 342 result = '.' + result 343 return result 344} 345 346class DeRevealAnimationHandlerClass extends elementorModules.frontend.handlers.Base { 347 getDefaultSettings() { 348 return { 349 selectors: { 350 wrapper: '.de_reveal_animation_yes', 351 widget_container: '.elementor-widget-container', 352 }, 353 }; 354 } 355 356 getDefaultElements() {
357 const selectors = this.getSettings( 'selectors' ); 358 return { 359 $wrapper: this.$element.find( selectors.wrapper ), 360 $widget_container: this.$element.find( selectors.widget_container ), 361 }; 362 } 363 364 do_frontend_reveal_default() { 365 if (!this.$element.hasClass('de_reveal_animation_yes')) { 366 return 367 } 368 369 if (!this.$element.hasClass('de_reveal_animation_type_default')) { 370 return 371 } 372 373 var observerOptions = { 374 root: null, 375 rootMargin: '0px', 376 threshold: 1 377 } 378 379 var ele = this.$element.get() 380 381 var element = ele[0] 382 var classes = element.getAttribute("class") 383 var arr_classes = classes.split(' ') 384 var de_reveal_start = 0 385 386 var de_reveal_distance = 0 387 element.setAttribute("data-de-reveal-distance", de_reveal_distance) 388 389 var de_reveal_rotation = 0 390 element.setAttribute("data-de-reveal-default-rotation", de_reveal_rotation) 391 392 var de_reveal_scale = 0 393 element.setAttribute("data-de-reveal-default-scale", de_reveal_scale) 394 395 var de_reveal_default_delay = 0 396 element.setAttribute("data-de-reveal-default-delay", de_reveal_default_delay) 397 398 var de_reveal_duration = 0 399 element.setAttribute("data-de-reveal-duration", de_reveal_duration) 400 401 Array.prototype.forEach.call(arr_classes, function(item, num){ 402 if ( item.search('de_reveal_start_') === 0 ) { 403 de_reveal_start = item.replace('de_reveal_start_','') 404 } 405 406 if ( item.search('de_reveal_animation_style_') === 0 ) { 407 var de_reveal_animation_style = item.replace('de_reveal_animation_style_','') 408 409 element.setAttribute("data-de-reveal-animation-style", de_reveal_animation_style) 410 } 411 412 if ( item.search('de_reveal_distance_') === 0 ) { 413 de_reveal_distance = item.replace('de_reveal_distance_','') 414 element.setAttribute("data-de-reveal-distance", de_reveal_distance) 415 } 416 417 if ( item.search('de_reveal_default_rotation_') === 0 ) { 418 de_reveal_rotation = item.replace('de_reveal_default_rotation_','') 419 element.setAttribute("data-de-reveal-default-rotation", de_reveal_rotation) 420 } 421 422 if ( item.search('de_reveal_default_scale_') === 0 ) { 423 de_reveal_scale = item.replace('de_reveal_default_scale_','') 424 element.setAttribute("data-de-reveal-default-scale", de_reveal_scale) 425 } 426 427 if ( item.search('de_reveal_default_delay_') === 0 ) { 428 de_reveal_default_delay = item.replace('de_reveal_default_delay_','') 429 element.setAttribute("data-de-reveal-default-delay", de_reveal_default_delay) 430 } 431 432 if ( item.search('de_reveal_duration_') === 0 ) { 433 de_reveal_duration = item.replace('de_reveal_duration_','') 434 element.setAttribute("data-de-reveal-duration", de_reveal_duration) 435 } 436 437 if ( item.search('de_reveal_direction_') === 0 ) { 438 var de_reveal_direction = item.replace('de_reveal_direction_','') 439 element.setAttribute("data-de-reveal-direction", de_reveal_direction) 440 } 441 442 if ( item.search('de_reveal_easing_') === 0 ) { 443 var de_reveal_easing = item.replace('de_reveal_easing_','') 444 element.setAttribute("data-de-reveal-easing", de_reveal_easing) 445 } 446 447 var $loop_type = 'custom' 448 var $loop 449 if ( item.search('de_reveal_loop_') === 0 ) { 450 $loop_type = item.replace('de_reveal_loop_','') 451 452 if ( $loop_type === 'infinite' ) { 453 $loop = true 454 element.setAttribute("data-de-reveal-animation-loop-infinite", true) 455 } 456 } 457 458 if (( item.search('de_reveal_custom_loop_') === 0 ) && ($loop_type === 'custom')) { 459 $loop = item.replace('de_reveal_custom_loop_','') 460 element.setAttribute("data-de-reveal-animation-loop", $loop) 461 } 462 463 if ( item.search('de_reveal_stagger_yes') === 0 ) { 464 element.setAttribute("data-de-reveal-stagger", "true") 465 } 466 467 if ( item.search('elementor-section') === 0 ) { 468 element.setAttribute("data-de-reveal-section", "true") 469 } 470 471 if ( item.search('de_reveal_run_animation') === 0 ) { 472 element.setAttribute("data-de-reveal-run-animation", "true") 473 } 474 475 if ( item.search('de_reveal_stagger_child_delay_') === 0 ) { 476 var stagger_delay = item.replace('de_reveal_stagger_child_delay_','') 477 478 element.setAttribute("de-reveal-stagger-child-delay", stagger_delay) 479 } 480 }) 481 482 var threshold = de_reveal_start; 483 484 if(threshold) { 485 var num = parseFloat(threshold); 486 observerOptions.threshold = num; 487 } else { 488 observerOptions.threshold = 0; 489 } 490 491 var doObserve = true 492 // Ambil Template dimana widget ini diletakkan 493 var templateEl = deFindUpTemplateElement(element) 494 495 // Kalo memang diletakkan di template, set oberver root 496 if ( templateEl ) { 497 if ( templateEl.parentElement.classList.contains('dethemekit-carousel-template') ) { 498 doObserve = false 499 } else { 500 observerOptions.root = templateEl.parentElement 501 } 502 } 503 504 if (doObserve) { 505 var id = element.getAttribute('data-id') 506 // initialize intersection observer 507 if (!observersDefault[id]) { 508 observersDefault[id] = new IntersectionObserver(observerCallbackDefault, observerOptions) 509 observersDefault[id].observe(element) 510 } 511 } 512 } 513 514 do_frontend_reveal_curtain() { 515 if (!this.$element.hasClass('de_reveal_animation_yes')) { 516 return 517 } 518 519 if (!this.$element.hasClass('de_reveal_animation_type_blockcurtain')) { 520 return 521 } 522 523 var observerOptions = { 524 root: null, 525 rootMargin: '0px', 526 threshold: 1 527 } 528 529 var ele = this.$element.get() 530 531 var element = ele[0] 532 533 // Get threshold settings from class de_reveal_start_ 534 var classes = element.getAttribute("class") 535 var arr_classes = classes.split(' ') 536 var de_reveal_start = 0 537 Array.prototype.forEach.call(arr_classes, function(item, num){ 538 if ( item.search('de_reveal_start_') === 0 ) { 539 de_reveal_start = item.replace('de_reveal_start_','') 540 } 541 542 if ( item.search('de_reveal_curtain_direction_') === 0 ) { 543 var de_reveal_curtain_direction = item.replace('de_reveal_curtain_direction_','') 544 545 element.setAttribute("data-de-reveal-curtain-direction", de_reveal_curtain_direction) 546 } 547 548 if ( item.search('de_reveal_curtain_delay_') === 0 ) { 549 var de_reveal_curtain_delay = item.replace('de_reveal_curtain_delay_','') 550 551 element.setAttribute("data-de-reveal-curtain-delay", de_reveal_curtain_delay) 552 } 553 554 if ( item.search('de_reveal_easing_') === 0 ) { 555 var de_reveal_easing = item.replace('de_reveal_easing_','') 556 557 element.setAttribute("data-de-reveal-easing", de_reveal_easing) 558 } 559 560 if ( item.search('de_reveal_duration_') === 0 ) { 561 var de_reveal_duration = item.replace('de_reveal_duration_','') 562 563 element.setAttribute("data-de-reveal-duration", de_reveal_duration) 564 } 565 566 }) 567 var threshold = de_reveal_start; 568 569 if(threshold) { 570 var num = parseFloat(threshold); 571 observerOptions.threshold = num; 572 } else { 573 observerOptions.threshold = 0; 574 } 575 576 var doObserve = true 577 // Ambil Template dimana widget ini diletakkan 578 var templateEl = deFindUpTemplateElement(element) 579 580 // Kalo memang diletakkan di template, set oberver root 581 if ( templateEl ) { 582 if ( templateEl.parentElement.classList.contains('dethemekit-carousel-template') ) { 583 doObserve = false 584 } else { 585 observerOptions.root = templateEl.parentElement 586 } 587 } 588 589 // Kalo memang diletakkan di template, set oberver root 590 // if ( templateEl ) { 591 // if ( templateEl.parentElement.classList.contains('slick-slide') ) { 592 // var carouselId = templateEl.parentElement.parentElement.parentElement.parentElement.getAttribute('id') 593 // observerOptions.root = document.querySelector('#' + carouselId + '.slick-slide.slick-current.slick-active') 594 // } else { 595 // observerOptions.root = templateEl.parentElement 596 // } 597 // } 598 599 if (doObserve) { 600 var id = element.getAttribute('data-id') 601 // initialize intersection observer 602 if (!observersDefault[id]) { 603 // initialize intersection observer 604 observersCurtain[id] = new IntersectionObserver(observerCallbackCurtain, observerOptions); 605 606 // observe wrapper element 607 observersCurtain[id].observe(element); 608 } 609 } 610 } 611 612 do_frontend_reveal_letter() { 613 if (!this.$element.hasClass('de_reveal_animation_yes')) { 614 return 615 } 616 617 if (!this.$element.hasClass('de_reveal_animation_type_letter')) { 618 return 619 } 620 621 var observerOptions = { 622 root: null, 623 rootMargin: '0px', 624 thresholds: [0.5], 625 } 626 627 var ele = this.$element.get() 628 629 var element = ele[0] 630 631 // Get threshold settings from class de_reveal_start_ 632 var classes = element.getAttribute("class") 633 var arr_classes = classes.split(' ') 634 var de_reveal_start = 0 635 636 Array.prototype.forEach.call(arr_classes, function(item, num){ 637 if ( item.search('de_reveal_start_') === 0 ) { 638 de_reveal_start = item.replace('de_reveal_start_','') 639 } 640 641 if ( item.search('de_reveal_letter_effects_') === 0 ) { 642 var de_reveal_letter_effects = item.replace('de_reveal_letter_effects_','') 643 644 element.setAttribute("data-dereveal-letter-effects", de_reveal_letter_effects) 645 } 646 647 if ( item.search('de_reveal_letter_initial_state_') === 0 ) { 648 var initial_state = item.replace('de_reveal_letter_initial_state_','') 649 650 element.setAttribute("data-dereveal-letter-initial-state", initial_state) 651 } 652 }) 653 var threshold = de_reveal_start; 654 655 if(threshold) { 656 var num = parseFloat(threshold); 657 observerOptions.threshold = num; 658 } else { 659 observerOptions.threshold = 0; 660 } 661 662 var doObserve = true 663 664 // Ambil Template dimana widget ini diletakkan 665 var templateEl = deFindUpTemplateElement(element) 666 667 // Kalo memang diletakkan di template, set oberver root 668 if ( templateEl ) { 669 if ( templateEl.parentElement.classList.contains('dethemekit-carousel-template') ) { 670 doObserve = true 671 // var carouselId = templateEl.parentElement.parentElement.parentElement.parentElement.getAttribute('id') 672 // observerOptions.root = document.querySelector('#' + carouselId + '.slick-slide.slick-current.slick-active') 673 674 // observerOptions.root = document.querySelector('.slick-slide.slick-current.slick-active') 675 // observerOptions.root = templateEl.parentElement.parentElement.parentElement.parentElement.querySelector('.slick-slide.slick-current.slick-active') 676 } else { 677 observerOptions.root = templateEl.parentElement 678 } 679 } 680 681 if (doObserve) { 682 var id = element.getAttribute('data-id') 683 // initialize intersection observer 684 if (!observersDefault[id]) { 685 // initialize intersection observer 686 observersLetter[id] = new IntersectionObserver(observerCallbackLetter, observerOptions); 687 688 // observe wrapper element 689 observersLetter[id].observe(element); 690 } 691 } 692 693 } 694 695 do_frontend_reveal() { 696 this.do_frontend_reveal_default() 697 this.do_frontend_reveal_curtain() 698 this.do_frontend_reveal_letter() 699 } 700 701 do_carousel_trigger() { 702 // jQuery('.dethemekit-carousel-wrapper').on("init", function (event, slick) { 703 // console.log('init') 704 // }) 705 // jQuery('.dethemekit-carousel-wrapper').on("beforeChange", function (event, slick, currentSlide, nextSlide) { 706 // console.log('beforeChange') 707 // }) 708 // jQuery('.dethemekit-carousel-wrapper').on("afterChange", function (event, slick, currentSlide) { 709 // console.log('afterChange') 710 // }) 711 // jQuery('.dethemekit-carousel-wrapper').on("reInit", function (event, slick) { 712 // console.log('reInit') 713 // }) 714 715 // ON SET POSITION REVEAL DEFAULT 716 jQuery('.dethemekit-carousel-wrapper').on("setPosition", function (event, slick) { 717 if (slick.$slider.hasClass('slick-loading')) return 718 719 var elements = slick.$slides[slick.currentSlide].querySelectorAll('.de_reveal_animation_yes.de_reveal_animation_type_default') 720 721 Array.prototype.forEach.call(elements, function (element, index) { 722 do_reveal_default_animation(element) 723 }) //Array.prototype.forEach.call(elements, function (element, index) 724 725 }) 726 727 // ON SET POSITION REVEAL CURTAIN 728 jQuery('.dethemekit-carousel-wrapper').on("setPosition", function (event, slick) { 729 if (slick.$slider.hasClass('slick-loading')) return 730 731 var elements = slick.$slides[slick.currentSlide].querySelectorAll('.de_reveal_animation_yes.de_reveal_animation_type_blockcurtain') 732 733 Array.prototype.forEach.call(elements, function (element, index) { 734 do_reveal_curtain_animation(element) 735 }) //Array.prototype.forEach.call(elements, function (element, index) 736 }) 737 738 // ON SET POSITION REVEAL LETTER 739 jQuery('.dethemekit-carousel-wrapper').on("setPosition", function (event, slick) { 740 if (slick.$slider.hasClass('slick-loading')) return 741 742 var elements = slick.$slides[slick.currentSlide].querySelectorAll('.de_reveal_animation_yes.de_reveal_animation_type_letter') 743 // console.log(elements.length) 744 Array.prototype.forEach.call(elements, function (element, index) { 745 // console.log('setPosition Letter') 746 // console.log('index : ' + index) 747 // console.log(element) 748 // do_reveal_letter_animation(element) 749 }) //Array.prototype.forEach.call(elements, function (element, index) 750 }) 751 752 jQuery('.dethemekit-carousel-wrapper').on("beforeChange", function (event, slick, currentSlide) { 753 var elements = slick.$slides[currentSlide].querySelectorAll('.de_reveal_animation_yes.de_reveal_animation_type_default') 754 755 Array.prototype.forEach.call(elements, function (element, index) { 756 if (!element) { 757 return 758 } 759 760 element.style.opacity = 0 761 }) 762 }) 763 764 } 765 766 onInit() { 767 var editMode = document.querySelector('.elementor-editor-active') 768 769 // Is in elementor editor 770 if (editMode) { 771 var animObject 772 773 var observer = new MutationObserver(function(mutations) { 774 mutations.forEach(function(mutation) { 775 if (mutation.attributeName === "class") { 776 var attributeValue = $(mutation.target).prop(mutation.attributeName); 777 778 var $arr_classes = attributeValue.split(' ') 779 780 var do_animation = false, de_reveal_animation_yes = false, run_animation = false, $animation_type = 'default', $id, $duration = '2000', $curtain_color = '#000000', $curtain_direction = 'lr', $direction = '
780normal', $easing = 'linear', $animation_style = 'fu', $loop_type = 'custom', $loop = '1', is_stagger = false, is_section = false, $letter_effect = 'fx1', letterAnim, initial_state = 'hidden' 781 782 jQuery.each($arr_classes, (index, value) => { 783 if ( value.search('de_reveal_animation_yes') === 0 ) { 784 de_reveal_animation_yes = true; 785 } 786 787 if ( value.search('de_reveal_run_animation') === 0 ) { 788 run_animation = true; 789 } 790 791 if ( value.search('de_reveal_animation_type_') === 0 ) { 792 $animation_type = value.replace('de_reveal_animation_type_','') 793 } 794 795 if ( value.search('elementor-section') === 0 ) { 796 is_section = true; 797 } 798 799 if ( value.length === 25 && value.search('elementor-element-') === 0 ) { 800 $id = value.replace('elementor-element-','') 801 } 802 803 if ( value.search('de_reveal_curtain_direction_') === 0 ) { 804 $curtain_direction = value.replace('de_reveal_curtain_direction_','') 805 } 806 807 if ( value.search('de_reveal_letter_effects_') === 0 ) { 808 $letter_effect = value.replace('de_reveal_letter_effects_','') 809 } 810 811 if ( value.search('de_reveal_letter_initial_state_') === 0 ) { 812 initial_state = value.replace('de_reveal_letter_initial_state_','') 813 } 814 815 if ( value.search('de_reveal_duration_') === 0 ) { 816 $duration = value.replace('de_reveal_duration_','') 817 } 818 819 if ( value.search('de_reveal_direction_') === 0 ) { 820 $direction = value.replace('de_reveal_direction_','') 821 } 822 823 if ( value.search('de_reveal_easing_') === 0 ) { 824 $easing = value.replace('de_reveal_easing_','') 825 } 826 827 if ( value.search('de_reveal_loop_') === 0 ) { 828 $loop_type = value.replace('de_reveal_loop_','') 829 830 if ( $loop_type === 'infinite' ) { 831 $loop = true 832 } 833 } 834 835 if (( value.search('de_reveal_custom_loop_') === 0 ) && ($loop_type === 'custom')) { 836 $loop = value.replace('de_reveal_custom_loop_','') 837 } 838 839 if ( value.search('de_reveal_animation_style_') === 0 ) { 840 $animation_style = value.replace('de_reveal_animation_style_','') 841 } 842 843 if ( value.search('de_reveal_stagger_yes') === 0 ) { 844 is_stagger = true; 845 } 846 847 }) 848 849 var elementSelector 850 var $target = '' 851 852 if (de_reveal_animation_yes && run_animation) { 853 do_animation = true 854 } 855 856 if (do_animation) { 857 if (is_stagger) { 858 $target = ".de_reveal_animation_yes.elementor-element-" + $id + " > .elementor-container > .elementor-column" 859 } else { 860 if (is_section) { 861 $target = ".de_reveal_animation_yes.elementor-section.elementor-element-" + $id 862 } else { 863 switch ($animation_type) { 864 case 'letter': 865 $target = ".de_reveal_animation_yes.elementor-element-" + $id + " > .elementor-widget-container > *" 866 break; 867 case 'blockcurtain': 868 $target = ".de_reveal_animation_yes.elementor-element-" + $id 869 break; 870 default: 871 $target = ".de_reveal_animation_yes.elementor-element-" + $id + " > .elementor-widget-container" 872 break; 873 } 874 875 // if ( $animation_type === 'letter' ) { 876 // $target = ".de_reveal_animation_yes.elementor-element-" + $id + " > .elementor-widget-container > *" 877 // } else { 878 // $target = ".de_reveal_animation_yes.elementor-element-" + $id + " > .elementor-widget-container" 879 // } 880 } 881 } 882 883 elementSelector = document.querySelector($target) 884 } else { 885 if (is_stagger) { 886 $target = ".de_reveal_animation_no.elementor-element-" + $id + " > .elementor-container > .elementor-column" 887 } else { 888 if (is_section) { 889 $target = ".de_reveal_animation_no.elementor-section.elementor-element-" + $id 890 } else { 891 if ( $animation_type === 'letter' ) { 892 $target = ".de_reveal_animation_no.elementor-element-" + $id + " > .elementor-widget-container > *" 893 } else { 894 $target = ".de_reveal_animation_no.elementor-element-" + $id + " > .elementor-widget-container" 895 } 896 } 897 } 898 899 elementSelector = document.querySelector($target) 900 } 901 902 903 if (do_animation && elementSelector) { 904 if ( $animation_type === 'blockcurtain' ) { 905 906 var revealer = new RevealFx(elementSelector); 907 908 revealer.reveal({ 909 duration: $duration, 910 direction: $curtain_direction, 911 easing: $easing, 912 onStart: function(contentEl, revealerEl) { if (contentEl) contentEl.style.opacity = 0; }, 913 onCover: function(contentEl, revealerEl) { if (contentEl) contentEl.style.opacity = 1; }, 914 onComplete: function(contentEl, revealerEl) { if (contentEl) contentEl.style.opacity = 1; }, 915 }); 916 917 } else if ( $animation_type === 'letter' ) { //if ( $animation_type === 'blockcurtain' ) 918 919 var hasLetterEffect = elementSelector.classList.contains('letter-effect') 920 var tempInnerText = elementSelector.innerText 921 922 if ( !hasLetterEffect ) { 923 letterAnim = new TextFx(elementSelector) 924 925 if ( initial_state==='hidden' ) { 926 letterAnim.hide() 927 } else { 928 letterAnim.show() 929 } 930 931 letterAnim.show($letter_effect, function(){ 932 elementSelector.classList.remove('letter-effect') 933 elementSelector.innerText = tempInnerText 934 }) 935 } 936 937 } else { //if ( $animation_type === 'blockcurtain' ) 938 } //if ( $animation_type === 'blockcurtain' ) 939 940 } else { //if (do_animation) 941 if (elementSelector) { 942 elementSelector.style.transform = "none" 943 } 944 } //if (do_animation) 945 } 946 }); 947 }); 948 949 if (this.$element) { 950 var elementId = this.$element.context.attributes['data-id'].nodeValue; 951 var elementSelector = document.querySelector("[data-id='" + elementId + "']"); 952 if (elementSelector) { 953 this.do_frontend_reveal() 954 } 955 } 956 } else { //if (editMode) 957 this.do_frontend_reveal() 958 this.do_carousel_trigger() 959 } //if (editMode) 960 } //onInit() 961 962 bindEvents() { 963 } 964} 965 966function do_preview_default_animation() {
967 // find all edited element wrappers 968 var animNodes = document.querySelectorAll(".de_reveal_animation_yes.de_reveal_animation_type_default.elementor-element-editable"); 969 970 // For each animated element, set initial state based on animation object in animations array 971 Array.prototype.forEach.call(animNodes, function (element, index) { 972 973 // initial variables values 974 var do_animation = false 975 var $animation_type = 'default' 976 var $id, $duration = 2000, $distance = '200', $rotation = '0', $scale = '1' 977 var $direction = 'normal' 978 var $easing = 'linear' 979 var $animation_style = 'fu' 980 var $loop_type = 'custom' 981 var $loop = '1' 982 var is_stagger = false 983 var is_section = false 984 var $delay = '0' 985 var stagger_delay = '500' 986 987 var classes = element.getAttribute("class") 988 var arr_classes = classes.split(' ') 989 990 $id = element.getAttribute('data-id') 991 992 Array.prototype.forEach.call(arr_classes, function(item, num){ 993 if ( item.search('de_reveal_animation_yes') === 0 ) { 994 do_animation = true 995 } 996 997 if ( item.search('de_reveal_animation_type_') === 0 ) { 998 $animation_type = item.replace('de_reveal_animation_type_','') 999 } 1000 1001 if ( item.search('elementor-section') === 0 ) { 1002 is_section = true 1003 } 1004 1005 if ( item.search('de_reveal_distance_') === 0 ) { 1006 $distance = item.replace('de_reveal_distance_','') 1007 } 1008 1009 if ( item.search('de_reveal_default_rotation_') === 0 ) { 1010 $rotation = item.replace('de_reveal_default_rotation_','') 1011 } 1012 1013 if ( item.search('de_reveal_default_scale_') === 0 ) { 1014 $scale = item.replace('de_reveal_default_scale_','') 1015 } 1016 1017 if ( item.search('de_reveal_default_delay_') === 0 ) { 1018 $delay = item.replace('de_reveal_default_delay_','') 1019 } 1020 1021 if ( item.search('de_reveal_duration_') === 0 ) { 1022 $duration = item.replace('de_reveal_duration_','') 1023 } 1024 1025 if ( item.search('de_reveal_direction_') === 0 ) { 1026 $direction = item.replace('de_reveal_direction_','') 1027 } 1028 1029 if ( item.search('de_reveal_easing_') === 0 ) { 1030 $easing = item.replace('de_reveal_easing_','') 1031 } 1032 1033 if ( item.search('de_reveal_loop_') === 0 ) { 1034 $loop_type = item.replace('de_reveal_loop_','') 1035 1036 if ( $loop_type === 'infinite' ) { 1037 $loop = true 1038 } 1039 } 1040 1041 if (( item.search('de_reveal_custom_loop_') === 0 ) && ($loop_type === 'custom')) { 1042 $loop = item.replace('de_reveal_custom_loop_','') 1043 } 1044 1045 if ( item.search('de_reveal_animation_style_') === 0 ) { 1046 $animation_style = item.replace('de_reveal_animation_style_','') 1047 } 1048 1049 if ( item.search('de_reveal_stagger_yes') === 0 ) { 1050 is_stagger = true 1051 } 1052 1053 if ( item.search('de_reveal_stagger_child_delay_') === 0 ) { 1054 stagger_delay = item.replace('de_reveal_stagger_child_delay_','') 1055 } 1056 }) 1057 1058 var elementSelector 1059 var $target = '' 1060 1061 if (do_animation) { 1062 if (is_stagger) { 1063 $target = ".de_reveal_animation_yes.elementor-element-" + $id + " > .elementor-container > .elementor-column" 1064 } else { 1065 if (is_section) { 1066 $target = ".de_reveal_animation_yes.elementor-section.elementor-element-" + $id 1067 } else { 1068 $target = ".de_reveal_animation_yes.elementor-element-" + $id 1069 } 1070 } 1071 1072 elementSelector = document.querySelector($target) 1073 } else { 1074 if (is_stagger) { 1075 $target = ".de_reveal_animation_no.elementor-element-" + $id + " > .elementor-container > .elementor-column" 1076 } else { 1077 if (is_section) { 1078 $target = ".de_reveal_animation_no.elementor-section.elementor-element-" + $id 1079 } else { 1080 $target = ".de_reveal_animation_no.elementor-element-" + $id 1081 } 1082 } 1083 1084 elementSelector = document.querySelector($target) 1085 } 1086 1087 if (do_animation && elementSelector) { 1088 1089 if (animObject) { 1090 animObject.remove(elementSelector) 1091 } 1092 1093 var animObj = getDefaultPreviewAnimObj($target,$animation_style,$distance,$rotation,$scale,$duration,$direction,$loop,$easing,is_stagger,$delay,stagger_delay) 1094 animObject = anime(animObj) 1095 1096 } else { //if (do_animation) 1097 if (elementSelector) { 1098 elementSelector.style.transform = "none" 1099 } 1100 } //if (do_animation) 1101 }) 1102} 1103 1104function do_preview_curtain_animation() {
1105 // find all animated element wrappers with data-anim attribute 1106 var animNodes = document.querySelectorAll(".de_reveal_animation_yes.de_reveal_animation_type_blockcurtain.elementor-element-editable"); 1107 1108 // For each animated element, set initial state based on animation object in animations array 1109 Array.prototype.forEach.call(animNodes, function (element, index) { 1110 // Get threshold settings from class de_reveal_start_ 1111 var classes = element.getAttribute("class") 1112 var arr_classes = classes.split(' ') 1113 var de_reveal_start = 0 1114 var de_reveal_curtain_direction = 'lr' 1115 var de_reveal_easing = 'linier' 1116 var de_reveal_duration = 2000 1117 var de_reveal_curtain_delay = 0 1118 Array.prototype.forEach.call(arr_classes, function(item, num){ 1119 if ( item.search('de_reveal_start_') === 0 ) { 1120 de_reveal_start = item.replace('de_reveal_start_','') 1121 } 1122 1123 if ( item.search('de_reveal_curtain_direction_') === 0 ) { 1124 de_reveal_curtain_direction = item.replace('de_reveal_curtain_direction_','') 1125 1126 element.setAttribute("data-de-reveal-curtain-direction", de_reveal_curtain_direction) 1127 } 1128 1129 if ( item.search('de_reveal_curtain_delay_') === 0 ) { 1130 de_reveal_curtain_delay = item.replace('de_reveal_curtain_delay_','') 1131 1132 element.setAttribute("data-de-reveal-curtain-delay", de_reveal_curtain_delay) 1133 } 1134 1135 if ( item.search('de_reveal_easing_') === 0 ) { 1136 de_reveal_easing = item.replace('de_reveal_easing_','') 1137 1138 element.setAttribute("data-de-reveal-easing", de_reveal_easing) 1139 } 1140 1141 if ( item.search('de_reveal_duration_') === 0 ) { 1142 de_reveal_duration = item.replace('de_reveal_duration_','') 1143 1144 element.setAttribute("data-de-reveal-duration", de_reveal_duration) 1145 } 1146 }) 1147 1148 var revealer = new RevealFx(element); 1149 1150 revealer.reveal({ 1151 duration: de_reveal_duration, 1152 direction: de_reveal_curtain_direction, 1153 easing: de_reveal_easing, 1154 delay: de_reveal_curtain_delay, 1155 onStart: function(contentEl, revealerEl) { 1156 if (contentEl) { contentEl.style.opacity = 0 } 1157 }, 1158 onCover: function(contentEl, revealerEl) { 1159 if (contentEl) { contentEl.style.opacity = 1 } 1160 }, 1161 onComplete: function(contentEl, revealerEl) { 1162 if (contentEl) { contentEl.style.opacity = 1 } 1163 }, 1164 }); 1165 1166 delete revealer 1167 1168 }) 1169} 1170 1171function do_preview_letter_animation() { 1172 // find all animated element wrappers with data-anim attribute 1173 var animNodes = document.querySelectorAll(".de_reveal_animation_yes.de_reveal_animation_type_letter.elementor-element-editable"); 1174 1175 // For each animated element, set initial state based on animation object in animations array 1176 Array.prototype.forEach.call(animNodes, function (element, index) { 1177 // Get threshold settings from class de_reveal_start_ 1178 var classes = element.getAttribute("class") 1179 var arr_classes = classes.split(' ') 1180 var de_reveal_start = 0 1181 var initial_state = 'hidden' 1182 1183 Array.prototype.forEach.call(arr_classes, function(item, num){ 1184 if ( item.search('de_reveal_start_') === 0 ) { 1185 de_reveal_start = item.replace('de_reveal_start_','') 1186 } 1187 1188 if ( item.search('de_reveal_letter_initial_state_') === 0 ) { 1189 initial_state = item.replace('de_reveal_letter_initial_state_','') 1190 } 1191 1192 if ( item.search('de_reveal_letter_effects_') === 0 ) { 1193 var de_reveal_letter_effects = item.replace('de_reveal_letter_effects_','') 1194 1195 element.setAttribute("data-dereveal-letter-effects", de_reveal_letter_effects) 1196 } 1197 }) 1198 var threshold = de_reveal_start; 1199 1200 var animated = element.querySelectorAll(".elementor-widget-container > *:not(style)"); 1201 1202 Array.prototype.forEach.call(animated, function(el, i){ 1203 var hasLetterEffect = el.classList.contains('letter-effect') 1204 1205 // if ( !hasLetterEffect ) { 1206 var de_reveal_letter_effects = element.getAttribute("data-dereveal-letter-effects") 1207 originalLetters = el.innerText 1208 letterAnim = new TextFx(el) 1209 if ( initial_state==='hidden' ) { 1210 letterAnim.hide() 1211 } else { 1212 letterAnim.show() 1213 } 1214 letterAnim.show(de_reveal_letter_effects, callback_after_letter_animation) 1215 // } 1216 }) 1217 }) 1218} 1219 1220function callback_after_letter_animation() { 1221 if (letterAnim) { 1222 letterAnim.el.innerText = originalLetters 1223 letterAnim.el.classList.remove('letter-effect') 1224 } 1225} 1226 1227function do_reveal_default_animation(element) { 1228 if (!element) return 1229 1230 var classes = element.getAttribute("class") 1231 var arr_classes = classes.split(' ') 1232 1233 var animation_style, distance, rotation, scale, duration, direction, delay, easing, is_stagger, is_section, run_animation, stagger_delay 1234 1235 Array.prototype.forEach.call(arr_classes, function(item, num){ 1236 // if ( item.search('de_reveal_start_') === 0 ) { 1237 // de_reveal_start = item.replace('de_reveal_start_','') 1238 // } 1239 1240 if ( item.search('de_reveal_animation_style_') === 0 ) { 1241 animation_style = item.replace('de_reveal_animation_style_','') 1242 } 1243 1244 if ( item.search('de_reveal_distance_') === 0 ) { 1245 distance = item.replace('de_reveal_distance_','') 1246 } 1247 1248 if ( item.search('de_reveal_default_rotation_') === 0 ) { 1249 rotation = item.replace('de_reveal_default_rotation_','') 1250 } 1251 1252 if ( item.search('de_reveal_default_scale_') === 0 ) { 1253 scale = item.replace('de_reveal_default_scale_','') 1254 } 1255 1256 if ( item.search('de_reveal_default_delay_') === 0 ) {
1257 delay = item.replace('de_reveal_default_delay_','') 1258 } 1259 1260 if ( item.search('de_reveal_duration_') === 0 ) { 1261 duration = item.replace('de_reveal_duration_','') 1262 } 1263 1264 if ( item.search('de_reveal_direction_') === 0 ) { 1265 direction = item.replace('de_reveal_direction_','') 1266 } 1267 1268 if ( item.search('de_reveal_easing_') === 0 ) { 1269 easing = item.replace('de_reveal_easing_','') 1270 } 1271 1272 // var $loop_type = 'custom' 1273 // var $loop 1274 // if ( item.search('de_reveal_loop_') === 0 ) { 1275 // $loop_type = item.replace('de_reveal_loop_','') 1276 1277 // if ( $loop_type === 'infinite' ) { 1278 // $loop = true 1279 // element.setAttribute("data-de-reveal-animation-loop-infinite", true) 1280 // } 1281 // } 1282 1283 // if (( item.search('de_reveal_custom_loop_') === 0 ) && ($loop_type === 'custom')) { 1284 // $loop = item.replace('de_reveal_custom_loop_','') 1285 // element.setAttribute("data-de-reveal-animation-loop", $loop) 1286 // } 1287 1288 if ( item.search('de_reveal_stagger_yes') === 0 ) { 1289 is_stagger = true 1290 } 1291 1292 if ( item.search('elementor-section') === 0 ) { 1293 is_section = true 1294 } 1295 1296 if ( item.search('de_reveal_run_animation') === 0 ) { 1297 run_animation = true 1298 } 1299 1300 if ( item.search('de_reveal_stagger_child_delay_') === 0 ) { 1301 stagger_delay = item.replace('de_reveal_stagger_child_delay_','') 1302 } 1303 }) 1304 1305 var animating = false 1306 if ( element.hasAttribute("data-de-reveal-animated") ) { 1307 if ( element.getAttribute("data-de-reveal-animated") === "true" ) { 1308 animating = true 1309 } 1310 } 1311 1312 var infinite = element.hasAttribute("data-anim-infinite") ? true : false; 1313 1314 // var animation_style = element.getAttribute("data-de-reveal-animation-style") 1315 // var distance = element.getAttribute("data-de-reveal-distance") 1316 // var rotation = element.getAttribute("data-de-reveal-default-rotation") 1317 // var scale = element.getAttribute("data-de-reveal-default-scale") 1318 // var duration = element.getAttribute("data-de-reveal-duration") 1319 // var direction = element.getAttribute("data-de-reveal-direction") 1320 // var easing = element.hasAttribute("data-de-reveal-easing") ? element.getAttribute("data-de-reveal-easing") : 'linear' 1321 1322 1323 // var easing = 'easeInOutExpo' 1324 // var loop = element.getAttribute("data-de-reveal-animation-loop") 1325 var loop = element.hasAttribute("data-de-reveal-animation-loop-infinite") ? true : element.getAttribute("data-de-reveal-animation-loop") 1326 1327 var id = element.getAttribute("data-id") 1328 1329 // var is_section = element.hasAttribute("data-de-reveal-section") ? true : false; 1330 // var is_stagger = element.hasAttribute("data-de-reveal-stagger") ? true : false; 1331 // var run_animation = element.hasAttribute("data-de-reveal-run-animation") ? true : false; 1332 1333 // var delay = element.getAttribute("data-de-reveal-default-delay") 1334 // var stagger_delay = element.getAttribute("de-reveal-stagger-child-delay") 1335 1336 var targets 1337 1338 if (is_stagger) { 1339 targets = ".de_reveal_animation_yes.elementor-element-" + id + " > .elementor-container > .elementor-column" 1340 } else { 1341 if (is_section) { 1342 targets = ".de_reveal_animation_yes.elementor-section.elementor-element-" + id 1343 } else { 1344 targets = ".de_reveal_animation_yes.elementor-element-" + id 1345 } 1346 } 1347 1348 var animObj = getDefaultPreviewAnimObj(targets,animation_style,distance,rotation,scale,duration,direction,loop,easing,is_stagger,delay,stagger_delay,element) 1349 anime(animObj) 1350} 1351 1352function do_reveal_curtain_animation(element) { 1353 if (!element) return 1354 1355 // Get threshold settings from class de_reveal_start_ 1356 var classes = element.getAttribute("class") 1357 var arr_classes = classes.split(' ') 1358 var de_reveal_start = 0 1359 var de_reveal_curtain_direction = 'lr' 1360 var de_reveal_easing = 'linier' 1361 var de_reveal_duration = 2000 1362 var de_reveal_curtain_delay = 0 1363 1364 Array.prototype.forEach.call(arr_classes, function(item, num){ 1365 if ( item.search('de_reveal_start_') === 0 ) { 1366 de_reveal_start = item.replace('de_reveal_start_','') 1367 } 1368 1369 if ( item.search('de_reveal_curtain_direction_') === 0 ) { 1370 de_reveal_curtain_direction = item.replace('de_reveal_curtain_direction_','') 1371 } 1372 1373 if ( item.search('de_reveal_curtain_delay_') === 0 ) { 1374 de_reveal_curtain_delay = item.replace('de_reveal_curtain_delay_','') 1375 } 1376 1377 if ( item.search('de_reveal_easing_') === 0 ) { 1378 de_reveal_easing = item.replace('de_reveal_easing_','') 1379 } 1380 1381 if ( item.search('de_reveal_duration_') === 0 ) { 1382 de_reveal_duration = item.replace('de_reveal_duration_','') 1383 } 1384 }) 1385 1386 var revealer = new RevealFx(element); 1387 1388 revealer.reveal({ 1389 duration: de_reveal_duration, 1390 direction: de_reveal_curtain_direction, 1391 easing: de_reveal_easing, 1392 delay: de_reveal_curtain_delay, 1393 onStart: function(contentEl, revealerEl) { 1394 if (contentEl) { contentEl.style.opacity = 0 } 1395 }, 1396 onCover: function(contentEl, revealerEl) { 1397 if (contentEl) { contentEl.style.opacity = 1 } 1398 }, 1399 onComplete: function(contentEl, revealerEl) { 1400 if (contentEl) { contentEl.style.opacity = 1 } 1401 }, 1402 }); 1403 1404 delete revealer 1405} 1406 1407function do_reveal_letter_animation(element) { 1408 if (!element) return 1409 1410 // Get threshold settings from class de_reveal_start_ 1411 var classes = element.getAttribute("class") 1412 var arr_classes = classes.split(' ') 1413 var de_reveal_start = 0 1414 var initial_state = 'hidden' 1415 var de_reveal_letter_effects = 'fx1' 1416 1417 Array.prototype.forEach.call(arr_classes, function(item, num){ 1418 if ( item.search('de_reveal_start_') === 0 ) { 1419 de_reveal_start = item.replace('de_reveal_start_','') 1420 } 1421 1422 if ( item.search('de_reveal_letter_initial_state_') === 0 ) { 1423 initial_state = item.replace('de_reveal_letter_initial_state_','') 1424 } 1425 1426 if ( item.search('de_reveal_letter_effects_') === 0 ) { 1427 de_reveal_letter_effects = item.replace('de_reveal_letter_effects_','') 1428 } 1429 }) 1430 var threshold = de_reveal_start; 1431 1432 var animated = element.querySelectorAll(".elementor-widget-container > *:not(style)"); 1433 1434 Array.prototype.forEach.call(animated, function(el, i){ 1435 var hasLetterEffect = el.classList.contains('letter-effect') 1436 1437 // if ( !hasLetterEffect ) { 1438 originalLetters = el.innerText 1439 letterAnim = new TextFx(el) 1440 if ( initial_state==='hidden' ) { 1441 letterAnim.hide() 1442 } else { 1443 letterAnim.show() 1444 } 1445 letterAnim.show(de_reveal_letter_effects, callback_after_letter_animation) 1446 // } 1447 }) 1448} 1449 1450 1451jQuery( window ).on( 'elementor/frontend/init', () => { 1452 const addHandler = ( $element ) => { 1453 elementorFrontend.elementsHandler.addHandler( DeRevealAnimationHandlerClass, { 1454 $element, 1455 } ); 1456 }; 1457 1458 elementorFrontend.hooks.addAction( 'frontend/element_ready/global', addHandler ); 1459 1460 if ( undefined !== window.elementor ) { 1461 elementor.channels.editor.on( 'RunPreviewDefault', () => do_preview_default_animation() ) 1462 elementor.channels.editor.on( 'RunPreviewCurtain', () => do_preview_curtain_animation() ) 1463 elementor.channels.editor.on( 'RunPreviewLetter', () => do_preview_letter_animation() ) 1464 } 1465}); 1466 1467jQuery( document ).ready( () => { 1468 de_reveal_init_responsive() 1469}) 1470 1471jQuery( window ).on( 'resize', () => { 1472 de_reveal_init_responsive() 1473}) 1474 1475function de_reveal_init_responsive() { 1476 var onDesktop = false 1477 var onTablet = false 1478 var onMobile = false 1479 var docWidth = document.body.clientWidth
1480 var tabletBreakpoint = elementorFrontend.config.responsive.breakpoints.tablet.value 1481 var mobileBreakpoint = elementorFrontend.config.responsive.breakpoints.mobile.value 1482 1483 if ( docWidth > tabletBreakpoint ) { 1484 onDesktop = true 1485 } else if ( docWidth <= mobileBreakpoint ) { 1486 onMobile = true 1487 } else { 1488 onTablet = true 1489 } 1490 1491 const editMode = document.querySelector('.elementor-editor-active') 1492 1493 if (!editMode) { 1494 const elements = document.querySelectorAll(".de_reveal_animation_yes") 1495 1496 Array.prototype.forEach.call(elements, function (element, index) { 1497 element.classList.remove('de_reveal_run_animation') 1498 element.removeAttribute("data-de-reveal-run-animation") 1499 1500 if ( onDesktop && element.classList.contains('de_reveal_on_desktop_yes') ) { 1501 if (!element.classList.contains('de_reveal_run_animation')) { 1502 element.classList.add('de_reveal_run_animation') 1503 element.setAttribute("data-de-reveal-run-animation", "true") 1504 } 1505 } 1506 1507 if ( onTablet && element.classList.contains('de_reveal_on_tablet_yes') ) { 1508 if (!element.classList.contains('de_reveal_run_animation')) { 1509 element.classList.add('de_reveal_run_animation') 1510 element.setAttribute("data-de-reveal-run-animation", "true") 1511 } 1512 } 1513 1514 if ( onMobile && element.classList.contains('de_reveal_on_mobile_yes') ) { 1515 if (!element.classList.contains('de_reveal_run_animation')) { 1516 element.classList.add('de_reveal_run_animation') 1517 element.setAttribute("data-de-reveal-run-animation", "true") 1518 } 1519 } 1520 1521 }) 1522 } 1523}
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.