Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7ddc91344
|
||
|
|
375b1b2040
|
||
|
|
c440710ef6
|
||
|
|
0d79a0ffd6
|
Generated
+2
-2
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "cerebellum",
|
||||
"name": "pupil",
|
||||
"version": "2.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "cerebellum",
|
||||
"name": "pupil",
|
||||
"version": "2.0.0",
|
||||
"dependencies": {
|
||||
"@dr.pogodin/react-helmet": "^3.2.3",
|
||||
|
||||
@@ -41,5 +41,6 @@
|
||||
.leftBlockContent button,
|
||||
.leftBlockContent :global(.formButton) {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
font-size: 13.3333px;
|
||||
}
|
||||
|
||||
@@ -77,4 +77,5 @@
|
||||
.database :global(.fieldDate input),
|
||||
.database :global(.listTable select) {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
margin: 3px 3px 10px;
|
||||
/* sanitize.css forms.css leaves buttons transparent */
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.indexTree div span {
|
||||
@@ -43,26 +44,37 @@
|
||||
display: inline-block;
|
||||
height: 20px;
|
||||
width: 9px;
|
||||
background: url(../assets/images/tree_line.png);
|
||||
background: url(../assets/images/tree_line.png) no-repeat -18px 0;
|
||||
}
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode .rc-tree-indent .rc-tree-indent-unit:not(:last-child)) {
|
||||
/* treeData has a single root, so the first indent unit never carries a line. */
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode .rc-tree-indent .rc-tree-indent-unit:first-child) {
|
||||
display: none;
|
||||
}
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode .rc-tree-indent .rc-tree-indent-unit:not(.rc-tree-indent-unit-end)) {
|
||||
background-position: -9px 0;
|
||||
}
|
||||
.indexTree:global(
|
||||
.rc-tree .rc-tree-treenode .rc-tree-indent .rc-tree-indent-unit:not(:last-child).rc-tree-indent-unit-end
|
||||
) {
|
||||
background-position: -18px 0;
|
||||
/* The node's own branch (├ or └) is drawn after the indent units. */
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode .rc-tree-indent)::after {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
vertical-align: bottom;
|
||||
height: 20px;
|
||||
width: 9px;
|
||||
background: url(../assets/images/tree_line.png) no-repeat 0 0;
|
||||
}
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode .rc-tree-indent .rc-tree-indent-unit:last-child.rc-tree-indent-unit-end) {
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode.rc-tree-treenode-leaf-last .rc-tree-indent)::after {
|
||||
background-position: -27px 0;
|
||||
}
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode:first-child .rc-tree-indent)::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode .rc-tree-switcher) {
|
||||
display: inline-block;
|
||||
height: 20px;
|
||||
width: 16px;
|
||||
margin-right: 2px;
|
||||
background: url(../assets/images/tree_node.png);
|
||||
background: url(../assets/images/tree_node.png) no-repeat;
|
||||
cursor: pointer;
|
||||
}
|
||||
.indexTree:global(.rc-tree .rc-tree-treenode:first-child .rc-tree-switcher.rc-tree-switcher-noop) {
|
||||
|
||||
+28
-1
@@ -20,7 +20,34 @@ const staticContents = (): Plugin => {
|
||||
// browser revalidates against the ETag instead of falling back to
|
||||
// heuristic caching. Without it a re-dump, or another site served
|
||||
// from the same localhost port, is answered from a stale cache.
|
||||
middlewares.use(sirv(dir, { dev, etag: true, maxAge: 0 }));
|
||||
const serve = sirv(dir, { dev, etag: true, maxAge: 0 });
|
||||
middlewares.use((req, res, next) => {
|
||||
// sirv decodes the path with decodeURI, which leaves reserved
|
||||
// characters such as %26 (&) and %23 (#) encoded, so a file like
|
||||
// `CFP&Reg.png` is not found. sirv reuses `req._parsedUrl` when
|
||||
// it was parsed from the same `req.url`, so hand it the path
|
||||
// decoded the way Apache resolves it.
|
||||
const raw = req.url ?? '/';
|
||||
const idx = raw.search(/[?#]/);
|
||||
const pathname = idx === -1 ? raw : raw.slice(0, idx);
|
||||
if (pathname.includes('%')) {
|
||||
try {
|
||||
const decoded = pathname.split('/').map(decodeURIComponent).join('/');
|
||||
if (!decoded.includes('%')) {
|
||||
(req as typeof req & { _parsedUrl?: object })._parsedUrl = {
|
||||
pathname: decoded,
|
||||
search: '',
|
||||
query: undefined,
|
||||
hash: undefined,
|
||||
raw,
|
||||
};
|
||||
}
|
||||
} catch {
|
||||
// leave malformed escapes to sirv
|
||||
}
|
||||
}
|
||||
serve(req, res, next);
|
||||
});
|
||||
}
|
||||
};
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user