FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
matplotlib.github.com/3.11.2/_static/design-tabs.js at main · matplotlib/matplotlib.github.com · GitHub
matplotlib
/
matplotlib.github.com
Public
Notifications
You must be signed in to change notification settings
Fork
62
Star
29
Code
Issues
1
Pull requests
2
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
matplotlib.github.com
/
3.11.2
/
_static
/
design-tabs.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
101 lines (89 loc) · 2.71 KB
Breadcrumbs
matplotlib.github.com
/
3.11.2
/
_static
/
design-tabs.js
Copy path
File metadata and controls
101 lines (89 loc) · 2.71 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
89
90
91
92
93
94
95
96
97
98
99
100
101
//
@ts
-check
// Extra JS capability for selected tabs to be synced
// The selection is stored in local storage so that it persists across page loads.
/**
*
@type
{
Record<string, HTMLElement[]>
}
*/
let
sd_id_to_elements
=
{
}
;
const
storageKeyPrefix
=
"sphinx-design-tab-id-"
;
/**
* Create a key for a tab element.
*
@param
{
HTMLElement
} el - The tab element.
*
@returns
{
[string, string, string] | null
} - The key.
*
*/
function
create_key
(
el
)
{
let
syncId
=
el
.
getAttribute
(
"data-sync-id"
)
;
let
syncGroup
=
el
.
getAttribute
(
"data-sync-group"
)
;
if
(
!
syncId
||
!
syncGroup
)
return
null
;
return
[
syncGroup
,
syncId
,
syncGroup
+
"--"
+
syncId
]
;
}
/**
* Initialize the tab selection.
*
*/
function
ready
(
)
{
// Find all tabs with sync data
/**
@type
{
string[]
} */
let
groups
=
[
]
;
document
.
querySelectorAll
(
".sd-tab-label"
)
.
forEach
(
(
label
)
=>
{
if
(
label
instanceof
HTMLElement
)
{
let
data
=
create_key
(
label
)
;
if
(
data
)
{
let
[
group
,
id
,
key
]
=
data
;
// add click event listener
//
@ts
-ignore
label
.
onclick
=
onSDLabelClick
;
// store map of key to elements
if
(
!
sd_id_to_elements
[
key
]
)
{
sd_id_to_elements
[
key
]
=
[
]
;
}
sd_id_to_elements
[
key
]
.
push
(
label
)
;
if
(
groups
.
indexOf
(
group
)
===
-
1
)
{
groups
.
push
(
group
)
;
// Check if a specific tab has been selected via URL parameter
const
tabParam
=
new
URLSearchParams
(
window
.
location
.
search
)
.
get
(
group
)
;
if
(
tabParam
)
{
console
.
log
(
"sphinx-design: Selecting tab id for group '"
+
group
+
"' from URL parameter: "
+
tabParam
)
;
window
.
sessionStorage
.
setItem
(
storageKeyPrefix
+
group
,
tabParam
)
;
}
}
// Check is a specific tab has been selected previously
let
previousId
=
window
.
sessionStorage
.
getItem
(
storageKeyPrefix
+
group
)
;
if
(
previousId
===
id
)
{
// console.log(
// "sphinx-design: Selecting tab from session storage: " + id
// );
//
@ts
-ignore
label
.
previousElementSibling
.
checked
=
true
;
}
}
}
}
)
;
}
/**
* Activate other tabs with the same sync id.
*
*
@this
{HTMLElement} - The element that was clicked.
*/
function
onSDLabelClick
(
)
{
let
data
=
create_key
(
this
)
;
if
(
!
data
)
return
;
let
[
group
,
id
,
key
]
=
data
;
for
(
const
label
of
sd_id_to_elements
[
key
]
)
{
if
(
label
===
this
)
continue
;
//
@ts
-ignore
label
.
previousElementSibling
.
checked
=
true
;
}
window
.
sessionStorage
.
setItem
(
storageKeyPrefix
+
group
,
id
)
;
}
document
.
addEventListener
(
"DOMContentLoaded"
,
ready
,
false
)
;
Back
|
FazBrowse Home
|
New Git URL