PageSourceSearch

https://leagueofcoffee.ru/assets/components/minishop2/js/web/default.js?v=d62e73368c

js leagueofcoffee.ru collected 2026-10-04 18:40:57 UTC 28,314 bytes, 678 lines download raw bytes

1(function (window, document, $, miniShop2Config) {
2    var miniShop2 = miniShop2 || {};
3    miniShop2Config.callbacksObjectTemplate = function () {
4        return {
5            // return false to prevent send data
6            before: [],
7            response: {
8                success: [],
9                error: []
10            },
11            ajax: {
12                done: [],
13                fail: [],
14                always: []
15            }
16        }
17    };
18    miniShop2.Callbacks = miniShop2Config.Callbacks = {
19        Cart: {
20            add: miniShop2Config.callbacksObjectTemplate(),
21            remove: miniShop2Config.callbacksObjectTemplate(),
22            change: miniShop2Config.callbacksObjectTemplate(),
23            clean: miniShop2Config.callbacksObjectTemplate()
24        },
25        Order: {
26            add: miniShop2Config.callbacksObjectTemplate(),
27            getcost: miniShop2Config.callbacksObjectTemplate(),
28            clean: miniShop2Config.callbacksObjectTemplate(),
29            submit: miniShop2Config.callbacksObjectTemplate(),
30            getrequired: miniShop2Config.callbacksObjectTemplate()
31        },
32    };
33    miniShop2.Callbacks.add = function (path, name, func) {
34        if (typeof func != 'function') {
35            return false;
36        }
37        path = path.split('.');
38        var obj = miniShop2.Callbacks;
39        for (var i = 0; i < path.length; i++) {
40            if (obj[path[i]] == undefined) {
41                return false;
42            }
43            obj = obj[path[i]];
44        }
45        if (typeof obj != 'object') {
46            obj = [obj];
47        }
48        if (name != undefined) {
49            obj[name] = func;
50        }
51        else {
52            obj.push(func);
53        }
54        return true;
55    };
56    miniShop2.Callbacks.remove = function (path, name) {
57        path = path.split('.');
58        var obj = miniShop2.Callbacks;
59        for (var i = 0; i < path.length; i++) {
60            if (obj[path[i]] == undefined) {
61                return false;
62            }
63            obj = obj[path[i]];
64        }
65        if (obj[name] != undefined) {
66            delete obj[name];
67            return true;
68        }
69        return false;
70    };
71    miniShop2.ajaxProgress = false;
72    miniShop2.setup = function () {
73        // selectors & $objects
74        this.actionName = 'ms2_action';
75        this.action = ':submit[name=' + this.actionName + ']';
76        this.form = '.ms2_form';
77        this.$doc = $(document);
78
79        this.sendData = {
80            $form: null,
81            action: null,
82            formData: null
83        };
84
85        this.timeout = 300;
86    };
87    miniShop2.initialize = function () {
88        miniShop2.setup();
89        // Indicator of active ajax request
90
91        //noinspection JSUnresolvedFunction
92        miniShop2.$doc
93            .ajaxStart(function () {
94                miniShop2.ajaxProgress = true;
95            })
96            .ajaxStop(function () {
97                miniShop2.ajaxProgress = false;
98            })
99            .on('submit', miniShop2.form, function (e) {
100                e.preventDefault();
101                var $form = $(this);
102                var action = $form.find(miniShop2.action).val();
103
104                if (action) {
105                    var formData = $form.serializeArray();
106                    formData.push({
107                        name: miniShop2.actionName,
108                        value: action
109                    });
110                    miniShop2.sendData = {
111                        $form: $form,
112                        action: action,
113                        formData: formData
114                    };
115                    miniShop2.controller();
116                }
117            });
118        miniShop2.Cart.initialize();
119        miniShop2.Message.initialize();
120        miniShop2.Order.initialize();
121        miniShop2.Gallery.initialize();
122    };
123    miniShop2.controller = function () {
124        var self = this;
125        switch (self.sendData.action) {
126            case 'cart/add':
127                miniShop2.Cart.add();
128                break;
129            case 'cart/remove':
130                miniShop2.Cart.remove();
131                break;
132            case 'cart/change':
133                miniShop2.Cart.change();
134                break;
135            case 'cart/clean':
136                miniShop2.Cart.clean();
137                break;
138            case 'order/submit':
139                miniShop2.Order.submit();
140                break;
141            case 'order/clean':
142                miniShop2.Order.clean();
143                break;
144            default:
145                return;
146        }
147    };
148    miniShop2.send = function (data, callbacks, userCallbacks) {
149        var runCallback = function (callback, bind) {
150            if (typeof callback == 'function') {
151                return callback.apply(bind, Array.prototype.slice.call(arguments, 2));
152            }
153            else if (typeof callback == 'object') {
154                for (var i in callback) {
155                    if (callback.hasOwnProperty(i)) {
156                        var response = callback[i].apply(bind, Array.prototype.slice.call(arguments, 2));
157                        if (response === false) {
158                            return false;
159                        }
160                    }
161                }
162            }
163            return true;
164        };
165        // set context
166        if ($.isArray(data)) {
167            data.push({
168                name: 'ctx',
169                value: miniShop2Config.ctx
170            });
171        }
172        else if ($.isPlainObject(data)) {
173            data.ctx = miniShop2Config.ctx;
174        }
175        else if (typeof data == 'string') {
176            data += '&ctx=' + miniShop2Config.ctx;
177        }
178
179        // set action url
180        var formActionUrl = (miniShop2.sendData.$form)
181            ? miniShop2.sendData.$form.attr('action')
182            : false;
183        var url = (formActionUrl)
184            ? formActionUrl
185            : (miniShop2Config.actionUrl)
186                      ? miniShop2Config.actionUrl
187                      : document.location.href;
188        // set request method
189        var formMethod = (miniShop2.sendData.$form)
190            ? miniShop2.sendData.$form.attr('method')
191            : false;
192        var method = (formMethod)
193            ? formMethod
194            : 'post';
195
196        // callback before
197        if (runCallback(callbacks.before) === false || runCallback(userCallbacks.before) === false) {
198            return;
199        }
200        // send
201        var xhr = function (callbacks, userCallbacks) {
202            return $[method](url, data, function (response) {
203                if (response.success) {
204                    if (response.message) {
205                        miniShop2.Message.success(response.message);
206                    }
207                    runCallback(callbacks.response.success, miniShop2, response);
208                    runCallback(userCallbacks.response.success, miniShop2, response);
209                }
210                else {
211                    miniShop2.Message.error(response.message);
212                    runCallback(callbacks.response.error, miniShop2, response);
213                    runCallback(userCallbacks.response.error, miniShop2, response);
214                }
215            }, 'json').done(function () {
216                runCallback(callbacks.ajax.done, miniShop2, xhr);
217                runCallback(userCallbacks.ajax.done, miniShop2, xhr);
218            }).fail(function () {
219                runCallback(callbacks.ajax.fail, miniShop2, xhr);
220                runCallback(userCallbacks.ajax.fail, miniShop2, xhr);
221            }).always(function () {
222                runCallback(callbacks.ajax.always, miniShop2, xhr);
223                runCallback(userCallbacks.ajax.always, miniShop2, xhr);
224            });
225        }(callbacks, userCallbacks);
226    };
227
228    miniShop2.Cart = {
229        callbacks: {
230            add: miniShop2Config.callbacksObjectTemplate(),
231            remove: miniShop2Config.callbacksObjectTemplate(),
232            change: miniShop2Config.callbacksObjectTemplate(),
233            clean: miniShop2Config.callbacksObjectTemplate()
234        },
235        setup: function () {
236            miniShop2.Cart.cart = '#msCart';
237            miniShop2.Cart.miniCart = '#msMiniCart';
238            miniShop2.Cart.miniCartNotEmptyClass = 'full';
239            miniShop2.Cart.countInput = 'input[name=count]';
240            miniShop2.Cart.totalWeight = '.ms2_total_weight';
241            miniShop2.Cart.totalCount = '.ms2_total_count';
242            miniShop2.Cart.totalCost = '.ms2_total_cost';
243        },
244        initialize: function () {
245            miniShop2.Cart.setup();
246            if (!$(miniShop2.Cart.cart).length) {
247                return;
248            }
249            miniShop2.$doc.on('change', miniShop2.Cart.cart + ' ' + miniShop2.Cart.countInput, function () {
250                if (!!$(this).val()) {
251                    $(this).closest(miniShop2.form).submit();
252                }
253            });
254        },
255        add: function () {
256            var callbacks = miniShop2.Cart.callbacks;
257            callbacks.add.response.success = function (response) {
258                this.Cart.status(response.data);
259            };
260            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.add, miniShop2.Callbacks.Cart.add);
261        },
262        remove: function () {
263            var callbacks = miniShop2.Cart.callbacks;
264            callbacks.remove.response.success = function (response) {
265                this.Cart.remove_position(miniShop2.Utils.getValueFromSerializedArray('key'));
266                this.Cart.status(response.data);
267            };
268            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.remove, miniShop2.Callbacks.Cart.remove);
269        },
270        change: function () {
271            var callbacks = miniShop2.Cart.callbacks;
272            callbacks.change.response.success = function (response) {
273                if (typeof(response.data.key) == 'undefined') {
274                    this.Cart.remove_position(miniShop2.Utils.getValueFromSerializedArray('key'));
275                }
276                else {
277                    $('#' + miniShop2.Utils.getValueFromSerializedArray('key')).find('');
278                }
279                this.Cart.status(response.data);
280            };
281            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.change, miniShop2.Callbacks.Cart.change);
282        },
283        status: function (status) {
284            if (status['total_count'] < 1) {
285                location.reload();
286            }
287            else {
288                //var $cart = $(miniShop2.Cart.cart);
289                var $miniCart = $(miniShop2.Cart.miniCart);
290                if (status['total_count'] > 0 && !$miniCart.hasClass(miniShop2.Cart.miniCartNotEmptyClass)) {
291                    $miniCart.addClass(miniShop2.Cart.miniCartNotEmptyClass);
292                }
293                $(miniShop2.Cart.totalWeight).text(miniShop2.Utils.formatWeight(status['total_weight']));
294                $(miniShop2.Cart.totalCount).text(status['total_count']);
295                $(miniShop2.Cart.totalCost).text(miniShop2.Utils.formatPrice(status['total_cost']));
296                if ($(miniShop2.Order.orderCost, miniShop2.Order.order).length) {
297                    miniShop2.Order.getcost();
298                }
299            }
300        },
301        clean: function () {
302            var callbacks = miniShop2.Cart.callbacks;
303            callbacks.clean.response.success = function (response) {
304                this.Cart.status(response.data);
305            };
306
307            miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.clean, miniShop2.Callbacks.Cart.clean);
308        },
309        remove_position: function (key) {
310            $('#' + key).remove();
311        }
312    };
313
314    miniShop2.Gallery = {
315        setup: function () {
316            miniShop2.Gallery.gallery = $('#msGallery');
317            miniShop2.Gallery.files = miniShop2.Gallery.gallery.find('.fotorama');
318        },
319        initialize: function () {
320            miniShop2.Gallery.setup();
321            if (miniShop2.Gallery.files.length) {
322                $('<link/>', {
323                    rel: 'stylesheet',
324                    type: 'text/css',
325                    href: miniShop2Config.cssUrl + 'lib/fotorama.min.css',
326                }).appendTo('head');
327                $('<script/>', {
328                    type: 'text/javascript',
329                    src: miniShop2Config.jsUrl + 'lib/fotorama.min.js',
330                }).appendTo('head');
331            }
332
333            // fix size gallery
334            miniShop2.$doc.on('fotorama:ready', miniShop2.Gallery.files, function (e, Fotorama, extra) {
335                if ((src = Fotorama.activeFrame.src)) {
336                    measure = $.Fotorama.measures[src];
337                    if (measure === undefined) {
338                        for (i in $.Fotorama.measures) {
339                            measure = $.Fotorama.measures[i];
340                            break;
341                        }
342                        Fotorama.resize(measure);
343                    }
344                }
345            });
346
347        }
348    };
349
350    miniShop2.Order = {
351        callbacks: {
352            add: miniShop2Config.callbacksObjectTemplate(),
353            getcost: miniShop2Config.callbacksObjectTemplate(),
354            clean: miniShop2Config.callbacksObjectTemplate(),
355            submit: miniShop2Config.callbacksObjectTemplate(),
356            getrequired: miniShop2Config.callbacksObjectTemplate()
357        },
358        setup: function () {
359            miniShop2.Order.order = '#msOrder';
360            miniShop2.Order.deliveries = '#deliveries';
361            miniShop2.Order.payments = '#payments';
362            miniShop2.Order.deliveryInput = 'input[name="delivery"]';
363            miniShop2.Order.inputParent = '.input-parent';
364            miniShop2.Order.paymentInput = 'input[name="payment"]';
365            miniShop2.Order.paymentInputUniquePrefix = 'input#payment_';
366            miniShop2.Order.deliveryInputUniquePrefix = 'input#delivery_';
367            miniShop2.Order.orderCost = '#ms2_order_cost'
368        },
369        initialize: function () {
370            miniShop2.Order.setup();
371            if ($(miniShop2.Order.order).length) {
372                miniShop2.$doc
373                    .on('click', miniShop2.Order.order + ' [name="' + miniShop2.actionName + '"][value="order/clean"]', function (e) {
374                        miniShop2.Order.clean();
375                        e.preventDefault();
376                    })
377                    .on('change', miniShop2.Order.order + ' input,' + miniShop2.Order.order + ' textarea', function () {
378                        var $this = $(this);
379                        var key = $this.attr('name');
380                        var value = $this.val();
381                        miniShop2.Order.add(key, value);
382                    });
383                var $deliveryInputChecked = $(miniShop2.Order.deliveryInput + ':checked', miniShop2.Order.order);
384                $deliveryInputChecked.trigger('change');
385            }
386        },
387        updatePayments: function (payments) {
388            var $paymentInputs = $(miniShop2.Order.paymentInput, miniShop2.Order.order);
389            $paymentInputs.attr('disabled', true).prop('disabled', true).closest(miniShop2.Order.inputParent).hide();
390            if (payments.length > 0) {
391                for (var i in payments) {
392                    if (payments.hasOwnProperty(i)) {
393                        $paymentInputs.filter(miniShop2.Order.paymentInputUniquePrefix + payments[i]).attr('disabled', false).prop('disabled', false).closest(miniShop2.Order.inputParent).show();
394                    }
395                }
396            }
397            if ($paymentInputs.filter(':visible:checked').length == 0) {
398                $paymentInputs.filter(':visible:first').trigger('click');
399            }
400        },
401        add: function (key, value) {
402            var callbacks = miniShop2.Order.callbacks;
403            var old_value = value;
404            callbacks.add.response.success = function (response) {
405                (function (key, value, old_value) {
406                    var $field = $('[name="' + key + '"]', miniShop2.Order.order);
407                    switch (key) {
408                        case 'delivery':
409                            $field = $(miniShop2.Order.deliveryInputUniquePrefix + response.data[key]);
410                            if (response.data[key] != old_value) {
411                                $field.trigger('click');
412                            }
413                            else {
414                                miniShop2.Order.getrequired(value);
415                                miniShop2.Order.updatePayments($field.data('payments'));
416                                miniShop2.Order.getcost();
417                            }
418                            break;
419                        case 'payment':
420                            $field = $(miniShop2.Order.paymentInputUniquePrefix + response.data[key]);
421                            if (response.data[key] != old_value) {
422                                $field.trigger('click');
423                            }
424                            else {
425                                miniShop2.Order.getcost();
426                            }
427                            break;
428                        //default:
429                    }
430                    $field.val(response.data[key]).removeClass('error').closest(miniShop2.Order.inputParent).removeClass('error');
431                })(key, value, old_value);
432            };
433            callbacks.add.response.error = function () {
434                (function (key) {
435                    var $field = $('[name="' + key + '"]', miniShop2.Order.order);
436                    if ($field.attr('type') == 'checkbox' || $field.attr('type') == 'radio') {
437                        $field.closest(miniShop2.Order.inputParent).addClass('error');
438                    }
439                    else {
440                        $field.addClass('error');
441                    }
442                })(key);
443            };
444
445            var data = {
446                key: key,
447                value: value
448            };
449            data[miniShop2.actionName] = 'order/add';
450            miniShop2.send(data, miniShop2.Order.callbacks.add, miniShop2.Callbacks.Order.add);
451        },
452        getcost: function () {
453            var callbacks = miniShop2.Order.callbacks;
454            callbacks.getcost.response.success = function (response) {
455                $(miniShop2.Order.orderCost, miniShop2.Order.order).text(miniShop2.Utils.formatPrice(response.data['cost']));
456            };
457            var data = {};
458            data[miniShop2.actionName] = 'order/getcost';
459            miniShop2.send(data, miniShop2.Order.callbacks.getcost, miniShop2.Callbacks.Order.getcost);
460        },
461        clean: function () {
462            var callbacks = miniShop2.Order.callbacks;
463            callbacks.clean.response.success = function () {
464                location.reload();
465            };
466
467            var data = {};
468            data[miniShop2.actionName] = 'order/clean';
469            miniShop2.send(data, miniShop2.Order.callbacks.clean, miniShop2.Callbacks.Order.clean);
470        },
471        submit: function () {
472            miniShop2.Message.close();
473
474            // Checking for active ajax request
475            if (miniShop2.ajaxProgress) {
476                //noinspection JSUnresolvedFunction
477                miniShop2.$doc.ajaxComplete(function () {
478                    miniShop2.ajaxProgress = false;
479                    miniShop2.$doc.unbind('ajaxComplete');
480                    miniShop2.Order.submit();
481                });
482                return false;
483            }
484
485            var callbacks = miniShop2.Order.callbacks;
486            callbacks.submit.before = function () {
487                $(':button, a', miniShop2.Order.order).attr('disabled', true).prop('disabled', true);
488            };
489            callbacks.submit.response.success = function (response) {
490                if (response.data['redirect']) {
491                    document.location.href = response.data['redirect'];
492                }
493                else if (response.data['msorder']) {
494                    document.location.href = document.location.origin + document.location.pathname
495                        + (document.location.search ? document.location.search + '&' : '?')
496                        + 'msorder=' + response.data['msorder'];
497                }
498                else {
499                    location.reload();
500                }
501            };
502            callbacks.submit.response.error = function (response) {
503                setTimeout((function () {
504                    $(':button, a', miniShop2.Order.order).attr('disabled', false).prop('disabled', false);
505                }.bind(this)),3 * miniShop2.timeout);
506                $('[name]', miniShop2.Order.order).remov
506eClass('error').closest(miniShop2.Order.inputParent).removeClass('error');
507                for (var i in response.data) {
508                    if (response.data.hasOwnProperty(i)) {
509                        var key = response.data[i];
510                        //var $field = $('[name="' + response.data[i] + '"]', miniShop2.Order.order);
511                        //$field.addClass('error').closest(miniShop2.Order.inputParent).addClass('error');
512                        var $field = $('[name="' + key + '"]', miniShop2.Order.order);
513                        if ($field.attr('type') == 'checkbox' || $field.attr('type') == 'radio') {
514                            $field.closest(miniShop2.Order.inputParent).addClass('error');
515                        }
516                        else {
517                            $field.addClass('error');
518                        }
519                    }
520                }
521            };
522            return miniShop2.send(miniShop2.sendData.formData, miniShop2.Order.callbacks.submit, miniShop2.Callbacks.Order.submit);
523        },
524        getrequired: function (value) {
525            var callbacks = miniShop2.Order.callbacks;
526            callbacks.getrequired.response.success = function (response) {
527                $('[name]', miniShop2.Order.order).removeClass('required').closest(miniShop2.Order.inputParent).removeClass('required');
528                var requires = response.data['requires'];
529                for (var i = 0, length = requires.length; i < length; i++) {
530                    $('[name=' + requires[i] + ']', miniShop2.Order.order).addClass('required').closest(miniShop2.Order.inputParent).addClass('required');
531                }
532            };
533            callbacks.getrequired.response.error = function () {
534                $('[name]', miniShop2.Order.order).removeClass('required').closest(miniShop2.Order.inputParent).removeClass('required');
535            };
536
537            var data = {
538                id: value
539            };
540            data[miniShop2.actionName] = 'order/getrequired';
541            miniShop2.send(data, miniShop2.Order.callbacks.getrequired, miniShop2.Callbacks.Order.getrequired);
542        }
543    };
544
545    miniShop2.Message = {
546        initialize: function () {
547            miniShop2.Message.close = function () {
548            };
549            miniShop2.Message.show = function (message) {
550                if (message != '') {
551                    alert(message);
552                }
553            };
554
555            if (typeof($.fn.jGrowl) != 'function') {
556                $.getScript(miniShop2Config.jsUrl + 'lib/jquery.jgrowl.min.js', function () {
557                    miniShop2.Message.initialize();
558                });
559            }
560            else {
561                $.jGrowl.defaults.closerTemplate = '<div>[ ' + miniShop2Config.close_all_message + ' ]</div>';
562                miniShop2.Message.close = function () {
563                    $.jGrowl('close');
564                };
565                miniShop2.Message.show = function (message, options) {
566                    if (message != '') {
567                        $.jGrowl(message, options);
568                    }
569                }
570            }
571        },
572        success: function (message) {
573            miniShop2.Message.show(message, {
574                theme: 'ms2-message-success',
575                sticky: false
576            });
577        },
578        error: function (message) {
579            miniShop2.Message.show(message, {
580                theme: 'ms2-message-error',
581                sticky: false
582            });
583        },
584        info: function (message) {
585            miniShop2.Message.show(message, {
586                theme: 'ms2-message-info',
587                sticky: false
588            });
589        }
590    };
591
592    miniShop2.Utils = {
593        empty: function (val) {
594            return (typeof(val) == 'undefined' || val == 0 || val === null || val === false || (typeof(val) == 'string' && val.replace(/\s+/g, '') == '') || (typeof(val) == 'object' && val.length == 0));
595        },
596        formatPrice: function (price) {
597            var pf = miniShop2Config.price_format;
598            price = this.number_format(price, pf[0], pf[1], pf[2]);
599
600            if (miniShop2Config.price_format_no_zeros && pf[0] > 0) {
601                price = price.replace(/(0+)$/, '');
602                price = price.replace(/[^0-9]$/, '');
603            }
604
605            return price;
606        },
607        formatWeight: function (weight) {
608            var wf = miniShop2Config.weight_format;
609            weight = this.number_format(weight, wf[0], wf[1], wf[2]);
610
611            if (miniShop2Config.weight_format_no_zeros && wf[0] > 0) {
612                weight = weight.replace(/(0+)$/, '');
613                weight = weight.replace(/[^0-9]$/, '');
614            }
615
616            return weight;
617        },
618        // Format a number with grouped thousands,
619        number_format: function (number, decimals, dec_point, thousands_sep) {
620            // original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
621            // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
622            // bugfix by: Michael White (http://crestidg.com)
623            var i, j, kw, kd, km;
624
625            // input sanitation & defaults
626            if (isNaN(decimals = Math.abs(decimals))) {
627                decimals = 2;
628            }
629            if (dec_point == undefined) {
630                dec_point = ',';
631            }
632            if (thousands_sep == undefined) {
633                thousands_sep = '.';
634            }
635
636            i = parseInt(number = (+number || 0).toFixed(decimals)) + '';
637
638            if ((j = i.length) > 3) {
639                j = j % 3;
640            }
641            else {
642                j = 0;
643            }
644
645            km = j
646                ? i.substr(0, j) + thousands_sep
647                : '';
648            kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
649            kd = (decimals
650                ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, '0').slice(2)
651                : '');
652
653            return km + kw + kd;
654        },
655        getValueFromSerializedArray: function (name, arr) {
656            if (!$.isArray(arr)) {
657                arr = miniShop2.sendData.formData;
658            }
659            for (var i = 0, length = arr.length; i < length; i++) {
660                if (arr[i].name == name) {
661                    return arr[i].value;
662                }
663            }
664            return null;
665        }
666    };
667
668    $(document).ready(function ($) {
669        miniShop2.initialize();
670        var html = $('html');
671        html.removeClass('no-js');
672        if (!html.hasClass('js')) {
673            html.addClass('js');
674        }
675    });
676
677    window.miniShop2 = miniShop2;
678})(window, document, jQuery, miniShop2Config);

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.