PageSourceSearch

https://www.visitkarlskrona.se/themes/custom/visitbasic_flex/js/swipers/swiper11.container.js?tm6ivw

js visitkarlskrona.se collected 2026-10-02 11:45:27 UTC 8,636 bytes, 134 lines download raw bytes

1(function (Drupal, drupalSettings) {
2  'use strict';
3
4  // Helper function to check if DOM is ready
5  function domReady(fn) {
6    if (document.readyState === 'loading') {
7      document.addEventListener('DOMContentLoaded', fn);
8    } else {
9      fn();
10    }
11  }
12
13  domReady(function () {
14    const carouselSwipers = document.querySelectorAll('.swiper-container.carousel-swiper');
15
16    carouselSwipers.forEach(function (element, index) {
17      let slidesPerView = element.dataset.slidesPerView ? (element.dataset.slidesPerView === 'auto' ? 'auto' : parseInt(element.dataset.slidesPerView)) : 1;
18      let autoPlay = element.dataset.slideAutoPlay ? parseInt(element.dataset.slideDuration) * 1000 : false; // If autoplay is on, use duration value
19      let paginationType = element.dataset.pagination ? element.dataset.pagination : 'bullets';
20      let spaceBetween = element.dataset.spaceBetween ? parseInt(element.dataset.spaceBetween, 10) : 0;
21      let dynamicBullets = element.dataset.dynamicBullets ? element.dataset.dynamicBullets : false;
22      let slideEffect = slidesPerView === 1 ? element.dataset.slideEffect || 'fade' : 'slide';
23      let slideSpeed = element.dataset.slideSpeed ? parseInt(element.dataset.slideSpeed) : 300; //Swiper default speed is 300ms (0.3s)
24
25
26      if (element.id) {
27        /** Hide interactional elements on autoplay when the content is inspirational (Not containing different information or call to actions on each slide) */
28        if (autoPlay && slideEffect === 'fade') {
29          document.getElementById(element.id).getElementsByClassName('swiper-button-prev')[0].style.display = 'none';
30          document.getElementById(element.id).getElementsByClassName('swiper-button-next')[0].style.display = 'none';
31          document.getElementById(element.id).getElementsByClassName('swiper-pagination')[0].style.display = 'none';
32          slideSpeed = slideSpeed == 300 ? 4000 : slideSpeed; //When speed not specified, set higher default transition speed for a smooth, calm feeling
33        }
34
35        /* Init a slideshow for each found item that has a unique ID */
36        let swiperInstance = new Swiper('#' + element.id, {
37          effect: slideEffect,
38          loop: element.dataset.slideLoop || false,
39          slidesPerView: slidesPerView,
40          spaceBetween: spaceBetween,
41          speed: slideSpeed,
42          autoplay: autoPlay ? { delay: autoPlay } : false,
43          watchOverflow: true,
44          pagination: {
45            el: '.swiper-pagination',
46            clickable: true,
47            type: paginationType,
48            dynamicBullets: dynamicBullets,
49            ...(paginationType === 'custom' && {
50              renderCustom: function (swiper, current, total) {
51                return current + ' / ' + total;
52              },
53            }),
54          },
55          navigation: {
56            nextEl: '.swiper-button-next',
57            prevEl: '.swiper-button-prev',
58          },
59          a11y: {
60            // containerMessage: "Carousel", // Enable if needed! // Message for screen readers for outer swiper container
61            // containerRole: "region", // Enable if needed! // Value of the "role" attribute to be set on the swiper container
62            containerRoleDescriptionMessage: 'carousel', // Message for screen readers describing the role of outer swiper container
63            // containerRoleDescriptionMessage: null, // Enable if needed! // Message for screen readers describing the role of outer swiper container
64            enabled: true,
65            firstSlideMessage: Drupal.t('This is the first slide'),
66            // id: null, // Enable if needed! // Value of id attribute to be set on swiper-wrapper. If null will be generated automatically
67            // itemRoleDescriptionMessage: "carousel slide", // Enable if needed! // Message for screen readers describing the role of slide element
68            lastSlideMessage: Drupal.t('This is the last slide'),
69            nextSlideMessage: Drupal.t('Next slide'),
70            // notificationClass: "swiper-notification",  // Enable if needed! // CSS class name of A11y notification
71            paginationBulletMessage: Drupal.t('Go to slide {{index}}'),
72            prevSlideMessage: Drupal.t('Previous slide'),
73            // scrollOnFocus: true,  // Enable if needed! // Enables scrolling to the slide that has been focused
74            slideLabelMessage: Drupal.t('Slide {{index}} of {{slidesLength}}'),
75            // slideRole: "group", // Enable if needed! // Value of swiper slide role attribute
76          },
77        });
78
79        let hasVideoInActiveSlide = function () {
80          let activeSlide = element.querySelector('.swiper-slide.swiper-slide-active');
81          return activeSlide && activeSlide.querySelector('video') ? activeSlide.querySelector('video') : null;
82        };
83
84        let videoElements = element.querySelectorAll('video');
85        if (autoPlay || videoElements.length > 0) {
86          let pauseButton = document.createElement('button');
87          pauseButton.className = 'slideshow-pause-button';
88          pauseButton.id = element.id + '_pause_button';
89          pauseButton.innerHTML = '<svg class="slideshow-pause-icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">' +
90              '<path d="M176 128C167.2 128 160 135.2 160 144L160 496C160 504.8 167.2 512 176 512L240 512C248.8 512 256 504.8 256 496L256 144C256 135.2 248.8 128 240 128L176 128zM128 144C128 117.5 149.5 96 176 96L240 96C266.5 96 288 117.5 288 144L288 496C288 522.5 266.5 544 240 544L176 544C149.5 544 128 522.5 128 496L128 144zM400 128C391.2 128 384 135.2 384 144L384 496C384 504.8 391.2 512 400 512L464 512C472.8 512 480 504.8 480 496L480 144C480 135.2 472.8 128 464 128L400 128zM352 144C352 117.5 373.5 96 400 96L464 96C490.5 96 512 117.5 512 144L512 496C512 522.5 490.5 544 464 544L400 544C373.5 544 352 522.5 352 496L352 144z"/>' +
91              '</svg>' + '<span>' + Drupal.t('Pause') + '</span>';
92          element.appendChild(pauseButton);
93
94          let iconElement = pauseButton.querySelector('.slideshow-pause-icon');
95          iconElement.style.display = 'block';
96
97          pauseButton.addEventListener('click', function () {
98            let video = hasVideoInActiveSlide();
99            let isAutoplayRunning = swiperInstance.autoplay.running;
100            let icon = this.querySelector('.slideshow-pause-icon');
101
102            if (isAutoplayRunning || (video && !video.paused)) {
103              if (isAutoplayRunning) {
104                swiperInstance.autoplay.stop();
105              }
106              if (video && !video.paused) {
107                video.pause();
108              }
109              let spanElement = this.querySelector('span');
110              spanElement.textContent = Drupal.t('Play');
111              icon.innerHTML = '<path d="M147.6 101.6C135.5 108.8 128 121.9 128 136L128 504C128 518.1 135.5 531.2 147.6 538.4C159.7 545.6 174.8 545.9 187.2 539.1L523.2 355.1C536 348.1 544 334.6 544 320C544 305.4 536 291.9 523.2 284.9L187.2 100.9C174.8 94.1 159.8 94.4 147.6 101.6zM171.8 129L507.8 313C510.4 314.4 512 317.1 512 320C512 322.9 510.4 325.6 507.8 327L171.8 511C169.3 512.4 166.3 512.3 163.9 510.9C161.5 509.5 160 506.8 160 504L160 136C160 133.2 161.5 130.6 163.9 129.1C166.3 127.6 169.3 127.6 171.8 129z"/>';
112              icon.style.display = 'block';
113              this.classList.remove('is-playing');
114              this.classList.add('is-paused');
115            } else {
116              if (autoPlay) {
117                swiperInstance.autoplay.start();
118              }
119              if (video && video.paused) {
120                video.play();
121              }
122              let spanElement = this.querySelector('span');
123              spanElement.textContent = Drupal.t('Pause');
124              icon.innerHTML = '<path d="M176 128C167.2 128 160 135.2 160 144L160 496C160 504.8 167.2 512 176 512L240 512C248.8 512 256 504.8 256 496L256 144C256 135.2 248.8 128 240 128L176 128zM128 144C128 117.5 149.5 96 176 96L240 96C266.5 96 288 117.5 288 144L288 496C288 522.5 266.5 544 240 544L176 544C149.5 544 128 522.5 128 496L128 144zM400 128C391.2 128 384 135.2 384 144L384 496C384 504.8 391.2 512 400 512L464 512C472.8 512 480 504.8 480 496L480 144C480 135.2 472.8 128 464 128L400 128zM352 144C352 117.5 373.5 96 400 96L464 96C490.5 96 512 117.5 512 144L512 496C512 522.5 490.5 544 464 544L400 544C373.5 544 352 522.5 352 496L352 144z"/>';
125              icon.style.display = 'block';
126              this.classList.remove('is-paused');
127              this.classList.add('is-playing');
128            }
129          });
130        }
131      }
132    });
133  });
134})(Drupal, drupalSettings);

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.