PageSourceSearch

https://nikart74.ru/dist2/assets/js/jquery.appear.js

js nikart74.ru collected 2026-10-07 02:02:05 UTC 3,202 bytes, 151 lines download raw bytes

vendor: 3,202 bytes, lines 1-151
1/*
2 * jQuery.appear
3 * ://github.com/bas2k/jquery.appear/
4 * http://code.google.com/p/jquery-appear/
5 *
6 * Copyright (c) 2009 Michael Hixson
7 * Copyright (c) 2012 Alexander Brovikov
8 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
9 */
10(function($) {
11	    'use strict';
12	$.fn.appear = function(fn, options) {
13
14		var settings = $.extend({
15
16			//arbitrary data to pass to fn
17			data: undefined,
18
19			//call fn only on the first appear?
20			one: true,
21
22			// X & Y accuracy
23			accX: 0,
24			accY: 0
25
26		}, options);
27
28		return this.each(function() {
29
30			var t = $(this);
31
32			//whether the element is currently visible
33			t.appeared = false;
34
35			if (!fn) {
36
37				//trigger the custom event
38				t.trigger('appear', settings.data);
39				return;
40			}
41
42			var w = $(window);
43
44			//fires the appear event when appropriate
45			var check = function() {
46
47				//is the element hidden?
48				if (!t.is(':visible')) {
49
50					//it became hidden
51					t.appeared = false;
52					return;
53				}
54
55				//is the element inside the visible window?
56				var a = w.scrollLeft();
57				var b = w.scrollTop();
58				var o = t.offset();
59				var x = o.left;
60				var y = o.top;
61
62				var ax = settings.accX;
63				var ay = settings.accY;
64				var th = t.height();
65				var wh = w.height();
66				var tw = t.width();
67				var ww = w.width();
68
69				if (y + th + ay >= b &&
70					y <= b + wh + ay &&
71					x + tw + ax >= a &&
72					x <= a + ww + ax) {
73
74					//trigger the custom event
75					if (!t.appeared) t.trigger('appear', settings.data);
76
77				} else {
78
79					//it scrolled out of view
80					t.appeared = false;
81				}
82			};
83
84			//create a modified fn with some additional logic
85			var modifiedFn = function() {
86
87				//mark the element as visible
88				t.appeared = true;
89
90				//is this supposed to happen only once?
91				if (settings.one) {
92
93					//remove the check
94					w.unbind('scroll', check);
95					var i = $.inArray(check, $.fn.appear.checks);
96					if (i >= 0) $.fn.appear.checks.splice(i, 1);
97				}
98
99				//trigger the original fn
100				fn.apply(this, arguments);
101			};
102
103			//bind the modified fn to the element
104			if (settings.one) t.one('appear', settings.data, modifiedFn);
105			else t.bind('appear', settings.data, modifiedFn);
106
107			//check whenever the window scrolls
108			w.scroll(check);
109
110			//check whenever the dom changes
111			$.fn.appear.checks.push(check);
112
113			//check now
114			(check)();
115		});
116	};
117
118	//keep a queue of appearance checks
119	$.extend($.fn.appear, {
120
121		checks: [],
122		timeout: null,
123
124		//process the queue
125		checkAll: function() {
126			var length = $.fn.appear.checks.length;
127			if (length > 0) while (length--) ($.fn.appear.checks[length])();
128		},
129
130		//check the queue asynchronously
131		run: function() {
132			if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout);
133			$.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20);
134		}
135	});
136
137	//run checks when these methods are called
138	$.each(['append', 'prepend', 'after', 'before', 'attr',
139		'removeAttr', 'addClass', 'removeClass', 'toggleClass',
140		'remove', 'css', 'show', 'hide'], function(i, n) {
141		var old = $.fn[n];
142		if (old) {
143			$.fn[n] = function() {
144				var r = old.apply(this, arguments);
145				$.fn.appear.run();
146				return r;
147			}
148		}
149	});
150
151})(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.