PageSourceSearch

https://www.midcounties.coop/Static/js/plugins/jquery.typing.js

js midcounties.coop collected 2026-10-02 03:17:21 UTC 5,480 bytes, 125 lines download raw bytes

1(function ($) {
2    $.fn.extend({
3        typingTicker: function (options) {
4            this.defaultOptions = {
5                delayBetweenLetters: 50,
6                delayBeforeDelete: 4000,
7                delayAfterDelete: 300,
8                deleteTime: 1000,
9                itemSelector: '.tickerItem',
10                containerSelector: '.tickerContainer',
11                loop: true
12            };
13
14            var settings = $.extend({}, this.defaultOptions, options);
15
16            return this.each(function () {
17                var $this = $(this);
18
19                var $items = $this.find(settings.itemSelector);
20                var $container = $this.find(settings.containerSelector);
21
22                if ($this.data("delayBetweenLetters")) settings.delayBetweenLetters = $this.data("delayBetweenLetters");
23                if ($this.data("delayBeforeDelete")) settings.delayBeforeDelete = $this.data("delayBeforeDelete");
24                if ($this.data("delayAfterDelete")) settings.delayAfterDelete = $this.data("delayAfterDelete");
25                if ($this.data("deleteTime")) settings.deleteTime = $this.data("deleteTime");
26                if ($this.data("itemSelector")) settings.itemSelector = $this.data("itemSelector");
27                if ($this.data("containerSelector")) settings.containerSelector = $this.data("containerSelector");
28                if ($this.data("loop")) settings.loop = $this.data("loop");
29
30                if ($items.length === 0) return;
31
32                var $activeItem = null;
33                var height = 0;
34
35                var showNextItem = function () {
36                    if ($activeItem == null) {
37                        $activeItem = $items.first();
38                    } else {
39                        $activeItem = $activeItem.next();
40                    }
41
42                    if ($activeItem.length === 0 && settings.loop) {
43                        $activeItem = $items.first();
44                    }
45
46                    var clone = $activeItem.clone();
47                    $container.empty();
48                    
49                    var printLayer = function(container, contents, callback) {
50                        var childIndex = 0;
51                        var showNextChild = function (callback) {
52                            var elementToPrint = $(contents[childIndex]);
53
54                            var goToNextChild = function() {
55                                childIndex++;
56
57                                if (childIndex >= contents.length) {
58                                    if (callback) {
59                                        callback();
60                                    }
61                                } else {
62                                    showNextChild(callback);
63                                }
64                            };
65
66
67                            var textOnly = contents.filter(function() { return this.nodeType === 1 }).length === 0;
68
69                            if (elementToPrint[0].nodeType === 1) {
70                                var emptyElement = elementToPrint.clone();
71                                emptyElement.empty();
72
73                                container.append(emptyElement);
74                                printLayer(emptyElement, elementToPrint.contents(), goToNextChild);
75
76                            } else {
77                                var text = elementToPrint.text().trim();
78                                if (!textOnly) text = " " + text + " ";
79                                var letterIndex = 0;
80
81                                var printLetter = function (callback) {
82                                    container.append(text[letterIndex]);
83
84                                    letterIndex++;
85
86                                    if (letterIndex < text.length) {
87                                        setTimeout(function() { printLetter(callback) }, settings.delayBetweenLetters);
88                                    } else {
89                                        if (callback) callback();
90                                    }
91                                };
92
93                                printLetter(goToNextChild);
94                            }
95                        };
96                        showNextChild(callback);
97                    };
98
99                    printLayer($container, clone.contents(), function () {
100                        $container.css("height", "");
101                        if ($container.height() > height) {
102                            height = $container.height();
103                        }
104                        $container.height(height);
105                        if ($items.length > 1) {
106                            setTimeout(function() {
107                                    $container.contents().fadeOut(settings.deleteTime,
108                                        function() {
109                                            setTimeout(showNextItem, settings.delayAfterDelete);
110                                        });
111                                },
112                                settings.delayBeforeDelete);
113                        } else {
114                            $container.addClass("finished");
115                        }
116
117                    });
118                };
119
120                showNextItem();
121            });
122        }
123    });
124})(jQuery);
125

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.