PageSourceSearch

https://tasmania.com/wp-content/themes/tasmania/js/offcanvas.js

js tasmania.com collected 2026-10-02 04:35:25 UTC 5,317 bytes, 192 lines download raw bytes

1(function($) {
2    /*$(document).ready(initOffCanvas);
3
4    function viewport() {
5        var w = window, a = 'inner';
6        if (!('innerWidth' in window )) {
7            a = 'client';
8            w = document.documentElement || document.body;
9        }
10        return { width : w[ a+'Width' ] , height : w[ a+'Height' ] };
11    }
12
13    function initOffCanvas() {
14        var $offCanvas = $('.offcanvas');
15        var $onCanvas = $('.oncanvas');
16        var menuShown = false;
17        var $body = $('body');
18
19        var $toggles = $('[data-offcanvas-toggle="offcanvas"]');
20        var $closeButtons = $('[data-offcanvas-close="offcanvas"]');
21
22        var $overlay;
23
24        $toggles.on('click', function() {
25            if(menuShown) {
26                hideMenu();
27            } else {
28                showMenu();
29            }
30        });
31
32        $closeButtons.on('click', function() {
33            if(menuShown) {
34                hideMenu();
35            }
36        });
37
38        $(window).on('hashchange', function() {
39            if(window.location.hash !== '#primary-menu') {
40                if(menuShown) {
41                    hideMenu();
42                }
43            }
44        });
45
46        function addOverlay() {
47            $overlay = $('<div/>', {
48                id: 'oncanvas--overlay'
49            });
50            $overlay.on('click', function() {
51                if(menuShown) {
52                    hideMenu();
53                }
54            });
55            $overlay.appendTo($onCanvas);
56            $overlay.addClass('shown');
57        }
58        function removeOverlay() {
59            $overlay.removeClass('shown');
60            $overlay.remove();
61        }
62
63        function showMenu() {
64            if($offCanvas.data('hide-class')) $offCanvas.removeClass($offCanvas.data('hide-class'));
65            $offCanvas.addClass('shown '+$offCanvas.data('show-class'));
66            $('body').addClass('noscroll');
67            $('html').addClass('noscroll');
68
69            addOverlay();
70
71            menuShown = true;
72            $toggles.addClass('is-active active');
73        }
74
75        function hideMenu() {
76            if($offCanvas.data('hide-class')) $offCanvas.addClass($offCanvas.data('hide-class'));
77            $offCanvas.removeClass('shown '+$offCanvas.data('show-class'));
78            $('body').removeClass('noscroll');
79            $('html').removeClass('noscroll');
80            removeOverlay();
81            menuShown = false;
82            $toggles.removeClass('is-active active');
83        }
84    }*/
85
86
87    var $offCanvas,
88        $onCanvas,
89        $overlay,
90        menuShown,
91        toggleSelector = '[data-offcanvas-toggle="offcanvas"]',
92        closeSelector = '[data-offcanvas-close="offcanvas"]'
93    ;
94
95    //$(document).ready(initMenu);
96    initMenu();
97
98    function initMenu() {
99        $offCanvas =  $offCanvas = $('.offcanvas');
100        $onCanvas = $('.oncanvas');
101        if($offCanvas.length ==0 || $onCanvas.length == 0) return;
102        createOverlay();
103        bindToggles();
104        bindClosers();
105    }
106
107    function bindToggles() {
108        $(document.body).on('click', toggleSelector, toggleClickHandler);
109    }
110    function bindClosers() {
111        $(document.body).on('click', closeSelector, closeClickHandler);
112    }
113
114    function toggleClickHandler(e) {
115        e.preventDefault();
116        if(menuShown) {
117            hideMenu.apply(this);
118        } else {
119            showMenu.apply(this);
120        }
121    }
122    function closeClickHandler(e) {
123        e.preventDefault();
124        hideMenu.apply(this);
125    }
126
127    function hashchangeHandler(e) {
128        if(window.location.hash !== '#primary-menu') {
129            if(menuShown) {
130                hideMenu.apply(null);
131            }
132        }
133    }
134
135    function createOverlay() {
136        if($overlay) $overlay.remove();
137
138        $overlay = $('<div/>', {
139            id: 'oncanvas--overlay'
140        });
141        $overlay.on('click', hideMenu);
142    }
143    function showOverlay() {
144        $overlay.appendTo($onCanvas);
145        $overlay.addClass('shown');
146    }
147    function hideOverlay() {
148        $overlay.removeClass('shown');
149        $overlay.detach();
150    }
151
152    function showMenu() {
153        if(menuShown) return;
154
155        $(window).on('hashchange', hashchangeHandler);
156
157        window.location.hash = '#primary-menu';
158
159        if($offCanvas.data('hide-class')) $offCanvas.removeClass($offCanvas.data('hide-class'));
160        $offCanvas.addClass('shown '+$offCanvas.data('show-class'));
161        $(document.body).addClass('noscroll');
162        $('html').addClass('noscroll');
163
164        showOverlay();
165
166        menuShown = true;
167        $(toggleSelector).addClass('is-active active');
168
169        $(document.body).trigger('kd_offcanvas:show');
170    }
171
172    function hideMenu() {
173        if(!menuShown) return;
174
175        $(window).off('hashchange', hashchangeHandler);
176
177        window.location.hash = '';
178
179        if($offCanvas.data('hide-class')) $offCanvas.addClass($offCanvas.data('hide-class'));
180        $offCanvas.removeClass('shown '+$offCanvas.data('show-class'));
181        $(document.body).removeClass('noscroll');
182        $('html').removeClass('noscroll');
183
184        hideOverlay();
185
186        menuShown = false;
187
188        $(toggleSelector).removeClass('is-active active');
189
190        $(document.body).trigger('kd_offcanvas:hide');
191    }
192})(jQuery);

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.