PageSourceSearch

https://www.au.com/content/dam/au-com/patch/carousel-v2/carousel-v2.js

js au.com collected 2026-10-01 08:36:37 UTC 8,694 bytes, 259 lines download raw bytes

1/* carousel-v2.js */
2var carousel = carousel || {};
3
4(function($) {
5    'use strict';
6
7    /**
8    *
9    * ヒーローパネル用 slickオプション取得
10    *
11    * @param {JQueryElement} カルーセル
12    * @param {Object} slickオプション
13    * @param {String} カルーセルタイプ
14    * @returns {Object} slickオプション
15    */
16    function getHeroPanelSlickOptions($carousel, slickOptions, carouselType) {
17
18        slickOptions.appendArrows = $('.cmp-carousel__switcher', $carousel);
19        slickOptions.dots = true;
20        slickOptions.infinite = true;
21        slickOptions.responsive=[];
22
23        var responsiveSmp = {};
24        responsiveSmp.breakpoint = 767;
25        responsiveSmp.settings = {};
26        responsiveSmp.settings.centerMode = true;
27        responsiveSmp.settings.variableWidth = true;
28        slickOptions.responsive.push(responsiveSmp);
29
30        if (carouselType == 'heroPanel--card') {
31            slickOptions.variableWidth = true;
32            slickOptions.centerMode = true;
33        }
34
35        return slickOptions;
36    }
37
38    /**
39    *
40    * カルーセル用 slickオプション取得
41    *
42    * @param {JQueryElement} カルーセル
43    * @param {Object} slickオプション
44    * @param {Long} 同時表示数
45    * @returns {Object} slickオプション
46    */
47    function getCarouselSlickOptions($carousel, slickOptions, slidesToShow) {
48
49        slickOptions.appendArrows = $('.cmp-au-com-carousel__header__switcher', $carousel);
50        slickOptions.dots = false;
51        slickOptions.slidesToShow = slidesToShow;
52        slickOptions.responsive=[];
53
54        var responsiveTb = {};
55        responsiveTb.breakpoint = 979;
56        responsiveTb.settings = {};
57
58        var responsiveSmp = {};
59        responsiveSmp.breakpoint = 767;
60        responsiveSmp.settings = {};
61
62        var responsiveMiniSmp = {};
63        responsiveMiniSmp.breakpoint = 639;
64        responsiveMiniSmp.settings = {};
65
66
67        if (slidesToShow == 2) {
68            responsiveSmp.settings.slidesToShow = 1;
69
70        } else if (slidesToShow == 3) {
71            responsiveTb.settings.slidesToShow = 2;
72            responsiveSmp.settings.slidesToShow = 1;
73
74        } else if (slidesToShow == 4) {
75            responsiveTb.settings.slidesToShow = 3;
76            responsiveMiniSmp.settings.slidesToShow = 2;
77
78        } else if (slidesToShow == 5) {
79            responsiveTb.settings.slidesToShow = 4;
80            responsiveSmp.settings.slidesToShow = 3;
81            responsiveMiniSmp.settings.slidesToShow = 2;
82
83        }
84
85        if (responsiveTb.settings.slidesToShow) {
86            slickOptions.responsive.push(responsiveTb);
87        }
88
89        if (responsiveSmp.settings.slidesToShow) {
90            slickOptions.responsive.push(responsiveSmp);
91        }
92
93        if (responsiveMiniSmp.settings.slidesToShow) {
94            slickOptions.responsive.push(responsiveMiniSmp);
95        }
96
97        return slickOptions;
98    }
99
100    /**
101    *
102    * プライマリーバナー用 slickオプション取得
103    *
104    * @param {JQueryElement} カルーセル
105    * @param {Object} slickオプション
106    * @returns {Object} slickオプション
107    */
108    function getPrimaryBannerSlickOptions($carousel, slickOptions) {
109
110        slickOptions.arrows = false;
111        slickOptions.dots = true;
112        slickOptions.fade = true;
113        slickOptions.speed = 1000;
114
115        return slickOptions;
116    }
117
118    /**
119    *
120    * セカンダリーバナー用 slickオプション取得
121    *
122    * @param {JQueryElement} カルーセル
123    * @param {Object} slickオプション
124    * @returns {Object} slickオプション
125    */
126    function getSecondaryBannerSlickOptions($carousel, slickOptions) {
127
128        slickOptions.appendArrows = $('.cmp-carousel__switcher', $carousel);
129        slickOptions.centerMode = true;
130        slickOptions.centerPadding = '0%';
131        slickOptions.initialSlide = $('.cmp-carousel__item', $carousel).length == 3 ? 0 : 1;
132        slickOptions.slidesToShow = 3;
133        slickOptions.responsive=[];
134
135        var responsiveSmp = {};
136        responsiveSmp.breakpoint = 767;
137        responsiveSmp.settings = {};
138        responsiveSmp.settings.arrows = false;
139        responsiveSmp.settings.centerMode = true;
140        responsiveSmp.settings.centerPadding = '10%';
141        responsiveSmp.settings.initialSlide = 1;
142        responsiveSmp.settings.slidesToShow = 1;
143        slickOptions.responsive.push(responsiveSmp);
144
145        return slickOptions;
146    }
147
148    /**
149    *
150    * slickオプション取得
151    *
152    * @returns {Object} slickオプション
153    */
154    function getSlickOptions($carousel) {
155
156        // slickオプション設定
157        var autoplay = $carousel.data('cmp-autoplay') == true;
158        var delay = $carousel.data('cmp-delay');
159        var autopauseDisabled = $carousel.data('cmp-autopause-disabled');
160        var carouselType = $carousel.data('cmp-carouseltype');
161        var slidesToShow = $carousel.data('cmp-slidestoshow');
162        var slickOptions = {};
163
164        // 共通設定
165        if (autoplay) {
166            slickOptions.autoplay = autoplay;
167            slickOptions.autoplaySpeed = delay;
168            slickOptions.pauseOnFocus = !autopauseDisabled;
169            slickOptions.pauseOnHover = !autopauseDisabled;
170        }
171
172        // 個別設定
173        switch (carouselType) {
174            // ヒーローパネル
175            case 'heroPanel--categoryPanel':
176            case 'heroPanel--card':
177                slickOptions = getHeroPanelSlickOptions($carousel, slickOptions, carouselType);
178                break;
179            // カルーセル
180            case 'carousel':
181                slickOptions = getCarouselSlickOptions($carousel, slickOptions, slidesToShow);
182                break;
183            // プライマリーバナー
184            case 'primaryBanner':
185                slickOptions = getPrimaryBannerSlickOptions($carousel, slickOptions);
186                break;
187            // セカンダリーバナー
188            case 'secondaryBanner' :
189                slickOptions = getSecondaryBannerSlickOptions($carousel, slickOptions);
190                break;
191        }
192
193        return slickOptions;
194    }
195
196    /**
197    *
198    * カルーセル画像初期化
199    *
200    * @param {JQueryElement} カルーセルコンテンツ
201    * @param {JQueryElement} 画像
202    * @param {Object} imgStatus
203    * @returns {Object} slickオプション
204    */
205    function initialyzeCarouselImgs($carouselContent, $imgs, imgStatus) {
206        if (!imgStatus.readyAllImg) {
207            imgStatus.readyAllImg = responsiveImage.prepareLoadAll($imgs, true);
208        }
209        if (imgStatus.readyAllImg && !imgStatus.loadAllImg) {
210            imgStatus.loadAllImg = responsiveImage.confirmLoadAll($imgs);
211        }
212        if (imgStatus.loadAllImg && !imgStatus.matchedHeight) {
213            imgStatus.matchedHeight = $carouselContent.matchHeight();
214        }
215        return imgStatus;
216    }
217
218    /**
219    *
220    * カルーセル初期化
221    *
222    * @param {String} ID
223    *
224    */
225    var initialyzeCarousel = function (id) {
226        var $carousel = $('#' + id);
227        var $carouselContent = $('.cmp-carousel__content', $carousel);
228        var $carouselItems = $('.cmp-carousel__items', $carouselContent);
229        var $imgs = $('img.lazyload', $carouselItems);
230        responsiveImage.prepareLoadAll($imgs, true);
231        var slickOptions = getSlickOptions($carousel);
232        $carouselItems
233        .on('init refresh', function() {
234            var $imgs = $('img.lazyload', $carouselItems);
235            var imgStatus = {};
236            imgStatus.readyAllImg = false;
237            imgStatus.loadAllImg = false;
238            imgStatus.matchedHeight = false;
239            $imgs.on('img:load', function() {
240                imgStatus = initialyzeCarouselImgs($carouselContent, $imgs, imgStatus);
241            });
242            imgStatus = initialyzeCarouselImgs($carouselContent, $imgs, imgStatus);
243        });
244        var slickSlide = undefined;
245        $carouselItems.parent().on('inview', function(){
246            if ($carouselItems.parent().isVisible()) {
247                if (slickSlide) {
248                    $carouselItems.slick('slickRemove', slickSlide);
249                }
250                slickSlide = $carouselItems.not('.slick-initialized').slick(slickOptions);
251            }
252        });
253
254    }
255
256    carousel.v2 = {};
257    carousel.v2.init = initialyzeCarousel;
258
259})(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.