PageSourceSearch

https://www.wbcsd.org/wp-content/plugins/facetwp-flyout/assets/js/front.js?ver=0.8.3

js wbcsd.org collected 2026-10-01 07:24:31 UTC 5,138 bytes, 136 lines download raw bytes

1(function($) {
2    window.FWP = window.FWP || {};
3    window.FWP.flyout = {
4        open: function() {
5            FWP.flyout.swapFacets('open');
6        },
7        close: function() {
8            FWP.flyout.swapFacets('close');
9        },
10        getOrderedFacets: function() {
11            var facets = [];
12
13            $('.facetwp-facet').each(function() {
14                var name = $(this).attr('data-name');
15                var type = $(this).attr('data-type');
16                var blacklist = ['map', 'pager'];
17
18                if (! blacklist.includes(type)) {
19                    facets.push(name);
20                }
21            });
22
23            return FWP.hooks.applyFilters('facetwp/flyout/facets', facets);
24        },
25        init: function() {
26            var content = '';
27            var facet_html = `
28            <div class="flyout-row name-{name}">
29                <h3>{label}</h3>
30                <div class="flyout-item"></div>
31            </div>
32            `;
33
34            $.each(FWP.flyout.getOrderedFacets(), function(facet_name) {
35
36                // Support for custom HTML
37                var temp = FWP.hooks.applyFilters('facetwp/flyout/facet_html', facet_html, {
38                    facet_name: facet_name
39                });
40                temp = temp.split('{label}').join(FWP.settings.labels[facet_name]);
41                temp = temp.split('{name}').join(facet_name);
42                content += temp;
43            });
44
45            // Custom flyout content
46            $tpl = $('.facetwp-flyout-tpl');
47            var layout = $tpl.len() ? $tpl.html() : '{content}';
48
49            var flyout = `
50            <div class="facetwp-flyout">
51                <div class="facetwp-flyout-close">x</div>
52                <div class="facetwp-flyout-wrap">
53                    <div class="facetwp-flyout-content">${layout}</div>
54                </div>
55            </div>
56            <div class="facetwp-flyout-fog"></div>
57            `;
58
59            // Hook to modify flyout HTML
60            flyout = FWP.hooks.applyFilters('facetwp/flyout/flyout_html', flyout);
61            flyout = flyout.replace('{content}', content);
62
63            if (0 < $('.facetwp-flyout').len()) {
64                $('.facetwp-flyout').nodes[0].remove();
65                $('.facetwp-flyout-fog').nodes[0].remove();
66            }
67
68            $('body').append(flyout);
69        },
70        swapFacets: function(action) {
71            var action = ('undefined' !== typeof action) ? action : 'open';
72            var is_open = $('.facetwp-flyout.active').len() > 0;
73
74            if ((is_open && 'open' == action) || (!is_open && 'close' == action)) {
75                return;
76            }
77
78            // Loop through each facet
79            $.each(FWP.flyout.getOrderedFacets(), function(facet_name) {
80
81                if ('open' == action) {
82                    var $this = $('.facetwp-facet-' + facet_name).nodes[0];
83                    var $dest = $('.flyout-row.name-' + facet_name + ' .flyout-item:not(.ready)').nodes[0];
84                    $this.insertAdjacentHTML('afterend', '<div class="placeholder-' + facet_name + '"></div>');
85                    $dest.appendChild($this);
86                    $dest.classList.add('ready');
87                }
88                else {
89                    var $this = $('.flyout-item.ready .facetwp-facet-' + facet_name).nodes[0];
90                    $this.parentNode.classList.remove('ready');
91                    var $dest = $('.placeholder-' + facet_name).nodes[0];
92                    $dest.parentNode.insertBefore($this, $dest.nextSibling);
93                    $dest.remove();
94                }
95            });
96
97            // Add the open or close CSS class
98            var which = ('open' == action) ? 'addClass' : 'removeClass';
99            $('.facetwp-flyout, .facetwp-flyout-fog')[which]('active');
100
101            // Custom action
102            FWP.hooks.doAction('facetwp/flyout/' + action);
103        },
104        hideEmptyFacets: function() {
105            $.each(FWP.settings.num_choices, function(num_choices, facet_name) {
106                var $el = $('.flyout-row.name-' + facet_name);
107                var which = (num_choices < 1) ? 'addClass' : 'removeClass';
108                $el[which]('facetwp-hidden');
109            });
110            $('.facetwp-hide-empty').each(function() {
111                let $this = $(this);
112                let facet_name = $this.closest('.facetwp-facet').attr('data-name');
113                var $el = $('.flyout-row.name-' + facet_name);
114                let facets = $this.nodes[0]._facets;
115                var which = facets.every(val => FWP.facets[val].length < 1) ? 'addClass' : 'removeClass';
116                $el[which]('facetwp-hidden');
117            });
118        }
119    };
120
121    $().on('facetwp-loaded', function() {
122        if (!FWP.loaded) {
123            FWP.flyout.init();
124        }
125        FWP.flyout.hideEmptyFacets();
126    });
127
128    $().on('click', '.facetwp-flyout-open', function(e) {
129        e.preventDefault();
130        FWP.flyout.open();
131    });
132
133    $().on('click', '.facetwp-flyout-close, .facetwp-flyout-fog', function() {
134        FWP.flyout.close();
135    });
136})(fUtil);

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.