PageSourceSearch

https://gsn.mnd-energystorage.cz/Scripts/jquery.resize.js

js mnd-energystorage.cz collected 2026-10-09 23:16:03 UTC 5,836 bytes, 164 lines download raw bytes

vendor: 5,836 bytes, lines 1-164
1/**
2* Detect Element Resize Plugin for jQuery
3*
4* https://github.com/sdecima/javascript-detect-element-resize
5* Sebastian Decima
6*
7* version: 0.5.3
8**/
9
10(function ( $ ) {
11	var attachEvent = document.attachEvent,
12		stylesCreated = false;
13	
14	var jQuery_resize = $.fn.resize;
15	
16	$.fn.resize = function(callback) {
17		return this.each(function() {
18			if(this == window)
19				jQuery_resize.call(jQuery(this), callback);
20			else
21				addResizeListener(this, callback);
22		});
23	}
24
25	$.fn.removeResize = function(callback) {
26		return this.each(function() {
27			removeResizeListener(this, callback);
28		});
29	}
30	
31	if (!attachEvent) {
32		var requestFrame = (function(){
33			var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame ||
34								function(fn){ return window.setTimeout(fn, 20); };
35			return function(fn){ return raf(fn); };
36		})();
37		
38		var cancelFrame = (function(){
39			var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame ||
40								   window.clearTimeout;
41		  return function(id){ return cancel(id); };
42		})();
43
44		function resetTriggers(element){
45			var triggers = element.__resizeTriggers__,
46				expand = triggers.firstElementChild,
47				contract = triggers.lastElementChild,
48				expandChild = expand.firstElementChild;
49			contract.scrollLeft = contract.scrollWidth;
50			contract.scrollTop = contract.scrollHeight;
51			expandChild.style.width = expand.offsetWidth + 1 + 'px';
52			expandChild.style.height = expand.offsetHeight + 1 + 'px';
53			expand.scrollLeft = expand.scrollWidth;
54			expand.scrollTop = expand.scrollHeight;
55		};
56
57		function checkTriggers(element){
58			return element.offsetWidth != element.__resizeLast__.width ||
59						 element.offsetHeight != element.__resizeLast__.height;
60		}
61		
62		function scrollListener(e){
63			var element = this;
64			resetTriggers(this);
65			if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);
66			this.__resizeRAF__ = requestFrame(function(){
67				if (checkTriggers(element)) {
68					element.__resizeLast__.width = element.offsetWidth;
69					element.__resizeLast__.height = element.offsetHeight;
70					element.__resizeListeners__.forEach(function(fn){
71						fn.call(element, e);
72					});
73				}
74			});
75		};
76		
77		/* Detect CSS Animations support to detect element display/re-attach */
78		var animation = false,
79			animationstring = 'animation',
80			keyframeprefix = '',
81			animationstartevent = 'animationstart',
82			domPrefixes = 'Webkit Moz O ms'.split(' '),
83			startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
84			pfx  = '';
85		{
86			var elm = document.createElement('fakeelement');
87			if( elm.style.animationName !== undefined ) { animation = true; }    
88			
89			if( animation === false ) {
90				for( var i = 0; i < domPrefixes.length; i++ ) {
91					if( elm.style[ domPrefixes[i] + 'AnimationName' ] !== undefined ) {
92						pfx = domPrefixes[ i ];
93						animationstring = pfx + 'Animation';
94						keyframeprefix = '-' + pfx.toLowerCase() + '-';
95						animationstartevent = startEvents[ i ];
96						animation = true;
97						break;
98					}
99				}
100			}
101		}
102		
103		var animationName = 'resizeanim';
104		var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
105		var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
106	}
107	
108	function createStyles() {
109		if (!stylesCreated) {
110			//opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
111			var css = (animationKeyframes ? animationKeyframes : '') +
112					'.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' +
113					'.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
114				head = document.head || document.getElementsByTagName('head')[0],
115				style = document.createElement('style');
116			
117			style.type = 'text/css';
118			if (style.styleSheet) {
119				style.styleSheet.cssText = css;
120			} else {
121				style.appendChild(document.createTextNode(css));
122			}
123
124			head.appendChild(style);
125			stylesCreated = true;
126		}
127	}
128	
129	window.addResizeListener = function(element, fn){
130		if (attachEvent) element.attachEvent('onresize', fn);
131		else {
132			if (!element.__resizeTriggers__) {
133				if (getComputedStyle(element).position == 'static') element.style.position = 'relative';
134				createStyles();
135				element.__resizeLast__ = {};
136				element.__resizeListeners__ = [];
137				(element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';
138				element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' +
139																						'<div class="contract-trigger"></div>';
140				element.appendChild(element.__resizeTriggers__);
141				resetTriggers(element);
142				element.addEventListener('scroll', scrollListener, true);
143				
144				/* Listen for a css animation to detect element display/re-attach */
145				animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function(e) {
146					if(e.animationName == animationName)
147						resetTriggers(element);
148				});
149			}
150			element.__resizeListeners__.push(fn);
151		}
152	};
153	
154	window.removeResizeListener = function(element, fn){
155		if (attachEvent) element.detachEvent('onresize', fn);
156		else {
157			element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
158			if (!element.__resizeListeners__.length) {
159					element.removeEventListener('scroll', scrollListener);
160					element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
161			}
162		}
163	}
164}( 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.