PageSourceSearch

https://cdn.techniques-ingenieur.fr/chatbot/prod/chatbot-jquery.js?s=163%20923

js techniques-ingenieur.fr collected 2026-09-24 09:17:21 UTC 6,725 bytes, 190 lines download raw bytes

1function callChatbotDl( dlEvent ){
2	console.log ("--> event tracking");
3	console.log (dlEvent);
4	dataLayer.push( dlEvent );
5}
6window.onload = function(e) {
7	const chatBot = jQuery('#chatbot');
8	const chatBotHeader = jQuery('#chatbot .block-header');
9	const chatBotBody = jQuery('#chatbot .block-body');
10	const chatBotfooter = jQuery('#chatbot .block-footer');
11	const chatBotSatisfaction = jQuery('#chatbot .block-satisfaction');
12		
13	function HeaderTransform() {
14		chatBotHeader.toggleClass('flex-dir-col').toggleClass('opened');
15		chatBotHeader.find('.block-left').toggleClass('flex-dir-col');
16		chatBotHeader.find('.block-left div').toggleClass('flex-dir-col');
17		chatBotHeader.find('.block-left div p+p span:first-child').toggleClass('hide');
18		chatBotHeader.find('.block-right .fa-minus-close').toggleClass('hide');
19		chatBotHeader.find('.block-right .fa-open').toggleClass('hide');
20	}
21
22	if(chatBot.hasClass('instit')){
23		chatBot.toggleClass('sticky');
24		HeaderTransform();
25		chatBotBody.toggle();
26		chatBotfooter.toggle();
27		chatBot.show();
28
29		chatBot
30			.on('click', '.closed', function () {
31				jQuery('#chatbot .block-satisfaction').show();
32			})
33			.on('click', '.exit', function () {
34				jQuery('#chatbot .block-satisfaction').find('#step1').show();
35				jQuery('#chatbot .block-satisfaction').find('#step2').hide();
36				jQuery('#chatbot .block-satisfaction').find('#step3').hide();
37				jQuery('#chatbot .block-satisfaction').toggle();
38				const isHide = jQuery("#contact-options").hasClass('hide');
39				if (isHide) {
40					jQuery('#contact-options').removeClass('hide');
41					jQuery('#chat-bot-instit').toggleClass('col-md-12 col-md-5');
42					jQuery('#chatbot .block-header').find('.block-right .fa-minus-close .compress')
43						.toggleClass('fa-expand fa-compress expand compress');
44				}
45				callChatbotDl({'event': 'close_cb'});
46			})
47			.on('click', '.expand, .compress', function () {
48				const isExpand = jQuery(this).hasClass('expand');
49				chatBotHeader.find('.block-right .fa-minus-close .' + (isExpand ? 'expand' : 'compress'))
50					.toggleClass('fa-expand fa-compress expand compress');
51				callChatbotDl({ 'event': 'expand_cb' });
52
53				if(isExpand) {
54					const chatBotInstitTop = jQuery('#contact-options').offset();
55					jQuery('html, body').animate({
56						scrollTop: chatBotInstitTop.top - 58
57					}, 1);
58				}
59
60				jQuery('#contact-options').toggleClass('hide', isExpand);
61				jQuery('#chat-bot-instit')
62					.toggleClass('col-md-5', !isExpand)
63					.toggleClass('col-md-12', isExpand);
64			})
65
66		if(jQuery(window).width() > 991 && $('#chat-bot-instit').length) {
67			const chatBotHeight = jQuery(window).height() - $('#chat-bot-instit').offset().top - chatBotHeader.outerHeight() - chatBotfooter.outerHeight();
68			chatBotBody.find('#copy+div').css({"height":chatBotHeight});
69		}
70
71		if(jQuery(window).width() < 992) {
72			chatBot
73				.on('click', '.block-border-top, .block-header', function () {
74					chatBot.addClass('open');
75				})
76				.on('click', '.exit', function () {
77					chatBot.removeClass('open');
78				})
79		}
80
81		function throttle(func, limit) {
82			let lastFunc;
83			let lastRan;
84			return function() {
85				const context = this;
86				const args = arguments;
87				if (!lastRan) {
88					func.apply(context, args);
89					lastRan = Date.now();
90				} else {
91					clearTimeout(lastFunc);
92					lastFunc = setTimeout(function() {
93						if ((Date.now() - lastRan) >= limit) {
94							func.apply(context, args);
95							lastRan = Date.now();
96						}
97					}, limit - (Date.now() - lastRan));
98				}
99			}
100		}
101
102		jQuery(window).scroll(throttle(function () {
103			let scrollTop     = $(window).scrollTop(),
104				elementOffset = $('#chat-bot-instit').offset().top,
105				distance      = (elementOffset - scrollTop);
106			if (distance > 73) {
107				const chatBotHeight = jQuery(window).height() - chatBotHeader.outerHeight() - chatBotfooter.outerHeight() - distance;
108				chatBotBody.find('#copy+div').css({"height":chatBotHeight});
109			}
110		}, 100));
111	}
112	else {
113		chatBot
114			.on('click', '.collapsed', function () {
115				if (chatBotBody.is(":visible")) {
116					callChatbotDl({'event': 'reduce_cb'});
117				} else {
118					callChatbotDl({'event': 'expand_cb'});
119					//alert ("Going to visible")
120				}
121				chatBot.toggleClass('collapsed');
122				if (chatBotHeader.find('.block-right .fa-minus-close .expand').hasClass('fa-compress')) {
123					chatBot.removeClass('expand');
124					chatBotHeader.find('.block-right .fa-minus-close .expand').toggleClass('fa-expand fa-compress')
125				}
126				chatBotHeader.find('.block-right .fa-minus-close .expand').toggleClass('hide');
127				chatBotBody.toggle();
128				chatBotfooter.toggle();
129
130			})
131			.on('click', '.expand', function () {
132				chatBot.toggleClass('expand');
133				chatBotHeader.find('.block-right .fa-minus-close .expand').toggleClass('fa-expand fa-compress');
134				callChatbotDl({'event': 'expand_cb'});
135			})
136			.on('click', '.opened, .exit', function () {
137				if (chatBot.hasClass('collapsed')) {
138					chatBot.toggleClass('collapsed sticky');
139					HeaderTransform();
140					callChatbotDl({'event': 'open_cb'});
141				} else {
142					if (!chatBotBody.is(":visible")) {
143						callChatbotDl({'event': 'open_cb'});
144					}
145					chatBot.toggleClass('sticky');
146					HeaderTransform();
147					chatBotBody.toggle();
148					chatBotfooter.toggle();
149				}
150			})
151			.on('click', '.exit', function () {
152				chatBot.removeClass('expand');
153				chatBotHeader.find('.block-right .fa-minus-close .expand').removeClass('hide');
154				if (chatBotHeader.find('.block-right .fa-minus-close .expand').hasClass('fa-compress')) {
155					chatBotHeader.find('.block-right .fa-minus-close .expand').toggleClass('fa-expand fa-compress')
156				}
157				chatBotSatisfaction.toggle();
158				callChatbotDl({'event': 'close_cb'});
159			})
160			.on('click', '.closed', function () {
161				if (chatBot.hasClass('collapsed')) {
162					chatBot.toggleClass('collapsed');
163					chatBotHeader.find('.block-right .fa-minus-close .expand').toggleClass('hide');
164					chatBotBody.toggle();
165					chatBotfooter.toggle();
166				}
167				chatBotSatisfaction.toggle();
168				//callChatbotDl({'event': 'close_cb'});
169			})
170			.on('click', '.copy', function () {
171				chatBotSatisfaction.find('.copy').toggle();
172				chatBotSatisfaction.find('.copy-done').toggle();
173			})
174			.on('click', '.next', function () {
175				chatBotSatisfaction.find('#step1').toggle();
176				chatBotSatisfaction.find('#step2').toggle();
177			})
178			.on('click', '.comment', function () {
179				chatBotSatisfaction.find('#step2').toggle();
180				chatBotSatisfaction.find('#step3').toggle();
181			})
182			.on('click', '.back', function () {
183				chatBotSatisfaction.find('#step1').show();
184				chatBotSatisfaction.find('#step2').hide();
185				chatBotSatisfaction.find('#step3').hide();
186				chatBotSatisfaction.toggle();
187			})
188	}
189}	
190

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.