vdoc: move to it's own directory cmd/tools/vdoc/ (#7606)
1
cmd/tools/vdoc/resources/arrow.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="dropdown-arrow" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M7 10l5 5 5-5z"/></svg>
|
||||
|
After Width: | Height: | Size: 175 B |
6
cmd/tools/vdoc/resources/dark-mode.js
Normal file
@@ -0,0 +1,6 @@
|
||||
(function() {
|
||||
var html = document.getElementsByTagName('html')[0];
|
||||
if (localStorage.getItem('dark-mode') === 'true') {
|
||||
html.classList.add('dark');
|
||||
}
|
||||
})();
|
||||
1
cmd/tools/vdoc/resources/dark.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="dark-icon" enable-background="new 0 0 24 24" height="24" viewBox="0 0 24 24" width="24"><g><rect fill="none" height="24" width="24"/></g><g><g><g><path d="M11.1,12.08C8.77,7.57,10.6,3.6,11.63,2.01C6.27,2.2,1.98,6.59,1.98,12c0,0.14,0.02,0.28,0.02,0.42 C2.62,12.15,3.29,12,4,12c1.66,0,3.18,0.83,4.1,2.15C9.77,14.63,11,16.17,11,18c0,1.52-0.87,2.83-2.12,3.51 c0.98,0.32,2.03,0.5,3.11,0.5c3.5,0,6.58-1.8,8.37-4.52C18,17.72,13.38,16.52,11.1,12.08z"/></g><path d="M7,16l-0.18,0C6.4,14.84,5.3,14,4,14c-1.66,0-3,1.34-3,3s1.34,3,3,3c0.62,0,2.49,0,3,0c1.1,0,2-0.9,2-2 C9,16.9,8.1,16,7,16z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 642 B |
597
cmd/tools/vdoc/resources/doc.css
Normal file
@@ -0,0 +1,597 @@
|
||||
:root {
|
||||
--background-color: #fff;
|
||||
--link-color: #2779bd;
|
||||
--text-color: #000;
|
||||
--ref-symbol-color: #dae1e7;
|
||||
--ref-symbol-hover-color: #b8c2cc;
|
||||
--title-bottom-line-color: #f1f5f8;
|
||||
--footer-top-line-color: #f1f5f8;
|
||||
--footer-text-color: #616161;
|
||||
--code-signature-border-color: #a0aec0;
|
||||
--menu-background-color: #4b6c88;
|
||||
--menu-text-color: #fff;
|
||||
--menu-indent-line-color: #3b3b3b66;
|
||||
--menu-indent-line-active-color: #00000066;
|
||||
--menu-scrollbar-color: #a0aec0;
|
||||
--menu-toggle-icon-color: #fff;
|
||||
--menu-toggle-icon-hover-color: #00000044;
|
||||
--menu-search-background-color: #00000044;
|
||||
--menu-search-font-color: #fff;
|
||||
--toc-text-color: #2779bd;
|
||||
--toc-indicator-color: #4299e1;
|
||||
--code-default-text-color: #5c6e74;
|
||||
--code-background-color: #edf2f7;
|
||||
--code-keyword-text-color: #2b6cb0;
|
||||
--code-builtin-text-color: #0a0a0a;
|
||||
--code-function-text-color: #319795;
|
||||
--code-comment-text-color: #93a1a1;
|
||||
--code-punctuation-text-color: #999999;
|
||||
--code-symbol-text-color: #702459;
|
||||
--code-operator-text-color: #a67f59;
|
||||
}
|
||||
:root.dark .dark-icon {
|
||||
display: none;
|
||||
}
|
||||
:root:not(.dark) .light-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dark body {
|
||||
--background-color: #1a202c;
|
||||
--text-color: #fff;
|
||||
--link-color: #90cdf4;
|
||||
--ref-symbol-color: #2d3748;
|
||||
--ref-symbol-hover-color: #4a5568;
|
||||
--title-bottom-line-color: #2d3748;
|
||||
--footer-top-line-color: #2d3748;
|
||||
--footer-text-color: #bbd3e1;
|
||||
--code-signature-border-color: #4a5568;
|
||||
--menu-background-color: #2d3748;
|
||||
--menu-text-color: #fff;
|
||||
--menu-indent-line-color: #4a5568;
|
||||
--menu-indent-line-active-color: #90cdf4;
|
||||
--menu-scrollbar-color: #4a5568;
|
||||
--menu-toggle-icon-color: #fff;
|
||||
--menu-search-background-color: #4a5568;
|
||||
--menu-search-font-color: #fff;
|
||||
--toc-text-color: #90cdf4;
|
||||
--toc-indicator-color: #4299e1;
|
||||
--code-default-text-color: #cbd5e0;
|
||||
--code-background-color: #2d3748;
|
||||
--code-builtin-text-color: #68d391;
|
||||
--code-keyword-text-color: #63b3ed;
|
||||
--code-function-text-color: #4fd1c5;
|
||||
--code-comment-text-color: #a0aec0;
|
||||
--code-punctuation-text-color: #a0aec0;
|
||||
--code-symbol-text-color: #ed64a6;
|
||||
}
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
background-color: #fff;
|
||||
background-color: var(--background-color);
|
||||
color: #000;
|
||||
color: var(--text-color);
|
||||
height: 100%;
|
||||
}
|
||||
#page {
|
||||
height: 100%;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
/** Reset for menus */
|
||||
.doc-nav ul,
|
||||
.doc-toc ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Left nav */
|
||||
.doc-nav {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
display: flex;
|
||||
background-color: #4b6c88;
|
||||
background-color: var(--menu-background-color);
|
||||
color: #fff;
|
||||
color: var(--menu-text-color);
|
||||
flex-direction: column;
|
||||
overflow-y: auto;
|
||||
height: 100vh;
|
||||
z-index: 10;
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: #a0aec0 transparent;
|
||||
scrollbar-color: var(--menu-scrollbar-color) transparent;
|
||||
font-family: 'Work Sans', sans-serif;
|
||||
}
|
||||
*::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
*::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
*::-webkit-scrollbar-thumb {
|
||||
background-color: #a0aec0;
|
||||
background-color: var(--menu-scrollbar-color);
|
||||
border: 3px solid transparent;
|
||||
}
|
||||
.doc-nav li {
|
||||
line-height: 1.8;
|
||||
}
|
||||
.doc-nav .content.show {
|
||||
display: flex;
|
||||
}
|
||||
.doc-nav .content.hidden {
|
||||
display: none;
|
||||
}
|
||||
.doc-nav #toggle-menu {
|
||||
cursor: pointer;
|
||||
padding: 0.3rem;
|
||||
fill: #fff;
|
||||
fill: var(--menu-toggle-icon-color);
|
||||
}
|
||||
.doc-nav #toggle-menu:active {
|
||||
background-color: #00000044;
|
||||
background-color: var(--menu-toggle-icon-hover-color);
|
||||
border-radius: 5rem;
|
||||
}
|
||||
.doc-nav > .heading-container {
|
||||
position: relative;
|
||||
/* IE11 */
|
||||
position: sticky;
|
||||
position: -webkit-sticky;
|
||||
top: 0;
|
||||
background-color: #4b6c88;
|
||||
background-color: var(--menu-background-color);
|
||||
z-index: 10;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading {
|
||||
display: flex;
|
||||
padding: 0 1rem;
|
||||
height: 56px;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > .module {
|
||||
font-size: 1.6rem;
|
||||
font-weight: 500;
|
||||
margin: 0;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > .toggle-version-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > .toggle-version-container > #dark-mode-toggle {
|
||||
cursor: pointer;
|
||||
fill: #fff;
|
||||
display: flex;
|
||||
visibility: hidden;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > .toggle-version-container > #dark-mode-toggle > svg {
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > #search {
|
||||
margin-top: 1rem;
|
||||
border: none;
|
||||
border-radius: 0.2rem;
|
||||
padding: 0.5rem 1rem;
|
||||
outline: none;
|
||||
background-color: #00000044;
|
||||
background-color: var(--menu-search-background-color);
|
||||
color: #fff;
|
||||
color: var(--menu-search-text-color);
|
||||
margin-left: -0.6rem;
|
||||
margin-right: -0.6rem;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > #search::placeholder {
|
||||
color: #edf2f7;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > #search:-ms-input-placeholder {
|
||||
color: #edf2f7;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.doc-nav > .content {
|
||||
padding: 0 2rem 2rem 2rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.doc-nav > .content > ul > li.active {
|
||||
font-weight: 600;
|
||||
}
|
||||
.doc-nav > .content > ul > li.open ul {
|
||||
display: initial;
|
||||
}
|
||||
.doc-nav > .content > ul > li.open > .menu-row > .dropdown-arrow {
|
||||
transform: initial;
|
||||
}
|
||||
.doc-nav > .content > ul > li > .menu-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.doc-nav > .content > ul > li > .menu-row > .dropdown-arrow {
|
||||
transform: rotate(-90deg);
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
margin-left: calc(-18px - 0.3rem);
|
||||
margin-right: 0.3rem;
|
||||
cursor: pointer;
|
||||
fill: #fff;
|
||||
pointer-events: all;
|
||||
}
|
||||
.doc-nav > .content > ul > li > ul {
|
||||
margin: 0.4rem 0;
|
||||
display: none;
|
||||
}
|
||||
.doc-nav > .content > ul > li > ul > li {
|
||||
border-color: #ffffff66;
|
||||
border-color: var(--menu-indent-line-color);
|
||||
border-left-width: 1.7px;
|
||||
border-left-style: solid;
|
||||
padding-left: 0.7rem;
|
||||
}
|
||||
.doc-nav > .content > ul > li > ul > li.active {
|
||||
border-color: #00000066;
|
||||
border-color: var(--menu-indent-line-active-color);
|
||||
}
|
||||
.doc-nav > .content a {
|
||||
color: #fff;
|
||||
color: var(--menu-text-color);
|
||||
text-decoration: none;
|
||||
user-select: none;
|
||||
}
|
||||
.doc-nav > .content a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Main content */
|
||||
.doc-container {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
margin-top: 56px;
|
||||
}
|
||||
.doc-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 1rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.doc-content img {
|
||||
width: 100%;
|
||||
}
|
||||
.doc-content p {
|
||||
line-height: 1.4;
|
||||
}
|
||||
.doc-content a {
|
||||
color: #2779bd;
|
||||
color: var(--link-color);
|
||||
}
|
||||
.doc-content > .doc-node {
|
||||
padding: 5rem 0 2rem 0;
|
||||
margin-top: -4rem;
|
||||
overflow: hidden;
|
||||
word-break: break-all; /* IE11 */
|
||||
word-break: break-word;
|
||||
}
|
||||
.doc-content > .doc-node.const:nth-child(2) {
|
||||
padding-bottom: 0 !important;
|
||||
}
|
||||
.doc-content > .doc-node.const:not(:first-child) {
|
||||
padding-top: 4rem;
|
||||
}
|
||||
.doc-content > .doc-node.const:not(:last-child) {
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
.doc-content > .timestamp {
|
||||
font-size: 0.8rem;
|
||||
color: #b8c2cc;
|
||||
color: var(--timestamp-color);
|
||||
}
|
||||
.doc-content > .doc-node > .title {
|
||||
display: flex;
|
||||
font-family: 'Work Sans', sans-serif;
|
||||
font-weight: 500;
|
||||
padding: 0.3rem;
|
||||
align-items: center;
|
||||
margin-bottom: 1rem;
|
||||
border-bottom: 1px solid #f1f5f8;
|
||||
border-bottom: 1px solid var(--title-bottom-line-color);
|
||||
}
|
||||
.doc-content > .doc-node > .title > .link {
|
||||
display: flex;
|
||||
margin-left: auto;
|
||||
fill: #dae1e7;
|
||||
fill: var(--ref-symbol-color);
|
||||
}
|
||||
.doc-content > .doc-node > .title > .link:hover {
|
||||
fill: #b8c2cc;
|
||||
fill: var(--ref-symbol-hover-color);
|
||||
}
|
||||
.doc-content > .doc-node h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.doc-content > .doc-node h2 {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
.doc-content > .doc-node .signature {
|
||||
border-color: #a0aec0;
|
||||
border-color: var(--code-signature-border-color);
|
||||
border-left-width: 3px;
|
||||
border-left-style: solid;
|
||||
}
|
||||
.doc-content > .doc-node > ul > li .task-list-item-checkbox {
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.doc-content > .doc-node > .title h1,
|
||||
.doc-content > .doc-node > .title h2,
|
||||
.doc-content > .doc-node > .title h3,
|
||||
.doc-content > .doc-node > .title h4,
|
||||
.doc-content > .doc-node > .title h5,
|
||||
.doc-content > .doc-node > .title h6 {
|
||||
font-weight: 500;
|
||||
margin: 0;
|
||||
}
|
||||
.doc-content > .doc-node > .title h1 a,
|
||||
.doc-content > .doc-node > .title h2 a,
|
||||
.doc-content > .doc-node > .title h3 a,
|
||||
.doc-content > .doc-node > .title h4 a,
|
||||
.doc-content > .doc-node > .title h5 a,
|
||||
.doc-content > .doc-node > .title h6 a {
|
||||
text-decoration: none;
|
||||
color: #dae1e7;
|
||||
color: var(--ref-symbol-color);
|
||||
}
|
||||
.doc-content > .doc-node > .title h1 a:hover,
|
||||
.doc-content > .doc-node > .title h2 a:hover,
|
||||
.doc-content > .doc-node > .title h3 a:hover,
|
||||
.doc-content > .doc-node > .title h4 a:hover,
|
||||
.doc-content > .doc-node > .title h5 a:hover,
|
||||
.doc-content > .doc-node > .title h6 a:hover {
|
||||
color: #b8c2cc;
|
||||
color: var(--ref-symbol-hover-color);
|
||||
}
|
||||
.doc-content > .footer {
|
||||
padding-top: 1rem;
|
||||
margin-top: auto;
|
||||
bottom: 1rem;
|
||||
color: 616161;
|
||||
color: var(--footer-text-color);
|
||||
border-color: #f1f5f8;
|
||||
border-color: var(--footer-top-line-color);
|
||||
border-top-style: solid;
|
||||
border-top-width: 1px;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Right menu */
|
||||
.doc-toc {
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
padding: 1rem 1rem 0 1rem;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
font-family: 'Work Sans', sans-serif;
|
||||
}
|
||||
.doc-toc::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.doc-toc li {
|
||||
line-height: 1.5;
|
||||
}
|
||||
.doc-toc a {
|
||||
color: #2779bd;
|
||||
color: var(--toc-text-color);
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
border-left-width: 2px;
|
||||
border-left-style: solid;
|
||||
border-color: transparent;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
.doc-toc a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.doc-toc a.active {
|
||||
border-color: #4299e1;
|
||||
border-color: var(--toc-indicator-color);
|
||||
}
|
||||
.doc-toc li ul {
|
||||
margin: 0.2rem 0 0.2rem;
|
||||
font-size: 0.7rem;
|
||||
list-style: none;
|
||||
}
|
||||
.doc-toc li ul a {
|
||||
font-weight: 400;
|
||||
padding-left: 0.8rem;
|
||||
}
|
||||
|
||||
/* Code highlight */
|
||||
pre, code, pre code {
|
||||
color: #5c6e74;
|
||||
color: var(--code-default-text-color);
|
||||
font-size: 0.948em;
|
||||
text-shadow: none;
|
||||
font-family: monospace;
|
||||
background-color: #edf2f7;
|
||||
background-color: var(--code-background-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
pre code {
|
||||
direction: ltr;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
line-height: 1.5;
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1rem;
|
||||
}
|
||||
code {
|
||||
padding: 0.2rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
pre {
|
||||
overflow: auto;
|
||||
margin: 0;
|
||||
}
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
.token.comment {
|
||||
color: #93a1a1;
|
||||
color: var(--code-comment-text-color)
|
||||
}
|
||||
.token.punctuation {
|
||||
color: #999999;
|
||||
color: var(--code-punctuation-text-color);
|
||||
}
|
||||
.token.number,
|
||||
.token.symbol {
|
||||
color: #702459;
|
||||
color: var(--code-symbol-text-color);
|
||||
}
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin {
|
||||
color: #38a169;
|
||||
color: var(--code-builtin-text-color);
|
||||
}
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #a67f59;
|
||||
color: var(--code-operator-text-color);
|
||||
background: transparent;
|
||||
}
|
||||
.token.boolean,
|
||||
.token.keyword {
|
||||
color: #2b6cb0;
|
||||
color: var(--code-keyword-text-color);
|
||||
}
|
||||
.token.function {
|
||||
color: #319795;
|
||||
color: var(--code-function-text-color);
|
||||
}
|
||||
|
||||
/* Medium screen and up */
|
||||
@media (min-width: 768px) {
|
||||
.doc-container {
|
||||
flex-direction: row;
|
||||
}
|
||||
.doc-content {
|
||||
font-size: 0.95rem;
|
||||
flex: 1;
|
||||
padding: 1rem 2rem;
|
||||
}
|
||||
.doc-toc {
|
||||
position: relative;
|
||||
/* IE11 */
|
||||
position: sticky;
|
||||
position: -webkit-sticky;
|
||||
align-self: flex-start;
|
||||
top: 56px;
|
||||
height: auto;
|
||||
height: 100vh;
|
||||
min-width: 200px;
|
||||
width: auto;
|
||||
max-width: 300px;
|
||||
}
|
||||
.doc-toc > ul {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1023px) {
|
||||
.doc-nav.hidden {
|
||||
height: auto;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading {
|
||||
align-items: center;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > .toggle-version-container {
|
||||
flex-grow: 1;
|
||||
padding: 0 1rem;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > #search {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.doc-nav {
|
||||
width: 300px;
|
||||
}
|
||||
.doc-nav #toggle-menu {
|
||||
display: none;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading {
|
||||
height: auto;
|
||||
padding: 1rem 2rem;
|
||||
flex-direction: column-reverse;
|
||||
justify-content: center;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > .toggle-version-container {
|
||||
align-items: center;
|
||||
margin-bottom: 0.2rem;
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
.doc-nav > .heading-container > .heading > .toggle-version-container > #dark-mode-toggle {
|
||||
margin-right: auto;
|
||||
}
|
||||
.doc-nav .content.show,
|
||||
.doc-nav .content.hidden {
|
||||
display: flex;
|
||||
}
|
||||
.doc-content > .doc-node.const:nth-child(2) {
|
||||
padding-bottom: 0 !important;
|
||||
}
|
||||
.doc-content > .doc-node.const:not(:first-child) {
|
||||
padding-top: 0;
|
||||
}
|
||||
.doc-content > .doc-node.const:not(:last-child) {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
.doc-container {
|
||||
margin-top: 0;
|
||||
margin-left: 300px;
|
||||
}
|
||||
.doc-node {
|
||||
padding-top: 1rem !important;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
.doc-toc {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
117
cmd/tools/vdoc/resources/doc.js
Normal file
@@ -0,0 +1,117 @@
|
||||
(function() {
|
||||
if (document.body.scrollIntoView) {
|
||||
var docnav = document.querySelector('.doc-nav');
|
||||
var active = docnav.querySelector('li.active');
|
||||
if (active) {
|
||||
active.scrollIntoView({ block: 'center', inline: 'nearest' });
|
||||
}
|
||||
}
|
||||
setupScrollSpy();
|
||||
setupMobileToggle();
|
||||
setupDarkMode();
|
||||
setupSearch();
|
||||
setupCollapse();
|
||||
})();
|
||||
|
||||
function setupScrollSpy() {
|
||||
var sectionPositions = [];
|
||||
var sections = document.querySelectorAll('section');
|
||||
sections.forEach(function(section) {
|
||||
sectionPositions.push(section.offsetTop);
|
||||
});
|
||||
var scrollPos = 0;
|
||||
window.addEventListener('scroll', function(e) {
|
||||
// Reset classes
|
||||
document.querySelectorAll('.doc-toc a[class="active"]').forEach(function(link) {
|
||||
link.classList.remove('active');
|
||||
});
|
||||
// Set current menu link as active
|
||||
var scrollPosition = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
for (var i = 0; i < sectionPositions.length; i++) {
|
||||
var section = sections[i];
|
||||
var position = sectionPositions[i];
|
||||
if (position >= scrollPosition) {
|
||||
var link = document.querySelector('.doc-toc a[href="#' + section.id + '"]');
|
||||
if (link) {
|
||||
link.classList.add('active');
|
||||
var docToc = document.querySelector('.doc-toc');
|
||||
var tocHeight = docToc.clientHeight;
|
||||
var scrollTop = docToc.scrollTop;
|
||||
if ((document.body.getBoundingClientRect()).top < scrollPos && scrollTop < link.offsetTop - 10) {
|
||||
docToc.scrollTop = link.clientHeight + link.offsetTop - tocHeight + 10;
|
||||
} else if (scrollTop > link.offsetTop - 10) {
|
||||
docToc.scrollTop = link.offsetTop - 10;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
scrollPos = (document.body.getBoundingClientRect()).top;
|
||||
});
|
||||
}
|
||||
|
||||
function setupMobileToggle() {
|
||||
var toggle = document.getElementById('toggle-menu');
|
||||
toggle.addEventListener('click', function(ev) {
|
||||
document.querySelectorAll('.doc-nav').forEach(function(el) {
|
||||
el.classList.toggle('hidden');
|
||||
});
|
||||
document.querySelectorAll('.doc-nav .content').forEach(function(el) {
|
||||
el.classList.toggle('hidden');
|
||||
el.classList.toggle('show');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setupDarkMode() {
|
||||
var html = document.getElementsByTagName('html')[0];
|
||||
var darkModeToggle = document.getElementById('dark-mode-toggle');
|
||||
darkModeToggle.addEventListener('click', function() {
|
||||
html.classList.toggle('dark');
|
||||
var isDarkModeEnabled = html.classList.contains('dark');
|
||||
localStorage.setItem('dark-mode', isDarkModeEnabled);
|
||||
darkModeToggle.setAttribute('aria-checked', isDarkModeEnabled)
|
||||
});
|
||||
// Check if css var() is supported and enable dark mode toggle
|
||||
if (window.CSS && CSS.supports('color', 'var(--fake-var)')) {
|
||||
darkModeToggle.style.visibility = 'unset';
|
||||
}
|
||||
}
|
||||
|
||||
function setupSearch() {
|
||||
var searchInput = document.getElementById('search');
|
||||
searchInput.addEventListener('input', function(e) {
|
||||
var searchValue = e.target.value.toLowerCase();
|
||||
var menuItems = document.querySelectorAll('.content > ul > li');
|
||||
for (var i = 0; i < menuItems.length; i++) {
|
||||
var menuItem = menuItems[i];
|
||||
var links = menuItem.querySelectorAll('a');
|
||||
var hasResult = false;
|
||||
for (var li = 0; li < links.length; li++) {
|
||||
var link = links[li];
|
||||
if (!searchValue || link.text.toLowerCase().indexOf(searchValue) !== -1) {
|
||||
hasResult = true;
|
||||
}
|
||||
if (li > 0) {
|
||||
if (!searchValue || link.text.toLowerCase().indexOf(searchValue) !== -1) {
|
||||
link.style.display = '';
|
||||
} else {
|
||||
link.style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
menuItem.style.display = !searchValue || hasResult ? '' : 'none';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function setupCollapse() {
|
||||
var dropdownArrows = document.querySelectorAll('.dropdown-arrow');
|
||||
for (var i = 0; i < dropdownArrows.length; i++) {
|
||||
var dropdownArrow = dropdownArrows[i];
|
||||
dropdownArrow.addEventListener('click', function(e) {
|
||||
var parent = e.target.parentElement.parentElement.parentElement;
|
||||
parent.classList.toggle('open');
|
||||
});
|
||||
}
|
||||
}
|
||||
BIN
cmd/tools/vdoc/resources/favicons/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
cmd/tools/vdoc/resources/favicons/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
cmd/tools/vdoc/resources/favicons/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
9
cmd/tools/vdoc/resources/favicons/browserconfig.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
BIN
cmd/tools/vdoc/resources/favicons/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 853 B |
BIN
cmd/tools/vdoc/resources/favicons/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
cmd/tools/vdoc/resources/favicons/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
cmd/tools/vdoc/resources/favicons/mstile-144x144.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
cmd/tools/vdoc/resources/favicons/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
cmd/tools/vdoc/resources/favicons/mstile-310x150.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
cmd/tools/vdoc/resources/favicons/mstile-310x310.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
cmd/tools/vdoc/resources/favicons/mstile-70x70.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
39
cmd/tools/vdoc/resources/favicons/safari-pinned-tab.svg
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M580 6459 c-45 -10 -80 -50 -80 -94 0 -18 20 -89 44 -156 63 -178
|
||||
287 -801 371 -1034 62 -172 123 -341 205 -570 39 -110 81 -225 92 -255 19 -52
|
||||
62 -173 157 -440 23 -63 44 -122 48 -130 3 -8 7 -19 9 -25 4 -18 354 -989 369
|
||||
-1025 8 -19 30 -82 50 -140 20 -58 55 -154 77 -215 22 -60 51 -144 65 -185 14
|
||||
-41 29 -79 34 -85 5 -5 9 -17 9 -27 0 -9 7 -32 15 -50 8 -18 53 -139 99 -268
|
||||
186 -518 281 -784 326 -910 72 -205 97 -240 200 -289 l55 -25 795 -2 c437 -1
|
||||
809 0 826 3 50 8 88 51 118 133 15 41 34 91 41 110 7 19 49 136 94 260 176
|
||||
496 213 597 231 645 29 76 472 1309 474 1320 1 6 10 27 19 49 9 21 17 41 17
|
||||
45 0 3 32 94 71 201 39 107 72 200 73 205 2 6 6 17 9 25 4 8 38 105 78 215 39
|
||||
110 100 281 136 380 76 208 133 366 173 480 29 84 292 814 437 1215 208 573
|
||||
204 560 154 611 -26 25 -56 35 -101 31 -6 -1 -102 -10 -185 -17 -27 -3 -70 -7
|
||||
-95 -10 -25 -3 -74 -7 -110 -10 -36 -3 -81 -7 -100 -10 -19 -2 -64 -7 -100
|
||||
-10 -82 -7 -152 -14 -210 -20 -25 -3 -74 -7 -110 -10 -36 -3 -81 -7 -100 -10
|
||||
-19 -2 -64 -7 -100 -10 -147 -13 -262 -24 -315 -30 -16 -2 -64 -6 -105 -10
|
||||
-102 -9 -140 -20 -196 -58 -75 -51 -101 -92 -156 -248 -28 -79 -51 -148 -53
|
||||
-154 -1 -5 -5 -17 -8 -25 -4 -8 -40 -112 -81 -230 -82 -239 -197 -567 -256
|
||||
-735 -21 -60 -59 -171 -85 -245 -26 -74 -64 -184 -85 -245 -22 -60 -89 -254
|
||||
-150 -430 -61 -176 -120 -345 -131 -375 -11 -30 -45 -130 -77 -222 -65 -192
|
||||
-51 -195 -126 19 -24 71 -72 207 -106 303 -34 96 -81 231 -105 300 -24 69 -71
|
||||
204 -105 300 -34 96 -65 186 -70 200 -4 14 -34 97 -65 185 -31 88 -65 185 -75
|
||||
215 -17 52 -70 203 -210 600 -97 276 -141 403 -150 430 -77 237 -117 309 -199
|
||||
362 -54 33 -91 44 -186 53 -73 6 -130 12 -205 20 -25 3 -74 7 -110 10 -36 3
|
||||
-85 8 -110 11 -25 3 -70 7 -100 9 -30 3 -75 7 -100 10 -25 3 -72 7 -105 10
|
||||
-33 3 -80 7 -105 10 -25 3 -72 7 -105 10 -33 3 -82 8 -110 10 -27 3 -71 8 -97
|
||||
10 -27 3 -72 7 -100 10 -83 9 -137 14 -218 21 -41 3 -77 7 -80 8 -3 2 -21 -1
|
||||
-40 -5z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
19
cmd/tools/vdoc/resources/favicons/site.webmanifest
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
||||
1
cmd/tools/vdoc/resources/light.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="light-icon" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M6.76 4.84l-1.8-1.79-1.41 1.41 1.79 1.79 1.42-1.41zM4 10.5H1v2h3v-2zm9-9.95h-2V3.5h2V.55zm7.45 3.91l-1.41-1.41-1.79 1.79 1.41 1.41 1.79-1.79zm-3.21 13.7l1.79 1.8 1.41-1.41-1.8-1.79-1.4 1.4zM20 10.5v2h3v-2h-3zm-8-5c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm-1 16.95h2V19.5h-2v2.95zm-7.45-3.91l1.41 1.41 1.79-1.8-1.41-1.41-1.79 1.8z"/></svg>
|
||||
|
After Width: | Height: | Size: 499 B |
1
cmd/tools/vdoc/resources/link.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/></svg>
|
||||
|
After Width: | Height: | Size: 350 B |
1
cmd/tools/vdoc/resources/menu.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="toggle-menu" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>
|
||||
|
After Width: | Height: | Size: 201 B |
171
cmd/tools/vdoc/resources/normalize.css
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
html {
|
||||
line-height: 1.15;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none;
|
||||
text-decoration: underline;
|
||||
text-decoration: underline dotted;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
font-size: 100%;
|
||||
line-height: 1.15;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
legend {
|
||||
box-sizing: border-box;
|
||||
color: inherit;
|
||||
display: table;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||