PageSourceSearch

https://www.hims.ru/assets/js/modules/offers_in_section/module_thumbnails.js

js hims.ru collected 2026-10-08 10:39:46 UTC 5,728 bytes, 138 lines download raw bytes

1"use strict";
2$.module_thumbnails = ((function ($) {
3    var
4        event_bus, //Событийная шина
5        gallery_block, //Блок галереи
6        thumbnail_block, //Блок с миниатюрой товара
7        original_image, //Ссылка на исходное изображение карточки
8        target_count_thumbnails,
9        paste_block;
10        
11    /*Выбор торгового предложения из карусели изображений*/    
12    function setSelectSkuAction() {
13        gallery_block.find('img').off('click.select_sku').on('click.select_sku', function (e) {
14            var
15                sku_id, link, manufacturer;
16            
17            gallery_block.find('.sku-goods-data-block-thumbnails-carousel-thumbnails-item').removeClass('active');
18            $(this).parent().addClass('active');
19            
20            link = $(this).attr('src');
21            thumbnail_block.find('img').attr('src', link);
22            thumbnail_block.find('img').attr('data-large', link);
23            sku_id = $(this).parent().data('sku_id');
24            manufacturer = $(this).parent().data('manufacturer_name');
25
26            event_bus.trigger('select_sku', {'id': sku_id, 'manufacturer_name': manufacturer});
27        });
28    }
29 
30    /*Откат до первоначального состояния*/
31    function setRollbackToOriginalStateAction() {
32        var
33            target_collection,
34            tmp_collection,
35            tmp;
36            
37        event_bus.on('show_all', function () {
38            gallery_block = $('.sku-goods-data-block-thumbnails-carousel-thumbnails');
39            
40            gallery_block.find('.sku-goods-data-block-thumbnails-carousel-thumbnails-item').removeClass('active');
41
42            thumbnail_block.find('img').attr('src', original_image);
43            thumbnail_block.find('img').attr('data-large', original_image);
44            gallery_block.find('.owl-item').hide();
45            
46            tmp_collection = paste_block.clone(true);
47            target_collection = tmp_collection.find('div[data-manufacturer_name]');
48                
49                if (target_collection.length > 0) {
50                    $('.sku-goods-data-block-thumbnails-carousel').show();
51                    $('#owl-carousel').find('.owl-item').each(function (i) {
52                        $.owl.trigger('remove.owl.carousel', [0]);
53                    });
54                    
55                    $('#owl-carousel').find('.owl-item').remove();
56                
57                
58                    target_collection.each(function (i) {
59                        
60                        tmp = $(this).parent();    
61                        $.owl.trigger('add.owl.carousel', [tmp[0].innerHTML]).trigger('update.owl.carousel');
62                    });
63                    
64                    $.owl.trigger('refresh.owl.carousel');
65                } else {
66                    $('.sku-goods-data-block-thumbnails-carousel').hide();
67                }
68                
69            setSelectSkuAction();    
70        });
71    }
72
73   
74    function clearSelect() {
75        event_bus.on('select_manufactured', function () {
76            gallery_block.find('.sku-goods-data-block-thumbnails-carousel-thumbnails-item').removeClass('active');
77            thumbnail_block.find('img').attr('src', original_image);
78            thumbnail_block.find('img').attr('data-large', original_image);
79        });
80    }
81
82    /*Обработка выбора производителя*/
83    function setSelectManufacturer() {
84        var
85            target_collection,
86            tmp_collection,
87            tmp;
88        event_bus.on('select_manufactured', function (e, manufacturer_id, manufacturer_name) {
89            gallery_block = $('.sku-goods-data-block-thumbnails-carousel-thumbnails')
90            if (manufacturer_name !== 'по производителю') {
91                tmp_collection = paste_block.clone(true);
92                target_collection = tmp_collection.find('div[data-manufacturer_name="' + manufacturer_name + '"]');
93                
94                if (target_collection.length > 0) {
95                    $('.sku-goods-data-block-thumbnails-carousel').show();
96                    $('#owl-carousel').find('.owl-item').each(function (i) {
97                        $.owl.trigger('remove.owl.carousel', [0]);
98                    });
99                    
100                    $('#owl-carousel').find('.owl-item').remove();
101                
102                
103                    target_collection.each(function (i) {
104                        tmp = $(this).parent();
105                        $.owl.trigger('add.owl.carousel', [tmp[0].innerHTML]);
106                    });
107                    
108                    $.owl.trigger('refresh.owl.carousel');
109                } else {
110                    $('.sku-goods-data-block-thumbnails-carousel').hide();
111                }
112                     
113            } else {
114                event_bus.trigger('show_all');
115            }
116            
117            setSelectSkuAction();
118        });
119    }
120    /*END Обработка выбора производителя*/
121        
122    return {
123        init: function (evt_bus) {
124            gallery_block = $('.sku-goods-data-block-thumbnails-carousel-thumbnails');
125
126            paste_block = gallery_block.clone(true);
127
128            thumbnail_block = $('.product-good-img');
129            event_bus = evt_bus;
130            original_image = thumbnail_block.find('img').attr('src');
131            
132            setSelectSkuAction();
133            setRollbackToOriginalStateAction();
134            clearSelect();
135            setSelectManufacturer();
136        }
137    };
138})(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.