PageSourceSearch

https://motarme.com/wp-content/plugins/droit-elementor-addons/assets/vendor/masonry/masonry_grid.js?ver=3.1.5

js motarme.com collected 2026-10-05 18:35:11 UTC 6,469 bytes, 230 lines download raw bytes

1(function($) {
2		'use strict';
3		$.fn.dlAddonsGridLayout = function () {
4			var $el, $grid, resizeTimer;
5			/**
6			 * Calculate size for grid items
7			 */
8			function calculateMasonrySize(isotopeOptions) {
9				var tabletBreakPoint = 1025,
10					mobileBreakPoint = 768,
11					windowWidth = window.innerWidth,
12					gridWidth = $grid[0].getBoundingClientRect().width,
13					gridColumns = 1,
14					gridGutter = 0,
15					zigzagHeight = 0,
16					settings = $el.data('grid'),
17					lgGutter = settings.gutter ? settings.gutter : 0,
18					mdGutter = settings.gutterTablet ? settings.gutterTablet : lgGutter,
19					smGutter = settings.gutterMobile ? settings.gutterMobile : mdGutter,
20					lgColumns = settings.columns ? settings.columns : 1,
21					mdColumns = settings.columnsTablet ? settings.columnsTablet : lgColumns,
22					smColumns = settings.columnsMobile ? settings.columnsMobile : mdColumns,
23					lgZigzagHeight = settings.zigzagHeight ? settings.zigzagHeight : 0,
24					mdZigzagHeight = settings.zigzagHeightTablet ? settings.zigzagHeightTablet : lgZigzagHeight,
25					smZigzagHeight = settings.zigzagHeightMobile ? settings.zigzagHeightMobile : mdZigzagHeight,
26					zigzagReversed = settings.zigzagReversed && settings.zigzagReversed === 1 ? true : false;
27
28				if (typeof elementorFrontendConfig !== 'undefined') {
29					tabletBreakPoint = elementorFrontendConfig.breakpoints.lg;
30					mobileBreakPoint = elementorFrontendConfig.breakpoints.md;
31				}
32
33				if (windowWidth >= tabletBreakPoint) {
34					gridColumns = lgColumns;
35					gridGutter = lgGutter;
36					zigzagHeight = lgZigzagHeight;
37				} else if (windowWidth >= mobileBreakPoint) {
38					gridColumns = mdColumns;
39					gridGutter = mdGutter;
40					zigzagHeight = mdZigzagHeight;
41				} else {
42					gridColumns = smColumns;
43					gridGutter = smGutter;
44					zigzagHeight = smZigzagHeight;
45				}
46
47				var totalGutterPerRow = (
48					gridColumns - 1
49				) * gridGutter;
50
51				var columnWidth = (
52					gridWidth - totalGutterPerRow
53				) / gridColumns;
54
55				columnWidth = Math.floor(columnWidth);
56
57				var columnWidth2 = columnWidth;
58				if (gridColumns > 1) {
59					columnWidth2 = columnWidth * 2 + gridGutter;
60				}
61
62				$grid.children('.grid-sizer').css({
63					'width': columnWidth + 'px'
64				});
65
66				var columnHeight = 0,
67					columnHeight2 = 0, // 200%.
68					columnHeight7 = 0, // 70%.
69					columnHeight13 = 0, // 130%.
70					isMetro = false,
71					ratioW = 1,
72					ratioH = 1;
73
74				if (settings.ratio) {
75					ratioH = settings.ratio;
76					isMetro = true;
77				}
78
79				// Calculate item height for only metro type.
80				if (isMetro) {
81					columnHeight = columnWidth * ratioH / ratioW;
82					columnHeight = Math.floor(columnHeight);
83
84					if (gridColumns > 1) {
85						columnHeight2 = columnHeight * 2 + gridGutter;
86						columnHeight13 = parseInt(columnHeight * 1.3);
87						columnHeight7 = columnHeight2 - gridGutter - columnHeight13;
88					} else {
89						columnHeight2 = columnHeight7 = columnHeight13 = columnHeight;
90					}
91				}
92
93				$grid.children('.grid-item').each(function (index) {
94					var gridItem = $(this);
95
96					// Zigzag.
97					if (
98						zigzagHeight > 0 // Has zigzag.
99						&&
100						gridColumns > 1 // More than 1 column.
101						&&
102						index + 1 <= gridColumns // On top items.
103					) {
104						if (zigzagReversed === false) { // Is odd item.
105							if (index % 2 === 0) {
106								gridItem.css({
107									'marginTop': zigzagHeight + 'px'
108								});
109							} else {
110								gridItem.css({
111									'marginTop': '0px'
112								});
113							}
114						} else {
115							if (index % 2 !== 0) {
116								gridItem.css({
117									'marginTop': zigzagHeight + 'px'
118								});
119							} else {
120								gridItem.css({
121									'marginTop': '0px'
122								});
123							}
124						}
125
126					} else {
127						gridItem.css({
128							'marginTop': '0px'
129						});
130					}
131
132					if (gridItem.data('width') === 2) {
133						gridItem.css({
134							'width': columnWidth2 + 'px'
135						});
136					} else {
137						gridItem.css({
138							'width': columnWidth + 'px'
139						});
140					}
141
142					if ('grid' === settings.type) {
143						gridItem.css({
144							'marginBottom': gridGutter + 'px'
145						});
146					}
147
148					if (isMetro) {
149						var $itemHeight;
150
151						if (gridItem.hasClass('grid-item-height')) {
152							$itemHeight = gridItem;
153						} else {
154							$itemHeight = gridItem.find('.grid-item-height');
155						}
156
157						if (gridItem.data('height') === 2) {
158							$itemHeight.css({
159								'height': columnHeight2 + 'px'
160							});
161						} else if (gridItem.data('height') === 1.3) {
162							$itemHeight.css({
163								'height': columnHeight13 + 'px'
164							});
165						} else if (gridItem.data('height') === 0.7) {
166							$itemHeight.css({
167								'height': columnHeight7 + 'px'
168							});
169						} else {
170							$itemHeight.css({
171								'height': columnHeight + 'px'
172							});
173						}
174					}
175				});
176
177				if (isotopeOptions) {
178					isotopeOptions.packery.gutter = gridGutter;
179					isotopeOptions.fitRows.gutter = gridGutter;
180					$grid.isotope(isotopeOptions);
181				}
182
183				$grid.isotope('layout');
184			}
185			return this.each(function () {
186				$el = $(this);
187				$grid = $el.find('.dl_addons_grid');
188
189				var settings = $el.data('grid');
190				var gridData;
191
192				if ($grid.length > 0 && settings && typeof settings.type !== 'undefined') {
193					var isotopeOptions = {
194						itemSelector: '.grid-item',
195						percentPosition: true,
196						// transitionDuration: 0,
197						packery: {
198							columnWidth: '.grid-sizer',
199						},
200						fitRows: {
201							gutter: 10
202						}
203					};
204
205					if ('masonry' === settings.type || 'metro' === settings.type) {
206						isotopeOptions.layoutMode = 'packery';
207					} else {
208						isotopeOptions.layoutMode = 'fitRows';
209					}
210
211					gridData = $grid.imagesLoaded(function () {
212						calculateMasonrySize(isotopeOptions);
213						$grid.addClass('loaded');
214					});				
215
216					$(window).resize(function () {
217						calculateMasonrySize(isotopeOptions);
218
219						// Sometimes layout can be overlap. then re-cal layout one time.
220						clearTimeout(resizeTimer);
221						resizeTimer = setTimeout(function () {
222							// Run code here, resizing has "stopped"
223							calculateMasonrySize(isotopeOptions);
224						}, 500); // DO NOT decrease the time. Sometime, It'll make layout overlay on resize.
225					});
226				} 
227		
228            });
229		};
230}(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.