forked from gorhill/uBlock
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdashboard.js
More file actions
88 lines (70 loc) · 2.9 KB
/
dashboard.js
File metadata and controls
88 lines (70 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2014-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
/* global uDom */
'use strict';
/******************************************************************************/
(function() {
/******************************************************************************/
let resizeFrame = function() {
let navRect = document.getElementById('dashboard-nav').getBoundingClientRect();
let viewRect = document.documentElement.getBoundingClientRect();
document.getElementById('iframe').style.setProperty(
'height',
(viewRect.height - navRect.height) + 'px'
);
};
let loadDashboardPanel = function() {
let pane = window.location.hash.slice(1);
if ( pane === '' ) {
pane = vAPI.localStorage.getItem('dashboardLastVisitedPane');
if ( pane === null ) {
pane = 'settings.html';
}
} else {
vAPI.localStorage.setItem('dashboardLastVisitedPane', pane);
}
let tabButton = uDom('[href="#' + pane + '"]');
if ( !tabButton || tabButton.hasClass('selected') ) { return; }
uDom('.tabButton.selected').toggleClass('selected', false);
uDom('iframe').attr('src', pane);
tabButton.toggleClass('selected', true);
};
let onTabClickHandler = function(e) {
let url = window.location.href,
pos = url.indexOf('#');
if ( pos !== -1 ) {
url = url.slice(0, pos);
}
url += this.hash;
if ( url !== window.location.href ) {
window.location.replace(url);
loadDashboardPanel();
}
e.preventDefault();
};
// https://github.com/uBlockOrigin/uBlock-issues/issues/106
vAPI.messaging.send('dashboard', { what: 'canUpdateShortcuts' }, response => {
document.body.classList.toggle('canUpdateShortcuts', response === true);
});
vAPI.messaging.send('dashboard', { what: 'benchmarkingPane' }, response => {
document.body.classList.toggle('canBenchmark', response === true);
});
resizeFrame();
window.addEventListener('resize', resizeFrame);
uDom('.tabButton').on('click', onTabClickHandler);
loadDashboardPanel();
/******************************************************************************/
})();