zero-http 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +311 -0
- package/documentation/controllers/cleanup.js +25 -0
- package/documentation/controllers/echo.js +14 -0
- package/documentation/controllers/headers.js +1 -0
- package/documentation/controllers/proxy.js +112 -0
- package/documentation/controllers/root.js +1 -0
- package/documentation/controllers/uploads.js +289 -0
- package/documentation/full-server.js +129 -0
- package/documentation/public/data/api.json +167 -0
- package/documentation/public/data/examples.json +62 -0
- package/documentation/public/data/options.json +13 -0
- package/documentation/public/index.html +414 -0
- package/documentation/public/prism-overrides.css +40 -0
- package/documentation/public/scripts/app.js +44 -0
- package/documentation/public/scripts/data-sections.js +300 -0
- package/documentation/public/scripts/helpers.js +166 -0
- package/documentation/public/scripts/playground.js +71 -0
- package/documentation/public/scripts/proxy.js +98 -0
- package/documentation/public/scripts/ui.js +210 -0
- package/documentation/public/scripts/uploads.js +459 -0
- package/documentation/public/styles.css +310 -0
- package/documentation/public/vendor/icons/fetch.svg +23 -0
- package/documentation/public/vendor/icons/plug.svg +27 -0
- package/documentation/public/vendor/icons/static.svg +35 -0
- package/documentation/public/vendor/icons/stream.svg +22 -0
- package/documentation/public/vendor/icons/zero.svg +21 -0
- package/documentation/public/vendor/prism-copy-to-clipboard.min.js +27 -0
- package/documentation/public/vendor/prism-javascript.min.js +1 -0
- package/documentation/public/vendor/prism-json.min.js +1 -0
- package/documentation/public/vendor/prism-okaidia.css +1 -0
- package/documentation/public/vendor/prism-toolbar.css +27 -0
- package/documentation/public/vendor/prism-toolbar.min.js +41 -0
- package/documentation/public/vendor/prism.min.js +1 -0
- package/index.js +43 -0
- package/lib/app.js +159 -0
- package/lib/body/index.js +14 -0
- package/lib/body/json.js +54 -0
- package/lib/body/multipart.js +310 -0
- package/lib/body/raw.js +40 -0
- package/lib/body/rawBuffer.js +74 -0
- package/lib/body/sendError.js +17 -0
- package/lib/body/text.js +43 -0
- package/lib/body/typeMatch.js +22 -0
- package/lib/body/urlencoded.js +166 -0
- package/lib/cors.js +72 -0
- package/lib/fetch.js +218 -0
- package/lib/logger.js +68 -0
- package/lib/rateLimit.js +64 -0
- package/lib/request.js +76 -0
- package/lib/response.js +165 -0
- package/lib/router.js +87 -0
- package/lib/static.js +196 -0
- package/package.json +44 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
:root{
|
|
2
|
+
--bg:#0e1114;
|
|
3
|
+
--panel:#0b0d10;
|
|
4
|
+
--muted:#98a0aa;
|
|
5
|
+
--text:#e6eef8;
|
|
6
|
+
--accent:#5865f2;
|
|
7
|
+
--accent-2:#1f8efd;
|
|
8
|
+
--success:#2ecc71;
|
|
9
|
+
--danger:#ff6b6b;
|
|
10
|
+
--surface-border:rgba(255,255,255,0.03);
|
|
11
|
+
--header-height:64px;
|
|
12
|
+
color-scheme: dark;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@media (min-width:641px) {
|
|
16
|
+
.controls{display:flex;flex-direction:row;align-items:stretch;gap:14px}
|
|
17
|
+
.controls .left-controls{display:flex;flex-direction:row;gap:10px}
|
|
18
|
+
.controls .left-controls .btn{margin-right:0}
|
|
19
|
+
.right-controls{display:flex;align-items:center;gap:12px;align-self:flex-end}
|
|
20
|
+
.pager{display:flex;align-items:center;gap:10px}
|
|
21
|
+
.pager #pageInfo{background:linear-gradient(180deg, rgba(255,255,255,0.01), transparent);padding:6px 12px;border-radius:10px;border:1px solid rgba(255,255,255,0.02);color:var(--muted);font-weight:600;display:inline-block}
|
|
22
|
+
}
|
|
23
|
+
.base-font{font-family:Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial}
|
|
24
|
+
.base-font{font-family: 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif}
|
|
25
|
+
html{font-size:18px}
|
|
26
|
+
body{height:100%;margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.6;font-family:'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif}
|
|
27
|
+
.ui-shell{max-width:1300px;margin:24px auto;padding:28px}
|
|
28
|
+
.ui-header{display:flex;align-items:center;gap:16px;margin-bottom:14px;position:fixed;top:0;left:50%;transform:translateX(-50%);width:calc(100% - 48px);max-width:1300px;height:var(--header-height);z-index:140;background:linear-gradient(180deg, rgba(11,13,16,0.96), rgba(11,13,16,0.92));backdrop-filter:blur(6px);padding:10px 20px;border-radius:10px}
|
|
29
|
+
.repo-buttons{margin-left:auto;display:flex;gap:12px;align-items:center}
|
|
30
|
+
.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:10px 12px;border-radius:12px;color:var(--text);background:transparent;border:1px solid rgba(255,255,255,0.03);cursor:pointer;text-decoration:none;font-weight:700;transition:transform .08s ease,box-shadow .12s ease,background .12s ease;min-width:44px;min-height:44px}
|
|
31
|
+
.icon-btn svg, .icon-btn .icon-svg{display:block;width:28px;height:28px}
|
|
32
|
+
.icon-btn:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(2,4,8,0.6);background:linear-gradient(180deg,rgba(255,255,255,0.01),transparent)}
|
|
33
|
+
.icon-btn:active{transform:translateY(0)}
|
|
34
|
+
.icon-btn .sr{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
|
|
35
|
+
|
|
36
|
+
@media(min-width:900px){
|
|
37
|
+
.repo-buttons{gap:14px}
|
|
38
|
+
.icon-btn{padding:5px 8px;min-width:56px;min-height:56px;border-radius:14px}
|
|
39
|
+
.icon-btn svg, .icon-btn .icon-svg{width:50px;height:auto}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@media(max-width:640px){
|
|
43
|
+
.repo-buttons{gap:8px}
|
|
44
|
+
.icon-btn{min-width:44px;min-height:44px;padding:8px;border-radius:10px}
|
|
45
|
+
.icon-btn svg, .icon-btn .icon-svg{width:24px;height:24px}
|
|
46
|
+
}
|
|
47
|
+
.brand .logo{font-weight:800;font-size:22px;letter-spacing:0.2px}
|
|
48
|
+
.brand .subtitle{font-size:14px;color:var(--muted)}
|
|
49
|
+
.card{background:var(--panel);border:1px solid var(--surface-border);padding:16px;border-radius:10px;margin-bottom:14px;box-shadow:0 2px 8px rgba(3,4,6,0.6)}
|
|
50
|
+
.card{background:var(--panel);border:1px solid var(--surface-border);padding:20px;border-radius:12px;margin-bottom:18px;box-shadow:0 6px 18px rgba(3,4,6,0.6)}
|
|
51
|
+
.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
|
|
52
|
+
.card-head h3{margin:0;font-size:18px}
|
|
53
|
+
.small{font-size:13px}
|
|
54
|
+
.muted{color:var(--muted);line-height:1.5}
|
|
55
|
+
.constrained{max-width:1300px;margin-left:auto;margin-right:auto}
|
|
56
|
+
.section-divider{padding:28px 0 8px 20px;margin-top:18px;border-top:1px solid rgba(255,255,255,0.06)}
|
|
57
|
+
.section-divider .section-title{font-size:1.35rem;font-weight:800;letter-spacing:-0.02em;margin:0 0 4px}
|
|
58
|
+
.section-divider .muted{margin:0;font-size:0.92rem}
|
|
59
|
+
|
|
60
|
+
/* Inputs and buttons */
|
|
61
|
+
.textInput, textarea{width:100%;box-sizing:border-box;padding:12px;border-radius:10px;border:1px solid rgba(255,255,255,0.04);background:transparent;color:var(--text);font-size:15px}
|
|
62
|
+
textarea{min-height:100px}
|
|
63
|
+
.btn{background:linear-gradient(180deg,var(--accent),var(--accent-2));color:white;border:none;padding:10px 16px;border-radius:12px;cursor:pointer;font-weight:700;display:inline-flex;align-items:center;gap:8px;box-shadow:0 6px 18px rgba(5,6,8,0.6);transition:transform .08s ease,box-shadow .12s ease,opacity .12s ease}
|
|
64
|
+
.btn:hover{transform:translateY(-1px);box-shadow:0 10px 26px rgba(5,6,8,0.65)}
|
|
65
|
+
.btn:active{transform:translateY(0);box-shadow:0 4px 10px rgba(5,6,8,0.5)}
|
|
66
|
+
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
|
|
67
|
+
.btn.small{padding:6px 10px;font-size:14px;border-radius:10px}
|
|
68
|
+
.btn.warn{background:linear-gradient(180deg,#ff7b5a,#ff6b6b)}
|
|
69
|
+
.btn.ghost{background:transparent;border:1px solid rgba(255,255,255,0.06);color:var(--text);box-shadow:none}
|
|
70
|
+
|
|
71
|
+
/* Controls: select and pager */
|
|
72
|
+
.selectWrap{display:inline-flex;align-items:center;gap:8px;background:transparent}
|
|
73
|
+
.selectWrap select, #sortSelect, #sortOrder{appearance:none;-webkit-appearance:none;border:1px solid rgba(255,255,255,0.06);background:var(--panel);color:var(--text);padding:8px 12px;border-radius:10px;font-size:14px;min-width:110px}
|
|
74
|
+
.selectWrap select option, #sortSelect option, #sortOrder option{background:var(--panel);color:var(--text)}
|
|
75
|
+
.selectWrap select:focus, #sortSelect:focus, #sortOrder:focus{outline:none;box-shadow:0 0 0 4px rgba(88,101,242,0.12)}
|
|
76
|
+
|
|
77
|
+
.pager{display:flex;align-items:center;gap:10px}
|
|
78
|
+
.pager button{min-width:36px;height:36px;padding:0;border-radius:10px;background:linear-gradient(180deg, rgba(255,255,255,0.02), transparent);border:1px solid rgba(255,255,255,0.03);display:inline-flex;align-items:center;justify-content:center}
|
|
79
|
+
.pager button svg{width:18px;height:18px}
|
|
80
|
+
.pager .pageInfo{background:linear-gradient(180deg, rgba(255,255,255,0.01), transparent);padding:6px 12px;border-radius:10px;border:1px solid rgba(255,255,255,0.02);color:var(--muted);font-weight:600}
|
|
81
|
+
|
|
82
|
+
.file-grid{display:flex;flex-wrap:wrap;gap:12px}
|
|
83
|
+
.file{background:linear-gradient(180deg,rgba(255,255,255,0.02),transparent);padding:12px;border-radius:12px;border:1px solid rgba(255,255,255,0.03);min-width:150px}
|
|
84
|
+
|
|
85
|
+
/* Uploaded file card */
|
|
86
|
+
.file-card{display:flex;gap:14px;align-items:flex-start;padding:12px;background:transparent;border-radius:8px}
|
|
87
|
+
.file-card .thumb{width:96px;height:96px;border-radius:8px;object-fit:cover;flex:0 0 96px;border:1px solid rgba(255,255,255,0.03);background:linear-gradient(180deg,rgba(255,255,255,0.02),transparent)}
|
|
88
|
+
.file-card .file-meta{flex:1}
|
|
89
|
+
.file-card .file-title{font-weight:700;margin-bottom:6px}
|
|
90
|
+
.file-card .file-submeta{color:var(--muted);font-size:13px;margin-bottom:8px}
|
|
91
|
+
.file-card .file-actions{display:flex;flex-direction:column;gap:8px}
|
|
92
|
+
.file-card .file-actions .btn{padding:6px 10px;font-size:13px}
|
|
93
|
+
.file-card .file-actions{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
|
|
94
|
+
.file-card .file-actions .btn{padding:6px 12px;font-size:13px;border-radius:999px;background:linear-gradient(180deg,var(--accent),var(--accent-2));box-shadow:0 6px 18px rgba(5,6,8,0.45)}
|
|
95
|
+
.file-card .file-actions a.btn{display:inline-flex;align-items:center;gap:8px;color:white;text-decoration:none}
|
|
96
|
+
.file-card .file-actions button.btn{border:none}
|
|
97
|
+
.file-card .file-actions button.btn.warn{background:linear-gradient(180deg,#ff7b5a,#ff6b6b)}
|
|
98
|
+
.file-card .file-actions a.btn:visited{color:white}
|
|
99
|
+
.file-card .file-actions .btn.small{padding:5px 10px}
|
|
100
|
+
.muted.summary {
|
|
101
|
+
font-size: 0.85rem !important;
|
|
102
|
+
padding: 0 !important;
|
|
103
|
+
margin-top: -0.50em !important;
|
|
104
|
+
}
|
|
105
|
+
/* Trash list rows */
|
|
106
|
+
.fileRow.trash{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed rgba(255,255,255,0.02)}
|
|
107
|
+
.fileRow.trash .btn{margin-left:8px}
|
|
108
|
+
|
|
109
|
+
.result{white-space:pre-wrap;background:#081018;padding:14px;border-radius:12px;border:1px solid rgba(255,255,255,0.03);font-size:14px;width:100%;box-sizing:border-box}
|
|
110
|
+
.result pre, .result pre.code{white-space:pre;overflow:auto;max-width:100%;box-sizing:border-box}
|
|
111
|
+
.mono{font-family:Menlo,Monaco,monospace}
|
|
112
|
+
|
|
113
|
+
/* Code blocks and Prism helpers */
|
|
114
|
+
pre[class*="language-"]{background:linear-gradient(180deg, rgba(11,13,16,0.96), rgba(6,8,10,0.96));padding:18px;border-radius:10px;overflow:auto;border:1px solid rgba(255,255,255,0.04);color:var(--text);box-shadow:inset 0 1px 0 rgba(255,255,255,0.02)}
|
|
115
|
+
code[class*="language-"]{font-family:Consolas,Menlo,Monaco,monospace;font-size:14px;color:var(--text)}
|
|
116
|
+
|
|
117
|
+
.token.comment, .token.prolog, .token.doctype, .token.cdata { color: var(--muted); font-style: italic; }
|
|
118
|
+
.token.punctuation { color: rgba(255,255,255,0.6); }
|
|
119
|
+
.token.namespace { opacity: .7; }
|
|
120
|
+
.token.property, .token.tag, .token.constant, .token.symbol, .token.deleted { color: var(--accent-2); }
|
|
121
|
+
.token.boolean, .token.number { color: #f6c177; }
|
|
122
|
+
.token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: var(--success); }
|
|
123
|
+
.token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string { color: #9fe6a0; }
|
|
124
|
+
.token.atrule, .token.attr-value, .token.keyword { color: var(--accent); font-weight:700; }
|
|
125
|
+
.token.function { color: #8ad1ff; }
|
|
126
|
+
.token.regex, .token.important { color: #ffd580; }
|
|
127
|
+
.token.variable { color: #ffd580; }
|
|
128
|
+
|
|
129
|
+
code.inline, :not(pre) > code { background: rgba(255,255,255,0.02); padding:2px 6px; border-radius:6px; font-size:0.95em }
|
|
130
|
+
|
|
131
|
+
pre[class*="language-"], pre.code, pre[class*="language-"] code, pre.code code {
|
|
132
|
+
white-space: pre;
|
|
133
|
+
tab-size: 4;
|
|
134
|
+
-moz-tab-size: 4;
|
|
135
|
+
-o-tab-size: 4;
|
|
136
|
+
}
|
|
137
|
+
code[class*="language-"], pre[class*="language-"] code {
|
|
138
|
+
display: block;
|
|
139
|
+
font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
|
|
140
|
+
line-height: 1.5;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* Layout helpers */
|
|
144
|
+
.playgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
|
|
145
|
+
.controls{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:12px}
|
|
146
|
+
|
|
147
|
+
/* file drop */
|
|
148
|
+
.fileDrop{border:1px dashed rgba(255,255,255,0.04);border-radius:12px;padding:22px 18px;text-align:center;color:var(--muted);min-height:86px;display:flex;align-items:center;justify-content:center}
|
|
149
|
+
.fileDrop-inner{font-size:14px}
|
|
150
|
+
|
|
151
|
+
/* file input and choose label */
|
|
152
|
+
.fileInput{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0}
|
|
153
|
+
.fileDrop label.linkish{display:inline-block;padding:8px 12px;margin-left:8px;background:linear-gradient(180deg,var(--accent),var(--accent-2));color:#fff;border-radius:10px;cursor:pointer;font-weight:700}
|
|
154
|
+
|
|
155
|
+
.ui-footer{margin-top:8px;color:var(--muted);font-size:13px;text-align:center}
|
|
156
|
+
|
|
157
|
+
.card .acc-body table{width:100%;border-collapse:collapse;margin-top:10px}
|
|
158
|
+
.card .acc-body th, .card .acc-body td{padding:10px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,0.03);vertical-align:top;font-size:14px}
|
|
159
|
+
.card .acc-body thead th{color:var(--muted);font-weight:700}
|
|
160
|
+
.card .acc-body tbody tr:nth-child(odd){background:transparent}
|
|
161
|
+
|
|
162
|
+
details.acc{background:linear-gradient(180deg,rgba(255,255,255,0.01),transparent);border:1px solid rgba(255,255,255,0.03);border-radius:10px;padding:8px;margin:8px 0}
|
|
163
|
+
details.acc[open]{box-shadow:0 8px 24px rgba(0,0,0,0.6)}
|
|
164
|
+
details.acc summary{
|
|
165
|
+
list-style:none;
|
|
166
|
+
list-style-type:none;
|
|
167
|
+
-webkit-appearance:none;
|
|
168
|
+
appearance:none;
|
|
169
|
+
cursor:pointer;
|
|
170
|
+
padding:8px 10px;border-radius:8px;display:flex;align-items:center;gap:12px;font-weight:700;position:relative
|
|
171
|
+
}
|
|
172
|
+
details.acc summary::-webkit-details-marker{display:none !important}
|
|
173
|
+
details.acc summary::marker{display:none !important; color: transparent !important; font-size: 0 !important}
|
|
174
|
+
details.acc summary::-moz-list-bullet{display:none !important}
|
|
175
|
+
details.acc summary{list-style:none !important}
|
|
176
|
+
.summary-arrow{display:inline-block;min-width:14px;text-align:center;margin-right:8px;color:var(--accent);font-weight:900}
|
|
177
|
+
details.acc summary .summary-arrow{transition:transform .18s ease}
|
|
178
|
+
details.acc[open] > summary .summary-arrow{transform:rotate(90deg)}
|
|
179
|
+
details.acc summary:before{content:'';display:inline-block;width:0;height:0;border-style:solid;border-width:5px 0 5px 7px;border-color:transparent transparent transparent var(--accent);transform:rotate(0deg);transition:transform .18s ease;margin-right:6px;flex-shrink:0}
|
|
180
|
+
details.acc[open] > summary:before{transform:rotate(90deg)}
|
|
181
|
+
.acc-body{padding:12px 10px;border-top:1px solid rgba(255,255,255,0.02);margin-top:8px}
|
|
182
|
+
|
|
183
|
+
/* Feature tabs UI */
|
|
184
|
+
.feature-tabs{margin:12px 0}
|
|
185
|
+
.tabs-nav{display:flex;gap:8px;margin-bottom:12px}
|
|
186
|
+
.tab{background:transparent;border:1px solid rgba(255,255,255,0.04);color:var(--text);padding:8px 12px;border-radius:10px;cursor:pointer;font-weight:700}
|
|
187
|
+
.tab.active{background:linear-gradient(180deg,var(--accent),var(--accent-2));color:#fff;box-shadow:0 8px 24px rgba(2,4,6,0.45);border-color:transparent}
|
|
188
|
+
.tabs-content{display:block}
|
|
189
|
+
.tab-panel{display:none;padding:6px 2px;transition:opacity .18s ease}
|
|
190
|
+
.tab-panel.active{display:block}
|
|
191
|
+
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
|
|
192
|
+
.feature-card{background:linear-gradient(180deg,rgba(255,255,255,0.02),transparent);padding:14px;border-radius:12px;border:1px solid rgba(255,255,255,0.03);display:flex;flex-direction:column;align-items:flex-start;gap:10px;transition:transform .12s ease,box-shadow .12s ease}
|
|
193
|
+
.feature-card:hover{transform:translateY(-6px);box-shadow:0 12px 36px rgba(0,0,0,0.6)}
|
|
194
|
+
.feature-icon{width:56px;height:56px;border-radius:12px;background:linear-gradient(180deg, rgba(88,101,242,0.12), rgba(31,142,253,0.06));display:grid;place-items:center;font-size:20px;color:var(--accent);}
|
|
195
|
+
.feature-icon svg{width:34px;height:34px;display:block;fill:var(--accent);}
|
|
196
|
+
.feature-icon img.icon-svg{width:40px;height:40px;display:block;object-fit:contain;margin:0 auto}
|
|
197
|
+
/* .feature-icon img.icon-svg[src$="/fetch.svg"], .feature-icon img.icon-svg[src$="fetch.svg"]{transform:translateY(-5px)translateX(1px);display:block} */
|
|
198
|
+
.feature-icon img.icon-svg[src$="/static.svg"], .feature-icon img.icon-svg[src$="static.svg"]{transform:translateY(2px);display:block}
|
|
199
|
+
/* .feature-icon img.icon-svg[src$="/plug.svg"], .feature-icon img.icon-svg[src$="plug.svg"]{transform:translateY(2px);display:block} */
|
|
200
|
+
.feature-card h5{margin:0;font-size:15px}
|
|
201
|
+
.feature-card p{margin:0;color:var(--muted);font-size:14px}
|
|
202
|
+
.behavior-list{display:flex;flex-direction:column;gap:10px}
|
|
203
|
+
.behavior-step{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:10px;border:1px solid rgba(255,255,255,0.03);background:linear-gradient(180deg,rgba(255,255,255,0.01),transparent)}
|
|
204
|
+
.step-num{width:44px;height:44px;border-radius:10px;background:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;box-shadow:0 8px 18px rgba(31,142,253,0.08)}
|
|
205
|
+
.step-body h5{margin:0 0 6px 0}
|
|
206
|
+
.step-body p{margin:0;color:var(--muted)}
|
|
207
|
+
|
|
208
|
+
@media(max-width:900px){.feature-grid{grid-template-columns:1fr}.tabs-nav{flex-wrap:wrap}}
|
|
209
|
+
|
|
210
|
+
@media(max-width:900px){.playgrid{grid-template-columns:1fr}.ui-shell{padding:16px}}
|
|
211
|
+
|
|
212
|
+
@media(max-width:900px){.playgrid{grid-template-columns:1fr}.ui-shell{padding:12px}}
|
|
213
|
+
|
|
214
|
+
/* Mobile specific fixes */
|
|
215
|
+
@media (max-width:640px) {
|
|
216
|
+
:root{--panel:#0b0d10}
|
|
217
|
+
html{font-size:16px}
|
|
218
|
+
.ui-shell{max-width:100%;margin:0px auto;padding:8px}
|
|
219
|
+
.card{padding:12px;border-radius:8px}
|
|
220
|
+
|
|
221
|
+
.card-head h3{font-size:16px}
|
|
222
|
+
.card .acc-body{padding:8px 0}
|
|
223
|
+
.card .acc-body table{display:block;width:auto;overflow:auto;-webkit-overflow-scrolling:touch;margin-top:8px}
|
|
224
|
+
.card .acc-body th, .card .acc-body td{padding:6px 8px;font-size:13px;white-space:normal;word-break:break-word}
|
|
225
|
+
.card .acc-body thead{display:table-header-group}
|
|
226
|
+
.card .acc-body tbody{display:table-row-group}
|
|
227
|
+
pre[class*="language-"]{padding:12px;font-size:13px;border-radius:8px}
|
|
228
|
+
code[class*="language-"]{font-size:13px}
|
|
229
|
+
|
|
230
|
+
pre[class*="language-"], pre.code { max-width:100%; box-sizing:border-box; overflow:auto; }
|
|
231
|
+
pre[class*="language-"] code, pre.code code { box-sizing:border-box; display:block; }
|
|
232
|
+
.controls{gap:8px}
|
|
233
|
+
.right-controls{display:flex;gap:8px;width:100%;justify-content:center;}
|
|
234
|
+
.playgrid{grid-template-columns:1fr;gap:10px}
|
|
235
|
+
.fileDrop{padding:14px}
|
|
236
|
+
|
|
237
|
+
.docs-card, .card.docs-card { max-width:640px; margin-left:auto; margin-right:auto }
|
|
238
|
+
.docs-card .acc-body, .docs-card details.acc { margin-left:0; margin-right:0; padding: 5px; }
|
|
239
|
+
.docs-card pre[class*="language-"]{ margin:0px }
|
|
240
|
+
|
|
241
|
+
.card .acc-body table{width:auto}
|
|
242
|
+
.card .acc-body th:nth-child(1), .card .acc-body td:nth-child(1){min-width:120px}
|
|
243
|
+
.card .acc-body th:nth-child(2), .card .acc-body td:nth-child(2){min-width:90px}
|
|
244
|
+
.card .acc-body th:nth-child(3), .card .acc-body td:nth-child(3){min-width:90px}
|
|
245
|
+
.card .acc-body th:last-child, .card .acc-body td:last-child{min-width:160px}
|
|
246
|
+
|
|
247
|
+
.controls{flex-direction:column;align-items:flex-start;gap:10px;justify-content:center;width:100%;}
|
|
248
|
+
.controls .left-controls{width:100%;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;}
|
|
249
|
+
.controls .left-controls .btn{margin-right:0}
|
|
250
|
+
|
|
251
|
+
.btn{padding:8px 12px;font-size:14px}
|
|
252
|
+
.pager button{min-width:32px;height:32px}
|
|
253
|
+
.selectWrap select, #sortSelect, #sortOrder{min-width:90px}
|
|
254
|
+
|
|
255
|
+
.result {padding: 5px;}
|
|
256
|
+
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.upload-button-wrap { display:flex;justify-content:flex-end;align-items:center;gap:10px; width:100%; margin:10px 0 }
|
|
260
|
+
|
|
261
|
+
.toc-toggle{background:transparent;border:1px solid rgba(255,255,255,0.04);color:var(--text);padding:8px;border-radius:10px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;z-index:150}
|
|
262
|
+
.toc-sidebar{position:fixed;left:12px;top:20px;width:220px;max-height:calc(100vh - 40px);overflow:auto;background:var(--panel);border:1px solid var(--surface-border);border-radius:12px;padding:12px;box-shadow:0 12px 34px rgba(0,0,0,0.6);opacity:0;transform:translateX(-8px);transition:transform .18s ease,opacity .18s ease;pointer-events:none;z-index:120;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.08) transparent}
|
|
263
|
+
.toc-sidebar::-webkit-scrollbar{width:4px}
|
|
264
|
+
.toc-sidebar::-webkit-scrollbar-track{background:transparent}
|
|
265
|
+
.toc-sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.08);border-radius:4px}
|
|
266
|
+
.toc-sidebar::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.14)}
|
|
267
|
+
.toc-sidebar nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
|
|
268
|
+
.toc-sidebar nav a{display:block;padding:8px 10px;border-radius:8px;color:var(--muted);text-decoration:none}
|
|
269
|
+
.toc-sidebar nav a:hover{background:linear-gradient(180deg,rgba(255,255,255,0.01),transparent);color:var(--text)}
|
|
270
|
+
body.toc-open .toc-sidebar{opacity:1;transform:translateX(0);pointer-events:auto}
|
|
271
|
+
|
|
272
|
+
/* TOC icon toolbar */
|
|
273
|
+
.toc-toolbar{display:flex;gap:6px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,0.04)}
|
|
274
|
+
.toc-tool-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,0.04);background:transparent;color:var(--muted);cursor:pointer;transition:color .12s ease,background .12s ease,transform .12s ease}
|
|
275
|
+
.toc-tool-btn:hover{color:var(--accent);background:rgba(88,101,242,0.08)}
|
|
276
|
+
.toc-tool-btn:active{transform:scale(0.92)}
|
|
277
|
+
.toc-tool-btn.acc-expanded svg{transform:rotate(180deg);transition:transform .18s ease}
|
|
278
|
+
.toc-tool-btn svg{transition:transform .18s ease}
|
|
279
|
+
|
|
280
|
+
/* Sub-TOC items (API reference entries) */
|
|
281
|
+
.toc-sidebar nav ul.toc-sub{list-style:none;margin:6px 0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}
|
|
282
|
+
.toc-sidebar nav li.toc-sub-item{padding-left:6px}
|
|
283
|
+
.toc-sidebar nav li.toc-sub-item a{font-size:13px;color:rgba(255,255,255,0.65);padding:6px 10px;border-radius:6px;display:block}
|
|
284
|
+
.toc-sidebar nav li.toc-sub-item a:hover{color:var(--text);background:linear-gradient(180deg,rgba(255,255,255,0.01),transparent)}
|
|
285
|
+
.toc-sidebar nav li.toc-sub-item a:visited{color:rgba(255,255,255,0.6)}
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
@media(min-width:900px){
|
|
289
|
+
.ui-shell{display:flex;align-items:flex-start}
|
|
290
|
+
.toc-sidebar{position:sticky;top:calc(var(--header-height) + 20px);width:230px;flex-shrink:0;opacity:1;transform:none;pointer-events:auto;left:auto;max-height:calc(100vh - var(--header-height) - 40px);box-shadow:none;z-index:auto;transition:none}
|
|
291
|
+
.ui-main{flex:1;min-width:0}
|
|
292
|
+
body.toc-hidden .toc-sidebar{display:none}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
@media(max-width:640px){
|
|
296
|
+
.toc-sidebar{left:10px;top:64px;width:86%;max-height:calc(100vh - 84px)}
|
|
297
|
+
.ui-main{margin-left:0}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* Keep the hamburger always accessible on small screens */
|
|
301
|
+
@media(max-width:640px){
|
|
302
|
+
:root{--header-height:56px}
|
|
303
|
+
.ui-header{width:calc(100% - 16px);padding:8px 12px;border-radius:0}
|
|
304
|
+
.brand .subtitle{display:none}
|
|
305
|
+
.brand .logo{font-size:18px}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/* Ensure page content is not hidden behind the fixed header */
|
|
309
|
+
body{padding-top:calc(var(--header-height) + 12px)}
|
|
310
|
+
.ui-shell{margin-top:0}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" aria-hidden="true">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g-fetch" x1="0" x2="1">
|
|
4
|
+
<stop offset="0" stop-color="#7b61ff"/>
|
|
5
|
+
<stop offset="1" stop-color="#3ec6ff"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<!-- Cloud silhouette via clipPath so gradient is seamless across the whole shape -->
|
|
8
|
+
<clipPath id="cloud-clip">
|
|
9
|
+
<circle cx="18" cy="26" r="11"/>
|
|
10
|
+
<circle cx="32" cy="17" r="14"/>
|
|
11
|
+
<circle cx="46" cy="24" r="11"/>
|
|
12
|
+
<rect x="8" y="28" width="48" height="12" rx="6"/>
|
|
13
|
+
</clipPath>
|
|
14
|
+
</defs>
|
|
15
|
+
<rect width="64" height="64" rx="8" fill="transparent"/>
|
|
16
|
+
|
|
17
|
+
<!-- Large centered cloud filled with flat gradient, clipped to cloud silhouette -->
|
|
18
|
+
<rect x="0" y="0" width="64" height="64" fill="url(#g-fetch)" clip-path="url(#cloud-clip)"/>
|
|
19
|
+
|
|
20
|
+
<!-- Centered down arrow below the cloud -->
|
|
21
|
+
<path d="M32 43v13" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round"/>
|
|
22
|
+
<path d="M27 56l5 5 5-5" fill="none" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
23
|
+
</svg>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" aria-hidden="true">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g-plug" x1="0" x2="1">
|
|
4
|
+
<stop offset="0" stop-color="#7b61ff"/>
|
|
5
|
+
<stop offset="1" stop-color="#3ec6ff"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="g-cord" x1="0" x2="0" y1="0" y2="1">
|
|
8
|
+
<stop offset="0" stop-color="#a084ff"/>
|
|
9
|
+
<stop offset="1" stop-color="#3ec6ff"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
12
|
+
<rect width="64" height="64" rx="8" fill="transparent"/>
|
|
13
|
+
|
|
14
|
+
<!-- Prong pins -->
|
|
15
|
+
<rect x="22" y="4" width="5" height="13" rx="2.5" fill="rgba(255,255,255,0.92)"/>
|
|
16
|
+
<rect x="37" y="4" width="5" height="13" rx="2.5" fill="rgba(255,255,255,0.92)"/>
|
|
17
|
+
|
|
18
|
+
<!-- Plug body -->
|
|
19
|
+
<rect x="11" y="17" width="42" height="20" rx="7" fill="url(#g-plug)"/>
|
|
20
|
+
|
|
21
|
+
<!-- Strain relief neck -->
|
|
22
|
+
<rect x="24" y="37" width="16" height="8" rx="4" fill="url(#g-plug)"/>
|
|
23
|
+
|
|
24
|
+
<!-- Cord: sweeps down from neck and curls to the right -->
|
|
25
|
+
<path d="M 32 45 C 32 54, 16 52, 16 58 C 16 63, 26 64, 36 61"
|
|
26
|
+
fill="none" stroke="url(#g-cord)" stroke-width="4" stroke-linecap="round"/>
|
|
27
|
+
</svg>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" aria-hidden="true">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g-static" x1="0" x2="1">
|
|
4
|
+
<stop offset="0" stop-color="#7b61ff"/>
|
|
5
|
+
<stop offset="1" stop-color="#3ec6ff"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="64" height="64" rx="8" fill="transparent"/>
|
|
9
|
+
|
|
10
|
+
<!-- Antenna arms from top-center -->
|
|
11
|
+
<line x1="32" y1="10" x2="22" y2="1" stroke="#ffffff" stroke-width="2" stroke-linecap="round" opacity="0.92"/>
|
|
12
|
+
<line x1="32" y1="10" x2="42" y2="1" stroke="#ffffff" stroke-width="2" stroke-linecap="round" opacity="0.92"/>
|
|
13
|
+
|
|
14
|
+
<!-- TV outer body -->
|
|
15
|
+
<rect x="6" y="10" width="52" height="34" rx="6" fill="url(#g-static)"/>
|
|
16
|
+
|
|
17
|
+
<!-- Screen (dark inset) -->
|
|
18
|
+
<rect x="11" y="14" width="42" height="22" rx="3" fill="rgba(8,10,20,0.5)"/>
|
|
19
|
+
|
|
20
|
+
<!-- Static zig-zag noise lines on screen -->
|
|
21
|
+
<g fill="none" stroke="#ffffff" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" opacity="0.82">
|
|
22
|
+
<path d="M13 20 L17 24 L21 20 L25 24 L29 20 L33 24 L37 20 L41 24 L45 20 L49 24"/>
|
|
23
|
+
<path d="M13 29 L17 33 L21 29 L25 33 L29 29 L33 33 L37 29 L41 33 L45 29 L49 33"/>
|
|
24
|
+
</g>
|
|
25
|
+
|
|
26
|
+
<!-- Control knobs below screen (inside body) -->
|
|
27
|
+
<circle cx="20" cy="41" r="2.2" fill="rgba(255,255,255,0.55)"/>
|
|
28
|
+
<circle cx="32" cy="41" r="2.2" fill="rgba(255,255,255,0.25)"/>
|
|
29
|
+
<circle cx="44" cy="41" r="2.2" fill="rgba(255,255,255,0.15)"/>
|
|
30
|
+
|
|
31
|
+
<!-- Stand neck -->
|
|
32
|
+
<rect x="27" y="44" width="10" height="5" rx="2" fill="url(#g-static)"/>
|
|
33
|
+
<!-- Stand base -->
|
|
34
|
+
<rect x="17" y="49" width="30" height="5" rx="3" fill="url(#g-static)"/>
|
|
35
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" aria-hidden="true">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g-stream" x1="0" x2="1">
|
|
4
|
+
<stop offset="0" stop-color="#7b61ff"/>
|
|
5
|
+
<stop offset="1" stop-color="#3ec6ff"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="64" height="64" rx="8" fill="transparent"/>
|
|
9
|
+
|
|
10
|
+
<!-- Hard disk on the right, big thin white arrow pointing into it from the left -->
|
|
11
|
+
<!-- Hard disk body -->
|
|
12
|
+
<rect x="34" y="14" width="22" height="36" rx="5" fill="url(#g-stream)"/>
|
|
13
|
+
<!-- disk platter slot line -->
|
|
14
|
+
<line x1="38" y1="26" x2="52" y2="26" stroke="rgba(255,255,255,0.25)" stroke-width="1.5" stroke-linecap="round"/>
|
|
15
|
+
<!-- small read-head dot -->
|
|
16
|
+
<circle cx="44" cy="38" r="3" fill="rgba(255,255,255,0.2)"/>
|
|
17
|
+
<circle cx="44" cy="38" r="1.4" fill="rgba(255,255,255,0.55)"/>
|
|
18
|
+
|
|
19
|
+
<!-- Big thin white arrow pointing right into the disk -->
|
|
20
|
+
<path d="M6 32h22" stroke="#ffffff" stroke-width="2" stroke-linecap="round"/>
|
|
21
|
+
<path d="M22 25l12 7-12 7" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" aria-hidden="true">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g-zero" x1="0" x2="1">
|
|
4
|
+
<stop offset="0" stop-color="#7b61ff"/>
|
|
5
|
+
<stop offset="1" stop-color="#3ec6ff"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<filter id="soft" x="-20%" y="-20%" width="140%" height="140%">
|
|
8
|
+
<feGaussianBlur stdDeviation="1" result="b" />
|
|
9
|
+
<feBlend in="SourceGraphic" in2="b" />
|
|
10
|
+
</filter>
|
|
11
|
+
</defs>
|
|
12
|
+
<rect width="64" height="64" rx="8" fill="transparent"/>
|
|
13
|
+
<g transform="translate(0 0)">
|
|
14
|
+
<!-- lightning bolt centered -->
|
|
15
|
+
<path d="M30 8 L18 36 L28 36 L20 56 L44 24 L34 24 L42 8 Z" fill="url(#g-zero)" filter="url(#soft)"/>
|
|
16
|
+
<!-- subtle highlight -->
|
|
17
|
+
<path d="M30 12 L22 36 L28 36 L24 48 L40 22 L34 22 L38 12 Z" fill="rgba(255,255,255,0.12)"/>
|
|
18
|
+
<!-- white oval-outline '0' badge (slightly smaller) -->
|
|
19
|
+
<ellipse cx="47" cy="47" rx="5" ry="7.5" fill="none" stroke="#ffffff" stroke-width="1.8" opacity="0.98"/>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* Minimal copy-to-clipboard helper for code blocks */
|
|
2
|
+
(function(){
|
|
3
|
+
window.PrismCopyToClipboard = async function(pre){
|
|
4
|
+
if (!pre) return false;
|
|
5
|
+
// prefer code element content
|
|
6
|
+
const code = pre.querySelector('code') || pre;
|
|
7
|
+
const text = code ? code.textContent : pre.textContent;
|
|
8
|
+
if (!text) return false;
|
|
9
|
+
try {
|
|
10
|
+
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
11
|
+
await navigator.clipboard.writeText(text);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
} catch(e){}
|
|
15
|
+
// fallback using textarea
|
|
16
|
+
try {
|
|
17
|
+
const ta = document.createElement('textarea');
|
|
18
|
+
ta.value = text;
|
|
19
|
+
ta.style.position = 'fixed'; ta.style.left = '-9999px';
|
|
20
|
+
document.body.appendChild(ta);
|
|
21
|
+
ta.select();
|
|
22
|
+
document.execCommand('copy');
|
|
23
|
+
ta.remove();
|
|
24
|
+
return true;
|
|
25
|
+
} catch(e) { return false; }
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap: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}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* Minimal toolbar styling for Prism code blocks */
|
|
2
|
+
.prism-toolbar {
|
|
3
|
+
position: absolute;
|
|
4
|
+
top: 8px;
|
|
5
|
+
right: 8px;
|
|
6
|
+
display: flex;
|
|
7
|
+
gap: 6px;
|
|
8
|
+
z-index: 2;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.prism-toolbar button {
|
|
12
|
+
background: rgba(255, 255, 255, 0.04);
|
|
13
|
+
color: inherit;
|
|
14
|
+
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
15
|
+
padding: 6px 8px;
|
|
16
|
+
border-radius: 6px;
|
|
17
|
+
font-size: 12px;
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.prism-toolbar button:active {
|
|
22
|
+
transform: translateY(1px);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.prism-code-wrap {
|
|
26
|
+
position: relative;
|
|
27
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* Minimal Prism toolbar implementation that adds a copy button to <pre class="code"> blocks */
|
|
2
|
+
(function(){
|
|
3
|
+
function addToolbar(pre){
|
|
4
|
+
if (pre.dataset.prismToolbarAdded) return;
|
|
5
|
+
pre.dataset.prismToolbarAdded = '1';
|
|
6
|
+
pre.classList.add('prism-code-wrap');
|
|
7
|
+
const toolbar = document.createElement('div'); toolbar.className = 'prism-toolbar';
|
|
8
|
+
const copyBtn = document.createElement('button'); copyBtn.type = 'button'; copyBtn.textContent = 'Copy';
|
|
9
|
+
copyBtn.addEventListener('click', async function(){
|
|
10
|
+
const ok = (window.PrismCopyToClipboard) ? await window.PrismCopyToClipboard(pre) : await fallbackCopy(pre);
|
|
11
|
+
copyBtn.textContent = ok ? 'Copied' : 'Error';
|
|
12
|
+
setTimeout(()=>{ copyBtn.textContent = 'Copy'; }, 1600);
|
|
13
|
+
});
|
|
14
|
+
toolbar.appendChild(copyBtn);
|
|
15
|
+
pre.style.position = pre.style.position || 'relative';
|
|
16
|
+
pre.appendChild(toolbar);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async function fallbackCopy(pre){
|
|
20
|
+
try { const code = pre.querySelector('code') || pre; const ta = document.createElement('textarea'); ta.value = code.textContent || pre.textContent || ''; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); ta.remove(); return true; } catch(e){ return false; }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function scanAndAttach(){
|
|
24
|
+
// attach to programmatic blocks (pre.code) and static Prism blocks (pre[class*="language-"])
|
|
25
|
+
const preds = Array.from(document.querySelectorAll('pre.code'))
|
|
26
|
+
.concat(Array.from(document.querySelectorAll('pre[class*="language-"]')));
|
|
27
|
+
// dedupe
|
|
28
|
+
const set = new Set();
|
|
29
|
+
preds.forEach(p => { if (!set.has(p)) { set.add(p); addToolbar(p); } });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', scanAndAttach); else scanAndAttach();
|
|
33
|
+
// also attach after Prism highlights run
|
|
34
|
+
if (window.Prism && typeof window.Prism === 'object'){
|
|
35
|
+
const original = window.Prism.highlightAll;
|
|
36
|
+
window.Prism.highlightAll = function(){
|
|
37
|
+
try { original && original.apply(window.Prism, arguments); } catch(e){}
|
|
38
|
+
scanAndAttach();
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(l){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,e={},j={manual:l.Prism&&l.Prism.manual,disableWorkerMessageHandler:l.Prism&&l.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof C?new C(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function n(e,a){var r,t;switch(a=a||{},j.util.type(e)){case"Object":if(t=j.util.objId(e),a[t])return a[t];for(var s in r={},a[t]=r,e)e.hasOwnProperty(s)&&(r[s]=n(e[s],a));return r;case"Array":return(t=j.util.objId(e),a[t])?a[t]:(r=[],a[t]=r,e.forEach(function(e,t){r[t]=n(e,a)}),r);default:return e}},getLanguage:function(e){for(;e;){var t=n.exec(e.className);if(t)return t[1].toLowerCase();e=e.parentElement}return"none"},setLanguage:function(e,t){e.className=e.className.replace(RegExp(n,"gi"),""),e.classList.add("language-"+t)},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var t=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(e.stack)||[])[1];if(t){var n,a=document.getElementsByTagName("script");for(n in a)if(a[n].src==t)return a[n]}return null}},isActive:function(e,t,n){for(var a="no-"+t;e;){var r=e.classList;if(r.contains(t))return!0;if(r.contains(a))return!1;e=e.parentElement}return!!n}},languages:{plain:e,plaintext:e,text:e,txt:e,extend:function(e,t){var n,a=j.util.clone(j.languages[e]);for(n in t)a[n]=t[n];return a},insertBefore:function(n,e,t,a){var r,s=(a=a||j.languages)[n],i={};for(r in s)if(s.hasOwnProperty(r)){if(r==e)for(var o in t)t.hasOwnProperty(o)&&(i[o]=t[o]);t.hasOwnProperty(r)||(i[r]=s[r])}var l=a[n];return a[n]=i,j.languages.DFS(j.languages,function(e,t){t===l&&e!=n&&(this[e]=i)}),i},DFS:function e(t,n,a,r){r=r||{};var s,i,o,l=j.util.objId;for(s in t)t.hasOwnProperty(s)&&(n.call(t,s,t[s],a||s),i=t[s],"Object"!==(o=j.util.type(i))||r[l(i)]?"Array"!==o||r[l(i)]||(r[l(i)]=!0,e(i,n,s,r)):(r[l(i)]=!0,e(i,n,null,r)))}},plugins:{},highlightAll:function(e,t){j.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var a={callback:n,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};j.hooks.run("before-highlightall",a),a.elements=Array.prototype.slice.apply(a.container.querySelectorAll(a.selector)),j.hooks.run("before-all-elements-highlight",a);for(var r,s=0;r=a.elements[s++];)j.highlightElement(r,!0===t,a.callback)},highlightElement:function(e,t,n){var a=j.util.getLanguage(e),r=j.languages[a],s=(j.util.setLanguage(e,a),e.parentElement);s&&"pre"===s.nodeName.toLowerCase()&&j.util.setLanguage(s,a);var i={element:e,language:a,grammar:r,code:e.textContent};function o(e){i.highlightedCode=e,j.hooks.run("before-insert",i),i.element.innerHTML=i.highlightedCode,j.hooks.run("after-highlight",i),j.hooks.run("complete",i),n&&n.call(i.element)}if(j.hooks.run("before-sanity-check",i),(s=i.element.parentElement)&&"pre"===s.nodeName.toLowerCase()&&!s.hasAttribute("tabindex")&&s.setAttribute("tabindex","0"),!i.code)return j.hooks.run("complete",i),void(n&&n.call(i.element));j.hooks.run("before-highlight",i),i.grammar?t&&l.Worker?((a=new Worker(j.filename)).onmessage=function(e){o(e.data)},a.postMessage(JSON.stringify({language:i.language,code:i.code,immediateClose:!0}))):o(j.highlight(i.code,i.grammar,i.language)):o(j.util.encode(i.code))},highlight:function(e,t,n){e={code:e,grammar:t,language:n};if(j.hooks.run("before-tokenize",e),e.grammar)return e.tokens=j.tokenize(e.code,e.grammar),j.hooks.run("after-tokenize",e),C.stringify(j.util.encode(e.tokens),e.language);throw new Error('The language "'+e.language+'" has no grammar.')},tokenize:function(e,t){var n=t.rest;if(n){for(var a in n)t[a]=n[a];delete t.rest}for(var r=new u,s=(z(r,r.head,e),!function e(t,n,a,r,s,i){for(var o in a)if(a.hasOwnProperty(o)&&a[o]){var l=a[o];l=Array.isArray(l)?l:[l];for(var u=0;u<l.length;++u){if(i&&i.cause==o+","+u)return;for(var g,c=l[u],d=c.inside,p=!!c.lookbehind,m=!!c.greedy,h=c.alias,f=(m&&!c.pattern.global&&(g=c.pattern.toString().match(/[imsuy]*$/)[0],c.pattern=RegExp(c.pattern.source,g+"g")),c.pattern||c),b=r.next,y=s;b!==n.tail&&!(i&&y>=i.reach);y+=b.value.length,b=b.next){var v=b.value;if(n.length>t.length)return;if(!(v instanceof C)){var F,x=1;if(m){if(!(F=L(f,y,t,p))||F.index>=t.length)break;var k=F.index,w=F.index+F[0].length,A=y;for(A+=b.value.length;A<=k;)b=b.next,A+=b.value.length;if(A-=b.value.length,y=A,b.value instanceof C)continue;for(var P=b;P!==n.tail&&(A<w||"string"==typeof P.value);P=P.next)x++,A+=P.value.length;x--,v=t.slice(y,A),F.index-=y}else if(!(F=L(f,0,v,p)))continue;var k=F.index,$=F[0],S=v.slice(0,k),E=v.slice(k+$.length),v=y+v.length,_=(i&&v>i.reach&&(i.reach=v),b.prev),S=(S&&(_=z(n,_,S),y+=S.length),O(n,_,x),new C(o,d?j.tokenize($,d):$,h,$));b=z(n,_,S),E&&z(n,b,E),1<x&&($={cause:o+","+u,reach:v},e(t,n,a,b.prev,y,$),i&&$.reach>i.reach&&(i.reach=$.reach))}}}}}(e,r,t,r.head,0),r),i=[],o=s.head.next;o!==s.tail;)i.push(o.value),o=o.next;return i},hooks:{all:{},add:function(e,t){var n=j.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=j.hooks.all[e];if(n&&n.length)for(var a,r=0;a=n[r++];)a(t)}},Token:C};function C(e,t,n,a){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length}function L(e,t,n,a){e.lastIndex=t;t=e.exec(n);return t&&a&&t[1]&&(e=t[1].length,t.index+=e,t[0]=t[0].slice(e)),t}function u(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function z(e,t,n){var a=t.next,n={value:n,prev:t,next:a};return t.next=n,a.prev=n,e.length++,n}function O(e,t,n){for(var a=t.next,r=0;r<n&&a!==e.tail;r++)a=a.next;(t.next=a).prev=t,e.length-=r}if(l.Prism=j,C.stringify=function t(e,n){if("string"==typeof e)return e;var a;if(Array.isArray(e))return a="",e.forEach(function(e){a+=t(e,n)}),a;var r,s={type:e.type,content:t(e.content,n),tag:"span",classes:["token",e.type],attributes:{},language:n},e=e.alias,i=(e&&(Array.isArray(e)?Array.prototype.push.apply(s.classes,e):s.classes.push(e)),j.hooks.run("wrap",s),"");for(r in s.attributes)i+=" "+r+'="'+(s.attributes[r]||"").replace(/"/g,""")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'"'+i+">"+s.content+"</"+s.tag+">"},!l.document)return l.addEventListener&&(j.disableWorkerMessageHandler||l.addEventListener("message",function(e){var e=JSON.parse(e.data),t=e.language,n=e.code,e=e.immediateClose;l.postMessage(j.highlight(n,j.languages[t],t)),e&&l.close()},!1)),j;var a,e=j.util.currentScript();function r(){j.manual||j.highlightAll()}return e&&(j.filename=e.src,e.hasAttribute("data-manual")&&(j.manual=!0)),j.manual||("loading"===(a=document.readyState)||"interactive"===a&&e&&e.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),j}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism),Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,t){var n={},n=(n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}),t=(n["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]},{});t[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,t){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:Prism.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/,t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup);t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript,function(){var l,u,g,c,e;void 0!==Prism&&"undefined"!=typeof document&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),l={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},c="pre[data-src]:not(["+(u="data-src-status")+'="loaded"]):not(['+u+'="'+(g="loading")+'"])',Prism.hooks.add("before-highlightall",function(e){e.selector+=", "+c}),Prism.hooks.add("before-sanity-check",function(e){var r,t,n,a,s,i,o=e.element;o.matches(c)&&(e.code="",o.setAttribute(u,g),(r=o.appendChild(document.createElement("CODE"))).textContent="Loading…",t=o.getAttribute("data-src"),"none"===(e=e.language)&&(n=(/\.(\w+)$/.exec(t)||[,"none"])[1],e=l[n]||n),Prism.util.setLanguage(r,e),Prism.util.setLanguage(o,e),(n=Prism.plugins.autoloader)&&n.loadLanguages(e),n=t,a=function(e){o.setAttribute(u,"loaded");var t,n,a=function(e){var t,n;if(e=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||""))return t=Number(e[1]),n=e[2],e=e[3],n?e?[t,Number(e)]:[t,void 0]:[t,t]}(o.getAttribute("data-range"));a&&(t=e.split(/\r\n?|\n/g),n=a[0],a=null==a[1]?t.length:a[1],n<0&&(n+=t.length),n=Math.max(0,Math.min(n-1,t.length)),a<0&&(a+=t.length),a=Math.max(0,Math.min(a,t.length)),e=t.slice(n,a).join("\n"),o.hasAttribute("data-start")||o.setAttribute("data-start",String(n+1))),r.textContent=e,Prism.highlightElement(r)},s=function(e){o.setAttribute(u,"failed"),r.textContent=e},(i=new XMLHttpRequest).open("GET",n,!0),i.onreadystatechange=function(){4==i.readyState&&(i.status<400&&i.responseText?a(i.responseText):400<=i.status?s("✖ Error "+i.status+" while fetching file: "+i.statusText):s("✖ Error: File does not exist or is empty"))},i.send(null))}),e=!(Prism.plugins.fileHighlight={highlight:function(e){for(var t,n=(e||document).querySelectorAll(c),a=0;t=n[a++];)Prism.highlightElement(t)}}),Prism.fileHighlight=function(){e||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),e=!0),Prism.plugins.fileHighlight.highlight.apply(this,arguments)})}();
|