PageSourceSearch

https://www.sfr.re/wp-content/plugins/repeater-for-elementor/libs/elementor_repeater.js?ver=7.1.2

js sfr.re collected 2026-10-02 06:30:57 UTC 14,807 bytes, 362 lines download raw bytes

1(function($) {
2"use strict";
3	jQuery(document).ready(function($){
4		var repeater_render = false;
5		jQuery( document ).on( 'elementor/popup/show', () => {
6			get_repeater_data_name(2);
7		} );
8		setTimeout(function(){ 
9			 get_repeater_data_name(1);
10		 }, 200);
11		function change_name_and_ids(item,field_end = null,form = null,id_rand = null){
12			var datas = JSON.parse(field_end.find(".elementor-field-repeater-data").attr("value"));
13			var datas_ids = datas.id;
14			datas_ids.push(id_rand);
15			datas.id = datas_ids;
16			field_end.find(".elementor-field-repeater-data").attr("value",JSON.stringify(datas));		
17			item = $(item);
18			item.attr("data-id",id_rand);
19			console.log(item);
20			$(".elementor-field-group input.elementor-field, .elementor-field-group .elementor-field-option input",item).each(function(){
21				var group_class = $(this).closest(".elementor-field-group").attr("class");
22				var name = $(this).attr("name");
23				var type = $(this).attr("type");
24				var id = $(this).attr("id");
25				console.log(id);
26				if(group_class != "" && id !== undefined){
27					var id_group = id.replace("form-field-","");
28					if( group_class.search(id_rand) < 0 ) { //no match
29						const regex = /-\d$/gm;
30						id_group = id_group.replace(regex, '');
31						group_class = group_class.replace("elementor-field-group-"+id_group,"elementor-field-group-"+id_group+"-"+id_rand);
32						$(this).closest(".elementor-field-group").attr("class",group_class);
33					}						
34				}
35				var index = $(this).closest(".container-repeater-field").data("step");
36				if( type == "radio") {
37					$(this).attr("name",name+"["+id_rand+"]");
38				}else if(type == 'checkbox'){
39					if( !name.match(/\[]/)){
40						name = name+"["+id_rand+"]";
41					}else{
42						name = name.replace("[]","["+id_rand+"][]");
43					} 
44					$(this).attr("name",name);
45				}else if(type == 'file'){ 
46					if($(this).attr("multiple") == "multiple"){
47						const regex = /\[.*?\]\[/gm;
48						name = name.replace(regex,"["+id_rand+"][");
49						$(this).attr("name",name);
50					}else{
51						$(this).attr("name",name+"["+id_rand+"]");
52					}
53				}else{
54					$(this).attr("name",name+"["+id_rand+"]");
55				}
56				$(this).attr("data-id-repeater",id+"-"+id_rand+"");
57				$(this).attr("id",id+"-"+id_rand+"");
58			})
59			$(".elementor-field-group textarea",item).each(function(){
60				var group_class = $(this).closest(".elementor-field-group").attr("class");
61				var name = $(this).attr("name");
62				var id = $(this).attr("id");
63				if(group_class != ""){
64					var id_group = id.replace("form-field-","");
65					group_class = group_class.replace("elementor-field-group-"+id_group,"elementor-field-group-"+id_group+"-"+id_rand);
66					$(this).closest(".elementor-field-group").attr("class",group_class);	
67				}
68				$(this).attr("name",name+"["+id_rand+"]");
69				$(this).attr("id",id+"-"+id_rand+"");
70				$(this).attr("data-id-repeater",id+"-"+id_rand+"");
71			})
72			$(".elementor-field-group select",item).each(function(){
73				var group_class = $(this).closest(".elementor-field-group").attr("class");
74				var name = $(this).attr("name");
75				var id = $(this).attr("id");
76				if(group_class != ""){
77					var id_group = id.replace("form-field-","");
78					group_class = group_class.replace("elementor-field-group-"+id_group,"elementor-field-group-"+id_group+"-"+id_rand);
79					$(this).closest(".elementor-field-group").attr("class",group_class);	
80				}
81				$(this).attr("name",name+"["+id_rand+"]");
82				$(this).attr("id",id+"-"+id_rand+"");
83				$(this).attr("data-id-repeater",id+"-"+id_rand+"");
84			})
85			$(".elementor-field-type-html1 .elementor-field-html-type",item).each(function(){
86				var group_class = $(this).closest(".elementor-field-group").attr("class");
87				var id = $(this).attr("id");
88				if(group_class != ""){
89					var id_group = id.replace("form-field-","");
90					group_class = group_class.replace("elementor-field-group-"+id_group,"elementor-field-group-"+id_group+"-"+id_rand);
91					$(this).closest(".elementor-field-group").attr("class",group_class);	
92				}
93				$(this).attr("id",id+"-"+id_rand+"");
94				$(this).attr("data-id-repeater",id+"-"+id_rand+"");
95			})
96			return item;
97		}
98		function update_conditional_logic(id_rand,form){
99			var datas = $(".conditional_logic_data_js",form).attr("value");
100			if( datas === undefined){
101				var datas = $(".conditional_logic_data_js",form).val();
102			}
103			if( datas !== undefined){
104				datas = jQuery.parseJSON(datas);
105				var logic_field = datas;
106				var update = false;
107				$.each( datas, function( field_key, field_value ) {
108					update = true;
109					var new_key = field_key+"-"+id_rand;
110					var field_logic = [];
111					var field_value_condi = {};
112					$.each( field_value.datas, function( index,field  ) { 
113						var name =field.conditional_logic_id+"-"+id_rand;
114						field_logic.push( {conditional_logic_id:name,conditional_logic_operator:field.conditional_logic_operator,conditional_logic_value:field.conditional_logic_value});
115					})
116					logic_field[new_key] = {display:field_value.display, trigger: field_value.trigger,"datas":field_logic};
117					
118				});
119				if( update ){
120					var datas = $(".conditional_logic_data_js",form).attr("value",JSON.stringify(logic_field));
121					var datas = $(".conditional_logic_data_js",form).val(JSON.stringify(logic_field));
122				}
123			}
124		}
125		function add_repeater_data(button, form){
126			var start_field;
127			var id_rand = Math.floor(Math.random() * 10000);
128			var item = $('<div class="repeater-field-item"><div class="repeater-field-header"></div><div class="repeater-field-content"></div></div>');
129			button.prevAll().each(function(index){ 
130				var item = $(this).clone();
131				if( item.hasClass("elementor-field-type-repeater_start") ) {
132					start_field = $(this);
133					return false;
134				}
135			})
136			var html_field = get_repeater_data(button,form,id_rand);
137			var header = get_repeater_data_header(start_field);
138			item.find(".repeater-field-header").append(header);
139			item.find(".repeater-field-content").append(html_field);
140			button.find(".repeater-field-warp-item").append(item);
141			update_repeater_count_header();
142			$( ".elementor-field-calculator",button ).each(function( index ) {
143				  var formula = $(this).data("formula");
144				  var installed = $(this).data("installed");
145				  if( installed == "yes"){
146				  	return;
147				  }
148				  var id_repeater = $(this).closest(".container-repeater-field").data("id");
149				  var datas = button.find(".elementor-field-repeater-data").attr("value");
150				  datas = JSON.parse(datas);
151				  $.each( datas.fields, function( index,field  ) {
152				  	var name = get_name(field);
153				  	formula = formula.replace(name,name+"-"+id_repeater);
154				  })
155				  $(this).attr("data-formula",formula);
156				  $(this).attr("installed","yes");
157			});
158			update_conditional_logic(id_rand,form);
159			$( "input" ).trigger( "done_load_repeater",[item] );
160			if (typeof flatpickr !== "undefined") {
161				if(!elementor_repeater.wp_is_mobile){
162					$(".elementor-time-field.flatpickr-input", html_field).flatpickr({
163						enableTime: true,
164						noCalendar: true,
165						dateFormat: "H:i",
166					});
167					$(".elementor-date-field.flatpickr-input", html_field).flatpickr();
168				}
169			}
170		}
171		function get_name(string) {
172		  var name = string.match(/\[.*?\]/gm);
173		  return name[0].replace(/\[|\]/gm, '');
174		}
175		function get_repeater_data(step_field,form,id_rand){
176			var text_html = repeater_decodeHtml(step_field.find(".elementor-field-repeater-data-html").val());
177			var html_step = change_name_and_ids(text_html,step_field,form,id_rand);
178			return html_step;
179		}
180		function repeater_escapeHtml(str){
181		    var map =
182		    {
183		        '&': '&amp;',
184		        '<': '&lt;',
185		        '>': '&gt;',
186		        '"': '&quot;',
187		        "'": '&#039;'
188		    };
189		    return str.replace(/[&<>"']/g, function(m) {return map[m];});
190		}
191		function repeater_decodeHtml(str){
192		    var map =
193		    {
194		        '&amp;': '&',
195		        '&lt;': '<',
196		        '&gt;': '>',
197		        '&quot;': '"',
198		        '&#039;': "'"
199		    };
200		    return str.replace(/&amp;|&lt;|&gt;|&quot;|&#039;/g, function(m) {return map[m];});
201		}
202		function get_repeater_data_name(type=1){
203			var i = 1;
204			$(".elementor-field-type-repeater_start").each(function(){
205				var installed = $(this).attr("data-intalled");
206				if( installed != "ok" ){
207					$(this).attr("data-intalled","ok");
208					repeater_render = true;
209					var html_step = $("<div class='container-repeater-field'></div>");
210					var names = [];
211					var step_field = "";
212					var form ="";
213					var elements = $(this).nextAll();
214					elements.each(function(index){ 
215							var item = $(this).clone();
216							if( item.hasClass("elementor-field-type-repeater") ) {
217								$(this).attr("data-id",i);
218								step_field = $(this);
219								form = step_field.closest(".elementor-widget-form");
220								$(this).find(".elementor-field-repeater-data").attr("value",JSON.stringify({"count":1,"fields":names,"id":[]}));
221								return false;
222							}
223							$(this).remove();
224							html_step.append(item);
225							var check_name = null;
226							if( item.find("input").attr("name") ) {
227								names.push(item.find("input").attr("name"));
228							}else if( item.find("textarea").attr("name") ){
229								names.push(item.find("textarea").attr("name"));
230							}else if( item.find("select").attr("name") ){
231								names.push(item.find("select").attr("name"));
232							}else{
233								names.push(item.find("input").attr("name"));
234							}	
235					})
236					var text_html = "<div class='container-repeater-field'>"+html_step.html()+"</div>";
237					text_html = repeater_escapeHtml(text_html);
238					step_field.find(".elementor-field-repeater-data-html").val(text_html);
239					var initial_rows = 0;
240					initial_rows = step_field.find(".elementor-field-repeater-end").data("initial_rows");
241					var initial_rows_map_field = step_field.find(".elementor-field-repeater-end").data("initial_rows_map");
242					
243					
244					if($("#form-field-"+initial_rows_map_field).length > 0){
245						var initial_rows_map_number = $("#form-field-"+initial_rows_map_field).val();
246						$("#form-field-"+initial_rows_map_field).attr("data-repeater",step_field.find(".elementor-field-repeater-end").data("map_id"));
247						$("#form-field-"+initial_rows_map_field).attr("repeater_initial_rows","ok");
248						initial_rows = initial_rows_map_number;
249						step_field.find(".repeater-field-button-add").addClass("hidden");
250						step_field.addClass("repeater-remove-toolbar");
251					}
252					setTimeout(function() {
253					for (var j = 0; j < initial_rows; j++) {
254						add_repeater_data(step_field.closest(".elementor-field-type-repeater"),form);
255					}
256					}, 100);
257					i++;
258				}
259			})
260		}
261		$("body").on("change","[repeater_initial_rows='ok']",function (e){
262			var repeater_id = $(this).data("repeater");
263			$("."+repeater_id).find(".repeater-field-item").remove();
264			var number = $(this).val();
265			if(number == ""){
266				number = $(this).attr("value");
267			}
268			for (let i = 0; i < number; i++) {
269			  $("."+repeater_id).find(".repeater-field-button-add").click();
270			}	
271		})
272		function get_repeater_data_header(start_field){
273			var html_step = start_field.find(".repeater-field-header-data").val();
274			return html_step;
275		}
276		function update_repeater_count_header(){
277			$(".elementor-field-repeater-end").each(function(){
278					var i = 1;
279					$(".repeater-field-item",$(this)).each(function(){
280						$(this).find(".repeater-field-header-count").html(i);
281						i++;
282					})
283					var datas = JSON.parse($(this).find(".elementor-field-repeater-data").attr("value"));
284					datas.count = i-1;
285					$(this).find(".elementor-field-repeater-data").attr("value",JSON.stringify(datas));
286			});
287		}
288		function check_max_row(step_field){
289			var max = step_field.find(".elementor-field-repeater-end").data("limit");
290			if(max == "" || max < 1){
291				max = 999;
292			}
293			var number_item = $('.repeater-field-item',step_field).length;
294			if( number_item >= (max -1 ) ){
295				step_field.find(".repeater-field-button-add").addClass("hidden");
296			}
297			if( number_item >= max ){
298				return false;
299			}else{
300				return true;
301			}
302		}
303		function check_min_row(step_field){
304			var min = step_field.find(".elementor-field-repeater-end").data("initial_rows");
305			if(min == ""){
306				min = 0;
307			}
308			var number_item = $('.repeater-field-item',step_field).length;
309			if( number_item <= min ){
310				return false;
311			}else{
312				return true;
313			}
314		}
315		function removeAR(arr) {
316		    var what, a = arguments, L = a.length, ax;
317		    while (L > 1 && arr.length) {
318		        what = a[--L];
319		        while ((ax= arr.indexOf(what)) !== -1) {
320		            arr.splice(ax, 1);
321		        }
322		    }
323		    return arr;
324		}
325	    $("body").on("click",".repeater-field-button-add",function(e){
326	    	e.preventDefault();
327	    	if( check_max_row($(this).closest(".elementor-field-type-repeater")) ){
328				var form = $(this).closest(".elementor-widget-form");
329	    		add_repeater_data($(this).closest(".elementor-field-type-repeater"),form);
330	    	}else{
331	    		$(this).addClass('hidden');
332	    	}
333	    })
334	    $("body").on("click",".repeater-field-header-acctions-toogle",function(e){
335	    	e.preventDefault();
336	    	if( $(this).hasClass("icon-down-open")){
337	    		$(this).removeClass("icon-down-open");
338	    		$(this).addClass("icon-up-open");
339	    	}else{
340	    		$(this).addClass("icon-down-open");
341	    		$(this).removeClass("icon-up-open");
342	    	}
343	    	$(this).closest(".repeater-field-item").find(".repeater-field-content").slideToggle("slow");
344	    	$(this).closest(".repeater-field-item").find(".repeater-field-header").toggleClass('repeater-content-show');
345	    })
346	    $("body").on("click",".repeater-field-header-acctions-remove",function(e){
347	    	e.preventDefault();
348	    	$(this).closest(".elementor-field-type-repeater").find(".repeater-field-button-add").removeClass('hidden');
349	    	if( check_min_row($(this).closest(".elementor-field-type-repeater")) ){
350	    		var id = $(this).closest(".repeater-field-item").find(".container-repeater-field").data("id");
351	    		var datas = JSON.parse($(this).closest(".elementor-field-type-repeater").find(".elementor-field-repeater-data").attr("value"));
352				var datas_ids = datas.id;
353				datas_ids = removeAR(datas_ids,id);
354				datas.id = datas_ids;
355				$(this).closest(".elementor-field-type-repeater").find(".elementor-field-repeater-data").attr("value",JSON.stringify(datas));
356	    		$(this).closest(".repeater-field-item").remove();
357	    	}else{
358	    	}
359	    	update_repeater_count_header();
360	    })
361	})
362})(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.