PageSourceSearch

https://www.thehearthdocs.com/scripts/PatternFive/starrr.js

js thehearthdocs.com collected 2026-09-30 09:42:25 UTC 3,577 bytes, 98 lines download raw bytes

1var slice = [].slice;
2
3(function ($, window) {
4    var Starrr;
5    window.Starrr = Starrr = (function () {
6        Starrr.prototype.defaults = {
7            rating: void 0,
8            max: 5,
9            readOnly: false,
10            emptyClass: 'fa fa-star-o',
11            fullClass: 'fa fa-star',
12            change: function (e, value) { }
13        };
14
15        function Starrr($el, options) {
16            this.options = $.extend({}, this.defaults, options);
17            this.$el = $el;
18            this.createStars();
19            this.syncRating();
20            if (this.options.readOnly) {
21                return;
22            }
23            this.$el.on('mouseover.starrr', 'a', (function (_this) {
24                return function (e) {
25                    return _this.syncRating(_this.getStars().index(e.currentTarget) + 1);
26                };
27            })(this));
28            this.$el.on('mouseout.starrr', (function (_this) {
29                return function () {
30                    return _this.syncRating();
31                };
32            })(this));
33            this.$el.on('click.starrr', 'a', (function (_this) {
34                return function (e) {
35                    e.preventDefault();
36                    return _this.setRating(_this.getStars().index(e.currentTarget) + 1);
37                };
38            })(this));
39            this.$el.on('starrr:change', this.options.change);
40        }
41
42        Starrr.prototype.getStars = function () {
43            return this.$el.find('a');
44        };
45
46        Starrr.prototype.createStars = function () {
47            var j, ref, results;
48            results = [];
49            for (j = 1, ref = this.options.max; 1 <= ref ? j <= ref : j >= ref; 1 <= ref ? j++ : j--) {
50                results.push(this.$el.append("<a href='#' />"));
51            }
52            return results;
53        };
54
55        Starrr.prototype.setRating = function (rating) {
56            if (this.options.rating === rating) {
57                rating = void 0;
58            }
59            this.options.rating = rating;
60            this.syncRating();
61            return this.$el.trigger('starrr:change', rating);
62        };
63
64        Starrr.prototype.getRating = function () {
65            return this.options.rating;
66        };
67
68        Starrr.prototype.syncRating = function (rating) {
69            var $stars, i, j, ref, results;
70            rating || (rating = this.options.rating);
71            $stars = this.getStars();
72            results = [];
73            for (i = j = 1, ref = this.options.max; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {
74                results.push($stars.eq(i - 1).removeClass(rating >= i ? this.options.emptyClass : this.options.fullClass).addClass(rating >= i ? this.options.fullClass : this.options.emptyClass));
75            }
76            return results;
77        };
78
79        return Starrr;
80
81    })();
82    return $.fn.extend({
83        starrr: function () {
84            var args, option;
85            option = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
86            return this.each(function () {
87                var data;
88                data = $(this).data('starrr');
89                if (!data) {
90                    $(this).data('starrr', (data = new Starrr($(this), option)));
91                }
92                if (typeof option === 'string') {
93                    return data[option].apply(data, args);
94                }
95            });
96        }
97    });
98})(window.jQuery, window);

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.