PageSourceSearch

https://fwood-mie.com/enthalten/components/gehalt/plugins/powerpac…/assets/js/pp-custom-cursor.js?ver=2.4.2

js fwood-mie.com collected 2026-10-04 04:44:52 UTC 3,544 bytes, 116 lines download raw bytes

1(function ($) {
2    'use strict';
3    
4    var getElementSettings = function ($element) {
5		var elementSettings  = {},
6			modelCID         = $element.data('model-cid');
7
8		if ( isEditMode && modelCID ) {
9			var settings 		= lealesFrontend.config.elements.data[ modelCID ],
10				settingsKeys 	= lealesFrontend.config.elements.keys[ settings.attributes.widgetType || settings.attributes.elType ];
11
12			jQuery.each( settings.getActiveControls(), function( controlKey ) {
13				if ( -1 !== settingsKeys.indexOf( controlKey ) ) {
14					elementSettings[ controlKey ] = settings.attributes[ controlKey ];
15				}
16			} );
17		} else {
18			elementSettings = $element.data('settings') || {};
19		}
20
21		return elementSettings;
22	};
23
24    var isEditMode		= false;
25
26	var CustomCursorHandler = function ($scope, $) {
27		var elementSettings      = getElementSettings( $scope ),
28			custom_cursor_enable = elementSettings.pp_custom_cursor_enable,
29			columnId             = $scope.data('id'),
30			cursorType           = elementSettings.pp_custom_cursor_type,
31			cursorIcon           = elementSettings.pp_custom_cursor_icon,
32			cursorText           = elementSettings.pp_custom_cursor_text,
33			cursorTarget         = elementSettings.pp_custom_cursor_target;
34
35		if ( 'yes' === custom_cursor_enable ) {
36			
37			var selector  = ".leales-element-" + columnId,
38				$selector = $(".leales-element-" + columnId);
39
40			if ( 'selector' === cursorTarget ) {
41				selector = elementSettings.pp_custom_cursor_css_selector,
42				$selector = $scope.find(selector);
43			}
44
45			if ( 'image' === cursorType ) {
46
47				$("#style-" + columnId).remove();
48
49				if ( cursorIcon.url === undefined || cursorIcon.url === '' ) {
50					return;
51				}
52
53				$('head').append('<style type="text/css" id="style-' + columnId + '">' + selector + ', ' + selector + ' * { cursor: url(' + cursorIcon.url + '), auto !important; }</style>');
54
55			} else if ( 'follow-image' === cursorType ) {
56
57				$("#style-" + columnId).remove();
58
59				if ( cursorIcon.url === undefined || cursorIcon.url === '' ) {
60					return;
61				}
62
63				$scope.append('<img src="' + cursorIcon.url + '" alt="Cursor Image" class="pp-cursor-pointer">');
64
65				$selector.mouseenter(function() {
66					$(".pp-custom-cursor").removeClass("pp-cursor-active");
67					$scope.addClass( "pp-cursor-active" );
68
69					$(document).mousemove(function(e){
70						$('.pp-cursor-pointer',this).offset({
71							left: e.pageX + 0,
72							top: e.pageY + 0
73						});
74					});
75				}).mouseleave(function() {
76					$scope.removeClass( "pp-cursor-active" );
77				});
78
79			} else if ( 'follow-text' === cursorType ) {
80
81				$("#style-" + columnId).remove();
82
83				$scope.append('<div class="pp-cursor-pointer pp-cursor-pointer-text">' + cursorText + '</div>');
84
85				$selector.mouseenter(function() {
86					$(".pp-custom-cursor").removeClass("pp-cursor-active");
87					$scope.addClass( "pp-cursor-active" );
88
89					var cursor = $scope.find('.pp-cursor-pointer'),
90						width  = cursor.outerWidth(),
91						height = cursor.outerHeight();
92
93					$(document).mousemove(function(e){
94						cursor.offset({
95							left: e.pageX + 0 - (width/2),
96							top: e.pageY + 0 - (height/2)
97						});
98					});
99				}).mouseleave(function() {
100					$scope.removeClass( "pp-cursor-active" );
101				});
102			}
103		} else {
104			$("#style-" + columnId).remove();
105		}
106	};
107    
108    $(window).on('leales/frontend/init', function () {
109        if ( lealesFrontend.isEditMode() ) {
110			isEditMode = true;
111		}
112        
113        lealesFrontend.hooks.addAction('frontend/element_ready/global', CustomCursorHandler);
114    });
115    
116}(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.