1(function ($) { 2 "use strict"; 3 var ELPENCI_CR = ELPENCI_CR || {}; 4 5 ELPENCI_CR.PenciCustomCursor = function () { 6 if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { 7 return; 8 } 9 if ($("body").hasClass("penci-cc-cursor")) { 10 const cursorInnerEl = document.querySelector( 11 ".penci-ccircle-cinner" 12 ); 13 const cursorOuterEl = document.querySelector( 14 ".penci-ccircle-couter" 15 ); 16 17 if (!cursorInnerEl || !cursorOuterEl) return; 18 19 let lastY, 20 lastX = 0; 21 let magneticFlag = false; 22 23 // move 24 window.onmousemove = function (event) { 25 if (!magneticFlag) { 26 cursorOuterEl.style.transform = 27 "translate(" + 28 event.clientX + 29 "px, " + 30 event.clientY + 31 "px" + 32 ")"; 33 } 34 cursorInnerEl.style.transform = 35 "translate(" + 36 event.clientX + 37 "px, " + 38 event.clientY + 39 "px" + 40 ")"; 41 lastY = event.clientY; 42 lastX = event.clientX; 43 44 //iframe fix 45 if ($(event.target).is("iframe")) { 46 cursorOuterEl.style.visibility = "hidden"; 47 cursorInnerEl.style.visibility = "hidden"; 48 } else { 49 cursorOuterEl.style.visibility = "visible"; 50 cursorInnerEl.style.visibility = "visible"; 51 } 52 }; 53 54 // links hover 55 $("body").on("mouseenter", "a, .cursor-as-pointer", function () { 56 cursorInnerEl.classList.add("penci-clinkh"); 57 cursorOuterEl.classList.add("penci-clinkh"); 58 }); 59 $("body").on("mouseleave", "a, .cursor-as-pointer", function () { 60 if ( 61 $(this).is("a") && 62 $(this).closest(".cursor-as-pointer").length 63 ) { 64 return; 65 } 66 cursorInnerEl.classList.remove("penci-clinkh"); 67 cursorOuterEl.classList.remove("penci-clinkh"); 68 }); 69 70 // additional hover cursor class 71 $("body").on("mouseenter", "[data-cursor-class]", function () { 72 const cursorClass = $(this).attr("data-cursor-class"); 73 74 if (cursorClass.indexOf("dark-color") != -1) { 75 cursorInnerEl.classList.add("dark-color"); 76 cursorOuterEl.classList.add("dark-color"); 77 } 78 79 if (cursorClass.indexOf("cursor-link") != -1) { 80 cursorInnerEl.classList.add("cursor-link"); 81 cursorOuterEl.classList.add("cursor-link"); 82 } 83 }); 84 $("body").on("mouseleave", "[data-cursor-class]", function () { 85 const cursorClass = $(this).attr("data-cursor-class"); 86 if (cursorClass.indexOf("dark-color") != -1) { 87 cursorInnerEl.classList.remove("dark-color"); 88 cursorOuterEl.classList.remove("dark-color"); 89 } 90 91 if (cursorClass.indexOf("cursor-link") != -1) { 92 cursorInnerEl.classList.remove("cursor-link"); 93 cursorOuterEl.classList.remove("cursor-link"); 94 } 95 }); 96 97 // magnet elements 98 $("body").on( 99 "mouseenter", 100 ".cursor-magnet, .icon-button", 101 function () { 102 const $elem = $(this); 103 const scrollTop = 104 window.pageYOffset || 105 document.documentElement.scrollTop; 106 cursorOuterEl.style.transition = "all .2s ease-out"; 107 cursorOuterEl.style.transform = 108 "translate(" + 109 $elem.offset().left + 110 "px, " + 111 ($elem.offset().top - scrollTop) + 112 "px" + 113 ")"; 114 cursorOuterEl.style.width = $elem.width() + "px"; 115 cursorOuterEl.style.height = $elem.height() + "px"; 116 cursorOuterEl.style.marginLeft = 0; 117 cursorOuterEl.style.marginTop = 0; 118 magneticFlag = true; 119 } 120 ); 121 122 $("body").on( 123 "mouseleave", 124 ".cursor-magnet, .icon-button", 125 RemoveMagneticFromCursor 126 ); 127 128 function RemoveMagneticFromCursor() { 129 cursorOuterEl.style.transition = null; 130 cursorOuterEl.style.width = null; 131 cursorOuterEl.style.height = null; 132 cursorOuterEl.style.marginLeft = null; 133 cursorOuterEl.style.marginTop = null; 134 magneticFlag = false; 135 } 136 137 // Custom leave trigger 138 $("body").on("penci_mouseleave", function () { 139 RemoveMagneticFromCursor(); 140 cursorOuterEl.style.transform = cursorInnerEl.style.transform; 141 cursorInnerEl.classList.remove("penci-clinkh"); 142 cursorOuterEl.classList.remove("penci-clinkh"); 143 }); 144 145 $("body").on("mouseenter", "iframe", function () { 146 cursorOuterEl.style.visibility = "hidden"; 147 cursorInnerEl.style.visibility = "hidden"; 148 }); 149 150 cursorInnerEl.style.visibility = "visible"; 151 cursorOuterEl.style.visibility = "visible"; 152 } 153 }; 154 155 $(document).ready(function () { 156 ELPENCI_CR.PenciCustomCursor(); 157 }); 158 159})(jQuery);
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.