TweenMax.js
1 year ago
anime.js
1 year ago
flipster.js
1 year ago
headroom.js
1 year ago
iscroll.js
1 year ago
isotope.js
1 year ago
jquery-countdown.js
1 year ago
jquery-mousewheel.js
1 year ago
jquery-slimscroll.js
1 year ago
lottie.js
1 year ago
luxon.js
1 year ago
markerclusterer.js
1 year ago
modal.js
1 year ago
motionpath.js
1 year ago
pa-gsap.js
1 year ago
pa-scrolldir.js
1 year ago
premium-addons.js
1 year ago
premium-banner.js
1 year ago
premium-blog.js
1 year ago
premium-button.js
1 year ago
premium-carousel-widget.js
1 year ago
premium-contact-form.js
1 year ago
premium-countdown-timer.js
1 year ago
premium-counter.js
1 year ago
premium-dis-conditions.js
1 year ago
premium-dual-header.js
1 year ago
premium-eq-height.js
1 year ago
premium-fancy-text.js
1 year ago
premium-floating-effects.js
1 year ago
premium-global-tooltips.js
1 year ago
premium-icon-list.js
1 year ago
premium-image-button.js
1 year ago
premium-image-scroll.js
1 year ago
premium-img-gallery.js
1 year ago
premium-maps.js
1 year ago
premium-media-wheel.js
1 year ago
premium-mini-cart.js
1 year ago
premium-mobile-menu.js
1 year ago
premium-modal-box.js
1 year ago
premium-nav-menu.js
1 year ago
premium-notifications.js
1 year ago
premium-person.js
1 year ago
premium-pinterest-feed.js
1 year ago
premium-post-ticker.js
1 year ago
premium-progressbar.js
1 year ago
premium-search-form.js
1 year ago
premium-shape-divider.js
1 year ago
premium-svg-drawer.js
1 year ago
premium-tcloud.js
1 year ago
premium-testimonials.js
1 year ago
premium-textual-showcase.js
1 year ago
premium-tiktok-feed.js
1 year ago
premium-title.js
1 year ago
premium-video-box.js
1 year ago
premium-vscroll.js
1 year ago
premium-weather.js
1 year ago
premium-woo-categories.js
1 year ago
premium-woo-cta.js
1 year ago
premium-woo-products.js
1 year ago
premium-world-clock.js
1 year ago
premium-wrapper-link.js
1 year ago
prettyPhoto.js
1 year ago
scrollTrigger.js
1 year ago
slick.js
1 year ago
tooltipster.js
1 year ago
typed.js
1 year ago
universal-tilt.js
1 year ago
vticker.js
1 year ago
premium-title.js
108 lines
| 1 | (function ($) { |
| 2 | |
| 3 | var PremiumMaskHandler = function ($scope, $) { |
| 4 | |
| 5 | var mask = $scope.hasClass('premium-mask-yes'); |
| 6 | |
| 7 | if (!mask) return; |
| 8 | |
| 9 | if ('premium-addon-title.default' === $scope.data('widget_type')) { |
| 10 | var target = '.premium-title-header'; |
| 11 | $scope.find(target).find('.premium-title-icon, .premium-title-img').addClass('premium-mask-span'); |
| 12 | |
| 13 | } else if ('premium-textual-showcase.default' === $scope.data('widget_type')) { |
| 14 | var target = '.pa-txt-sc__effect-min-mask'; |
| 15 | |
| 16 | } else { |
| 17 | var target = '.premium-dual-header-first-header'; |
| 18 | } |
| 19 | |
| 20 | $scope.find(target).find('span:not(.premium-title-style7-stripe-wrap):not(.premium-title-img):not(.pa-txt-sc__hov-item)').each(function (index, span) { |
| 21 | var html = ''; |
| 22 | |
| 23 | $(this).text().split(' ').forEach(function (item) { |
| 24 | if ('' !== item) { |
| 25 | html += ' <span class="premium-mask-span">' + item + '</span>'; |
| 26 | } |
| 27 | }); |
| 28 | |
| 29 | $(this).text('').append(html); |
| 30 | }); |
| 31 | |
| 32 | // unsing IntersectionObserverAPI. |
| 33 | var eleObserver = new IntersectionObserver(function (entries) { |
| 34 | entries.forEach(function (entry) { |
| 35 | if (entry.isIntersecting) { |
| 36 | |
| 37 | $($scope).addClass('premium-mask-active'); |
| 38 | |
| 39 | eleObserver.unobserve(entry.target); // to only excecute the callback func once. |
| 40 | } |
| 41 | }); |
| 42 | }); |
| 43 | |
| 44 | eleObserver.observe($scope[0]); |
| 45 | }; |
| 46 | |
| 47 | var PremiumTitleHandler = function ($scope, $) { |
| 48 | |
| 49 | var $titleContainer = $scope.find(".premium-title-container"), |
| 50 | $titleElement = $titleContainer.find('.premium-title-text'); |
| 51 | |
| 52 | if ($titleContainer.hasClass('style9')) { |
| 53 | var $style9 = $scope.find(".premium-title-style9"); |
| 54 | |
| 55 | $style9.each(function () { |
| 56 | var elm = $(this); |
| 57 | var holdTime = elm.attr('data-blur-delay') * 1000; |
| 58 | elm.attr('data-animation-blur', 'process') |
| 59 | elm.find('.premium-title-style9-letter').each(function (index, letter) { |
| 60 | index += 1; |
| 61 | var animateDelay; |
| 62 | if ($('body').hasClass('rtl')) { |
| 63 | animateDelay = 0.2 / index + 's'; |
| 64 | } else { |
| 65 | animateDelay = index / 20 + 's'; |
| 66 | } |
| 67 | $(letter).css({ |
| 68 | '-webkit-animation-delay': animateDelay, |
| 69 | 'animation-delay': animateDelay |
| 70 | }); |
| 71 | }) |
| 72 | setInterval(function () { |
| 73 | elm.attr('data-animation-blur', 'done') |
| 74 | setTimeout(function () { |
| 75 | elm.attr('data-animation-blur', 'process') |
| 76 | }, 150); |
| 77 | }, holdTime); |
| 78 | }); |
| 79 | } |
| 80 | |
| 81 | |
| 82 | if ($titleContainer.hasClass('style8')) { |
| 83 | |
| 84 | var holdTime = $titleElement.attr('data-shiny-delay') * 1000, |
| 85 | duration = $titleElement.attr('data-shiny-dur') * 1000; |
| 86 | |
| 87 | function shinyEffect() { |
| 88 | $titleElement.get(0).setAttribute('data-animation', 'shiny'); |
| 89 | setTimeout(function () { |
| 90 | $titleElement.removeAttr('data-animation') |
| 91 | }, duration); |
| 92 | } |
| 93 | |
| 94 | (function repeat() { |
| 95 | shinyEffect(); |
| 96 | setTimeout(repeat, holdTime); |
| 97 | })(); |
| 98 | } |
| 99 | |
| 100 | }; |
| 101 | |
| 102 | $(window).on('elementor/frontend/init', function () { |
| 103 | elementorFrontend.hooks.addAction('frontend/element_ready/premium-addon-title.default', PremiumTitleHandler); |
| 104 | elementorFrontend.hooks.addAction('frontend/element_ready/premium-addon-title.default', PremiumMaskHandler); |
| 105 | }); |
| 106 | })(jQuery); |
| 107 | |
| 108 |