PageSourceSearch

https://tester39.ru/js/addons/abt__unitheme2/abt__ut2_horizontal_menu_slider.js?ver=1786376823

js tester39.ru collected 2026-09-30 02:45:24 UTC 4,289 bytes, 105 lines download raw bytes

1/*******************************************************************************************
2*   ___  _          ______                     _ _                _                        *
3*  / _ \| |         | ___ \                   | (_)              | |              © 2022   *
4* / /_\ | | _____  _| |_/ /_ __ __ _ _ __   __| |_ _ __   __ _   | |_ ___  __ _ _ __ ___   *
5* |  _  | |/ _ \ \/ / ___ \ '__/ _` | '_ \ / _` | | '_ \ / _` |  | __/ _ \/ _` | '_ ` _ \  *
6* | | | | |  __/>  <| |_/ / | | (_| | | | | (_| | | | | | (_| |  | ||  __/ (_| | | | | | | *
7* \_| |_/_|\___/_/\_\____/|_|  \__,_|_| |_|\__,_|_|_| |_|\__, |  \___\___|\__,_|_| |_| |_| *
8*                                                         __/ |                            *
9*                                                        |___/                             *
10* ---------------------------------------------------------------------------------------- *
11* This is commercial software, only users who have purchased a valid license and accept    *
12* to the terms of the License Agreement can install and use this program.                  *
13* ---------------------------------------------------------------------------------------- *
14* website: https://cs-cart.alexbranding.com                                                *
15*   email: [email protected]                                                           *
16*******************************************************************************************/
17(function(_, $) {
18var wrapper_class = 'ab-hm-first-level-section';
19var prev_w_size = 0;
20$(window).on('resize', function() {
21_init_horizontal_menu_scroller($(_.doc));
22});
23function _init_horizontal_menu_scroller(context) {
24if (prev_w_size !== window.innerWidth) {
25prev_w_size = window.innerWidth;
26var items = context.find('.ut2-h__menu .cm-responsive-menu > .' + wrapper_class + ' > .ty-menu__item');
27if (items.length) {
28items.removeClass('added-to-selection').unwrap();
29context.find('.ab-hm-first-level-toggler').remove();
30_rebuild_horizontal_menu(context);
31} else {
32_rebuild_horizontal_menu(context);
33}
34}
35}
36function _rebuild_horizontal_menu(context) {
37var items_wrapper = context.find('.ut2-h__menu .cm-responsive-menu');
38if (items_wrapper.length) {
39var available_space = items_wrapper.outerWidth();
40var subitems = items_wrapper.find('> .ty-menu__item');
41var items_width = get_elements_width(subitems);
42if (available_space < items_width) {
43items_wrapper.css('visibility', 'hidden');
44available_space -= 25 * 2;
45var slides_count = Math.ceil(items_width / available_space);
46var elems_arr = [];
47var subitems_wrap_collection = [];
48for (var i = 0; i < slides_count; i++) {
49var slide_w = 0;
50elems_arr[i] = [];
51subitems.each(function() {
52var item = $(this);
53if (!item.hasClass('added-to-selection')) {
54var item_w = item.outerWidth();
55if (((slide_w + item_w) <= available_space)) {
56slide_w += item_w;
57elems_arr[i].push(this);
58item.addClass('added-to-selection');
59}
60}
61});
62var temp_subitems = $(elems_arr[i]);
63subitems_wrap_collection.push(
64temp_subitems.wrapAll("<div class='" + wrapper_class + " clearfix'>").parent().addClass(i === 0 ? '' : 'hidden')
65);
66}
67subitems_wrap_collection.forEach(function(wrapper, index) {
68if (wrapper.prev().hasClass(wrapper_class)) {
69wrapper.addClass('has-prev').prepend(
70"<div class='ab-hm-first-level-toggler hm-prev-toggler cm-tooltip' title='" + _.tr('abt__ut2_go_back') + "'>" +
71'<span>' + (index + 1) + '/' + slides_count + '</span>' +
72'</div>');
73}
74if (wrapper.next().hasClass(wrapper_class)) {
75wrapper.addClass('has-next').append(
76"<div class='ab-hm-first-level-toggler hm-next-toggler cm-tooltip' title='" + _.tr('abt__ut2_go_next') + "'>" +
77'<span>' + (index + 1) + '/' + slides_count + '</span>' +
78'</div>');
79}
80});
81$('.ab-hm-first-level-toggler').click(function() {
82var btn = $(this);
83var parent = btn.parent();
84var elem = null;
85var is_prev = btn.hasClass('hm-prev-toggler');
86if (is_prev) {
87elem = parent.prev();
88} else {
89elem = parent.next();
90}
91parent.addClass('hidden');
92elem.removeClass('hidden');
93$.ceEvent('trigger', 'ce.ut2-hm-toggle', [btn, parent, elem, is_prev]);
94});
95items_wrapper.css('visibility', '');
96}
97}
98}
99function get_elements_width(elems) {
100var total_w = 0;
101elems.each(function() { total_w += $(this).outerWidth();
102});
103return total_w;
104}
105})(Tygh, Tygh.$);

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.