PageSourceSearch

https://www.destination-parcs.fr/themes/lae-site/assets/scripts/medias.js?v=1.11

js destination-parcs.fr collected 2026-10-07 02:07:34 UTC 13,750 bytes, 375 lines download raw bytes

1//var $grid;
2(function ($) {
3  $(function () {
4    jQuery(function ($) {
5      // use jQuery code inside this to avoid "$ is not defined" error
6      var deviceAgent = navigator.userAgent.toLowerCase();
7
8      var isTouchDevice =
9        deviceAgent.match(/(iphone|ipod|ipad)/) ||
10        deviceAgent.match(/(android)/) ||
11        deviceAgent.match(/(iemobile)/) ||
12        deviceAgent.match(/iphone/i) ||
13        deviceAgent.match(/ipad/i) ||
14        deviceAgent.match(/ipod/i) ||
15        deviceAgent.match(/blackberry/i) ||
16        deviceAgent.match(/bada/i);
17
18      if (isTouchDevice) {
19        var clickEvent = "touchstart",
20          mouseDownEvent = "touchstart",
21          mouseUpEvent = "touchend",
22          mouseMoveEvent = "touchmove";
23      } else {
24        var clickEvent = "click",
25          mouseDownEvent = "mousedown",
26          mouseUpEvent = "mouseup",
27          mouseMoveEvent = "mousemove";
28      }
29
30      $(document).ready(function (e) {
31        /*----------------------------desactive le repositionnement absolute------------------------------------------------------------ */
32        Isotope.Item.prototype._create = function () {
33          // assign id, used for original-order sorting
34          this.id = this.layout.itemGUID++;
35          // transition objects
36          this._transn = {
37            ingProperties: {},
38            clean: {},
39            onEnd: {},
40          };
41          this.sortData = {};
42        };
43
44        Isotope.Item.prototype.layoutPosition = function () {
45          this.emitEvent("layout", [this]);
46        };
47
48        Isotope.prototype.arrange = function (opts) {
49          // set any options pass
50          this.option(opts);
51          this._getIsInstant();
52          // just filter
53          this.filteredItems = this._filter(this.items);
54          // flag for initalized
55          this._isLayoutInited = true;
56        };
57
58        // layout mode that does not position items
59        Isotope.LayoutMode.create("none");
60        /*----------------------------desactive le repositionnement absolute------------------------------------------------------------ */
61
62        var bodyPage = $("body");
63        var button = $(".actualite_loadmore");
64        var reset_filters = $(".reset-filters");
65        //get parameter url
66        function GetURLParameter(sParam) {
67          var sPageURL = window.location.search.substring(1);
68          var sURLVariables = sPageURL.split("&");
69          for (var i = 0; i < sURLVariables.length; i++) {
70            var sParameterName = sURLVariables[i].split("=");
71            if (sParameterName[0] == sParam) {
72              return sParameterName[1];
73            }
74          }
75        }
76        var filters = {};
77
78        function postFilter(gridCible, itemSelectorDyn) {
79          var gridCible = gridCible;
80          var itemSelectorDynamique = itemSelectorDyn;
81          var buttonFilter;
82          $grid = $(gridCible).isotope(
83            {
84              // options
85              itemSelector: itemSelectorDynamique,
86              layoutMode: "none",
87              sortBy: "validEvent",
88              transitionDuration: "0",
89              getSortData: {
90                validEvent: function (element) {
91                  return element.classList.contains("validEvent") ? -1 : 1;
92                },
93              },
94              filter: function () {
95                var $this = $(this);
96                //var searchResult = qsRegex ? $this.text().match( qsRegex ) : true;
97                var buttonResult = buttonFilter ? $this.is(buttonFilter) : true;
98                //return searchResult && buttonResult;
99                return buttonResult;
100              },
101            },
102            function ($changedItems, instance) {
103              //console.log('instance');
104              instance.$allAtoms
105                .filter(".isotope-hidden")
106                .removeClass("is-filtered");
107              instance.$filteredAtoms.addClass("is-filtered");
108            },
109          );
110
111          // isotope instance
112          var iso = $grid.data("isotope");
113
114          $grid.isotope("on", "layoutComplete", function () {
115            // add/remove odd class
116            $.each(iso.filteredItems, function (i, item) {
117              //var method = i % 2 ? "removeClass" : "addClass";
118              //$(item.element)[method]("odd");
119              var methodEven;
120              var methodOdd;
121              if (i % 2 == 0) {
122                methodOdd = "addClass";
123                $(item.element)[methodOdd]("odd");
124                methodEven = "removeClass";
125                $(item.element)[methodEven]("even");
126              } else {
127                methodOdd = "removeClass";
128                $(item.element)[methodOdd]("odd");
129                methodEven = "addClass";
130                $(item.element)[methodEven]("even");
131              }
132            });
133            window.laePage.documentSize();
134            //scrollTo($("#media-filter-bar"));
135          });
136
137          $shoWFilters = $(".filters").on(
138            clickEvent + " keydown",
139            "button[aria-controls]",
140            function (e) {
141              var that = $(this);
142              // Si clavier → seulement Escape
143              if (e.type === "keydown") {
144                switch (e.key) {
145                  /*case "Enter":
146                    if (document.activeElement === nav) {
147                      e.preventDefault();
148                      toggleMenu();
149                    }
150                    break;
151                  */
152                  case "Escape":
153                    if (that.parent().hasClass("listeFiltreOpen")) {
154                      that.parent().removeClass("listeFiltreOpen");
155                    }
156                    break;
157
158                  default:
159                    return;
160                }
161              } else {
162                that.parent().toggleClass("listeFiltreOpen");
163              }
164            },
165          );
166          $filters = $(".filters").on(
167            clickEvent + " keydown",
168            ".btn",
169            function (e) {
170              var that = $(this);
171              // Si clavier → seulement Escape
172              if (e.type === "keydown") {
173                switch (e.key) {
174                  /*case "Enter":
175                    if (document.activeElement === nav) {
176                      e.preventDefault();
177                      toggleMenu();
178                    }
179                    break;
180                  */
181                  case "Escape":
182                    if (that.parent().parent().hasClass("listeFiltreOpen")) {
183                      that.parent().parent().removeClass("listeFiltreOpen");
184                    }
185                    break;
186
187                  default:
188                    return;
189                }
190              } else {
191                //filtrage combinatoire
192                manageButton($(this));
193
194                var comboFilter = getComboFilter(filters);
195                //$grid.isotope({ filter: comboFilter });
196                //var sortValue = comboFilter ? 'validEvent' : 'original-order';
197                $grid.isotope({
198                  filter: comboFilter,
199                  sortBy: "validEvent",
200                  transitionDuration: "0",
201                });
202
203                //filtrage simple
204                //var filterValue = $( this ).attr('data-filter');
205                //if($( this ).hasClass('is-checked')) {
206                //  console.log('check');
207                //  filterValue = '*';
208                //}
209                //$grid.isotope({ filter: filterValue });
210                //manageButtonSimple($(this));
211              }
212            },
213          );
214          $outsideFilterList = $(document).on(clickEvent + " keydown", function (e) {
215              var that = $(this);
216              var $target = $(".listeFiltreOpen");
217              // Si clavier → seulement Escape
218              if (e.type === "keydown") {
219                switch (e.key) {
220                  case "Escape":
221                    if (!$target.is(event.target) && $target.has(event.target).length === 0) {
222                      $target.removeClass("listeFiltreOpen");
223                    }
224                    break;
225                  default:
226                    return;
227                }
228              } else {
229                if (!$target.is(event.target) && $target.has(event.target).length === 0) {
230                  $target.removeClass("listeFiltreOpen");
231                }
232              }
233            },
234          );
235          var dataFilter = GetURLParameter("data-filter");
236          if (dataFilter) {
237            var that = $("[data-filter='." + dataFilter + "']");
238            manageButton(that);
239            //var comboFilter = getComboFilter(filters);
240            //$grid.isotope({ filter: comboFilter });
241            $grid.isotope({
242              filter: "." + dataFilter,
243              transitionDuration: "0",
244            });
245            $(".actualite_loadmore").trigger(clickEvent);
246          }
247
248          //scroll to filter content
249          /*function scrollTo(element) {
250            console.log('scroll');
251            var offset = element.offset();
252            console.log(offset.top);
253            window.scroll({
254              //behavior: 'smooth',
255              left: 0,
256              top: offset.top
257            });
258          }*/
259
260          function getComboFilter(filters) {
261            var i = 0;
262            var comboFilters = [];
263            var message = [];
264
265            for (var prop in filters) {
266              message.push(filters[prop].join(" "));
267              var filterGroup = filters[prop];
268              // skip to next filter group if it doesn't have any values
269              if (!filterGroup.length) {
270                continue;
271              }
272              if (i === 0) {
273                // copy to new array
274                comboFilters = filterGroup.slice(0);
275              } else {
276                var filterSelectors = [];
277                // copy to fresh array
278                var groupCombo = comboFilters.slice(0); // [ A, B ]
279                // merge filter Groups
280                for (var k = 0, len3 = filterGroup.length; k < len3; k++) {
281                  for (var j = 0, len2 = groupCombo.length; j < len2; j++) {
282                    filterSelectors.push(groupCombo[j] + filterGroup[k]); // [ 1, 2 ]
283                  }
284                }
285                // apply filter selectors to combo filters for next group
286                comboFilters = filterSelectors;
287              }
288              i++;
289            }
290
291            var comboFilter = comboFilters.join(", ");
292            return comboFilter;
293          }
294
295          function manageButtonSimple($button) {
296            if (!$button.hasClass("is-checked")) {
297              $(".listFiltre").each(function (i, buttonGroup) {
298                $(this).find(".is-checked").removeClass("is-checked");
299              });
300            }
301            $($button).toggleClass("is-checked");
302          }
303
304          function manageButton($button) {
305            // get group key
306            var $buttonGroup = $button.parents(".button-group");
307            var group = $buttonGroup.attr("data-filter-group");
308
309            // create array for filter group, if not there yet
310            var filterGroup = filters[group];
311            if (!filterGroup) {
312              filterGroup = filters[group] = [];
313            }
314
315            var index = $.inArray($button.attr("data-filter"), filterGroup);
316            if (!$button.is(".is-checked")) {
317              if (index === -1) {
318                // add filter to group
319                filters[group].push($button.attr("data-filter"));
320              }
321            } else {
322              filters[group].splice(index, 1);
323              // if unchecked the last box, check the all
324              if (!$button.siblings(".is-checked").length) {
325                delete filters[group];
326              }
327            }
328            $button.toggleClass("is-checked");
329
330            var nbChecked = $('[data-filter-group="' + group + '"]').find(
331              ".is-checked",
332            ).length;
333            if (nbChecked > 0) {
334              $(".filter-" + group)
335                .find(".nbChecked")
336                .text("(" + nbChecked + ")");
337              reset_filters.removeClass("hidden");
338              reset_filters.on(clickEvent, function (e) {
339                e.preventDefault();
340                resetFilters();
341              });
342            } else {
343              $(".filter-" + group)
344                .find(".nbChecked")
345                .text("");
346              reset_filters.addClass("hidden");
347            }
348          }
349          function resetFilters() {
350            filters = {};
351            $(".btn").removeClass("is-checked");
352
353            var comboFilter = getComboFilter(filters);
354            $grid.isotope({
355              filter: comboFilter,
356              sortBy: "validEvent",
357              transitionDuration: "0",
358            });
359            $(".listFiltre").find(".nbChecked").text("");
360            reset_filters.addClass("hidden");
361          }
362          $(".btnDrpdw").on(clickEvent, function () {
363            $(this).parent().toggleClass("filtreVisible");
364          });
365        }
366        if ($(".grid--media").length) {
367          setTimeout(delay, 1000);
368        }
369        function delay() {
370          new postFilter(".grid--media", "article");
371        }
372      });
373    });
374  });
375})(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.