initial commit
This commit is contained in:
commit
d2db386693
23
.gitignore
vendored
Normal file
23
.gitignore
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules
|
||||||
|
/.pnp
|
||||||
|
.pnp.js
|
||||||
|
|
||||||
|
# testing
|
||||||
|
/coverage
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"typescript.tsdk": "node_modules/typescript/lib"
|
||||||
|
}
|
27
Dockerfile
Normal file
27
Dockerfile
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
FROM node:15 as build
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
COPY public ./public
|
||||||
|
COPY src ./src
|
||||||
|
COPY package.json .
|
||||||
|
COPY yarn.lock .
|
||||||
|
COPY tsconfig.json .
|
||||||
|
|
||||||
|
RUN yarn install
|
||||||
|
RUN yarn build
|
||||||
|
|
||||||
|
|
||||||
|
FROM nginx
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=build /build/build ./
|
||||||
|
|
||||||
|
COPY nginx.conf /etc/nginx/nginx.conf.template
|
||||||
|
|
||||||
|
COPY docker-entrypoint.sh /
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
ENTRYPOINT /docker-entrypoint.sh
|
3
build-docker.sh
Executable file
3
build-docker.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
sudo docker build -t docker.kapelle.org/ncpb .
|
8
docker-compose.yml
Normal file
8
docker-compose.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
pb:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
environment:
|
||||||
|
- ENDPOINT=https://your.nextcloud.org/
|
5
docker-entrypoint.sh
Executable file
5
docker-entrypoint.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
set -e
|
||||||
|
export DOLLAR='$'
|
||||||
|
envsubst < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
|
||||||
|
nginx -g 'daemon off;'
|
20
nginx.conf
Normal file
20
nginx.conf
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
events {}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include mime.types;
|
||||||
|
server {
|
||||||
|
root /app;
|
||||||
|
listen 80;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files ${DOLLAR}uri /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /api/endpoint {
|
||||||
|
|
||||||
|
return 200 '${ENDPOINT}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
42
package.json
Normal file
42
package.json
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"name": "ncpb",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "^12.0.0",
|
||||||
|
"@types/react": "^17.0.0",
|
||||||
|
"@types/react-copy-to-clipboard": "^5.0.0",
|
||||||
|
"@types/react-dom": "^17.0.0",
|
||||||
|
"@types/react-syntax-highlighter": "^13.5.0",
|
||||||
|
"react": "^17.0.1",
|
||||||
|
"react-copy-to-clipboard": "^5.0.3",
|
||||||
|
"react-dom": "^17.0.1",
|
||||||
|
"react-scripts": "4.0.2",
|
||||||
|
"react-syntax-highlighter": "^15.4.3",
|
||||||
|
"typescript": "^4.1.2"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"start": "react-scripts start",
|
||||||
|
"build": "react-scripts build",
|
||||||
|
"test": "react-scripts test",
|
||||||
|
"eject": "react-scripts eject"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"extends": [
|
||||||
|
"react-app",
|
||||||
|
"react-app/jest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"browserslist": {
|
||||||
|
"production": [
|
||||||
|
">0.2%",
|
||||||
|
"not dead",
|
||||||
|
"not op_mini all"
|
||||||
|
],
|
||||||
|
"development": [
|
||||||
|
"last 1 chrome version",
|
||||||
|
"last 1 firefox version",
|
||||||
|
"last 1 safari version"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
12
public/index.html
Normal file
12
public/index.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>Pastebin</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
<div id="root"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
101
src/App.tsx
Normal file
101
src/App.tsx
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
import React, { useEffect, useState } from "react";
|
||||||
|
import CopyToClipboard from "react-copy-to-clipboard";
|
||||||
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
||||||
|
import style from "react-syntax-highlighter/dist/cjs/styles/prism/vsc-dark-plus"
|
||||||
|
import cutomStyle from "./customStyle";
|
||||||
|
import getLangFromFilename from "./getLangFromFilename";
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
shareID: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const filenameRegex = /filename\*?=['"]?(?:UTF-\d['"]*)?([^;\r\n"']*)['"]?;?/gi;
|
||||||
|
|
||||||
|
function parseFilename(headers: Headers): string{
|
||||||
|
const raw = headers.get("content-disposition");
|
||||||
|
if (raw == null) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
let m;
|
||||||
|
while ((m = filenameRegex.exec(raw)) !== null) {
|
||||||
|
// Return the first match that we got
|
||||||
|
return m[1];
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function App(props: Props) {
|
||||||
|
const [content,setContent] = useState<string>("");
|
||||||
|
const [title,setTitle] = useState<string>("");
|
||||||
|
const [lang,setLang] = useState<string>("text");
|
||||||
|
const [endpoint,setEndpoint] = useState<string>("");
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
(async () =>{
|
||||||
|
setEndpoint(await (await fetch("/api/endpoint")).text());
|
||||||
|
})()
|
||||||
|
},[])
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
(async ()=>{
|
||||||
|
if (!endpoint){
|
||||||
|
// Still loading endpoint
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${endpoint}/index.php/s/${props.shareID}/download`);
|
||||||
|
|
||||||
|
if (response.status === 404){
|
||||||
|
// File not found
|
||||||
|
// TODO display error
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentLength = parseInt(response.headers.get("content-length")!,10);
|
||||||
|
const filename = parseFilename(response.headers);
|
||||||
|
setTitle(filename);
|
||||||
|
document.title = filename;
|
||||||
|
|
||||||
|
setLang(getLangFromFilename(filename) || "text")
|
||||||
|
|
||||||
|
if (contentLength <= 20000) {
|
||||||
|
const text = await response.text()
|
||||||
|
setContent(text);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
// TODO display error
|
||||||
|
}
|
||||||
|
})()
|
||||||
|
},[props.shareID,endpoint])
|
||||||
|
|
||||||
|
function downloadClick() {
|
||||||
|
window.open(`${endpoint}/index.php/s/${props.shareID}/download`, "_self");
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="fileContainer">
|
||||||
|
<div className="headerContainer">
|
||||||
|
<span className="fileTitle">{title}</span>
|
||||||
|
<div className="buttonContainer">
|
||||||
|
<CopyToClipboard text={content}>
|
||||||
|
<button className="titleButton">Copy</button>
|
||||||
|
</CopyToClipboard>
|
||||||
|
<button className="titleButton" onClick={downloadClick}>Download</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<SyntaxHighlighter
|
||||||
|
customStyle={cutomStyle}
|
||||||
|
showLineNumbers={true}
|
||||||
|
style={style}
|
||||||
|
wrapLongLines={true}
|
||||||
|
language={lang}
|
||||||
|
>
|
||||||
|
{content}
|
||||||
|
</SyntaxHighlighter>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default App;
|
5
src/customStyle.ts
Normal file
5
src/customStyle.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
const cutomStyle = {
|
||||||
|
"backgroundColor": "#0d1117"
|
||||||
|
}
|
||||||
|
|
||||||
|
export default cutomStyle;
|
486
src/getLangFromFilename.ts
Normal file
486
src/getLangFromFilename.ts
Normal file
@ -0,0 +1,486 @@
|
|||||||
|
export default function getLangFromFilename(filename: string): string {
|
||||||
|
let extension: string;
|
||||||
|
try {
|
||||||
|
const filenameParts = filename.split(".");
|
||||||
|
extension = filenameParts[filenameParts.length - 1].toLocaleLowerCase();
|
||||||
|
} catch (err) {
|
||||||
|
return "text";
|
||||||
|
}
|
||||||
|
|
||||||
|
// bases on https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_PRISM.MD
|
||||||
|
switch (extension) {
|
||||||
|
case "abap":
|
||||||
|
return "abap";
|
||||||
|
// case "":
|
||||||
|
// return "abnf";
|
||||||
|
// case "":
|
||||||
|
// return "actionscript";
|
||||||
|
// case "":
|
||||||
|
// return "ada";
|
||||||
|
// case "":
|
||||||
|
// return "agda";
|
||||||
|
// case "":
|
||||||
|
// return "al";
|
||||||
|
// case "":
|
||||||
|
// return "antlr4";
|
||||||
|
// case "":
|
||||||
|
// return "apacheconf";
|
||||||
|
// case "":
|
||||||
|
// return "apl";
|
||||||
|
// case "":
|
||||||
|
// return "applescript";
|
||||||
|
// case "":
|
||||||
|
// return "aql";
|
||||||
|
// case "":
|
||||||
|
// return "arduino";
|
||||||
|
// case "":
|
||||||
|
// return "arff";
|
||||||
|
// case "":
|
||||||
|
// return "asciidoc";
|
||||||
|
// case "":
|
||||||
|
// return "asm6502";
|
||||||
|
// case "":
|
||||||
|
// return "aspnet";
|
||||||
|
// case "":
|
||||||
|
// return "autohotkey";
|
||||||
|
// case "":
|
||||||
|
// return "autoit";
|
||||||
|
case "sh":
|
||||||
|
return "bash";
|
||||||
|
// case "":
|
||||||
|
// return "basic";
|
||||||
|
case "bat":
|
||||||
|
return "batch";
|
||||||
|
case "":
|
||||||
|
return "bbcode";
|
||||||
|
// case "":
|
||||||
|
// return "birb";
|
||||||
|
// case "":
|
||||||
|
// return "bison";
|
||||||
|
// case "":
|
||||||
|
// return "bnf";
|
||||||
|
case "bf":
|
||||||
|
return "brainfuck";
|
||||||
|
// case "":
|
||||||
|
// return "brightscript";
|
||||||
|
// case "":
|
||||||
|
// return "bro";
|
||||||
|
// case "":
|
||||||
|
// return "bsl";
|
||||||
|
case "c":
|
||||||
|
return "c";
|
||||||
|
// case "":
|
||||||
|
// return "cil";
|
||||||
|
// case "":
|
||||||
|
// return "clike";
|
||||||
|
// case "":
|
||||||
|
// return "clojure";
|
||||||
|
// case "":
|
||||||
|
// return "cmake";
|
||||||
|
// case "":
|
||||||
|
// return "coffeescript";
|
||||||
|
// case "":
|
||||||
|
// return "concurnas";
|
||||||
|
case "cpp":
|
||||||
|
return "cpp";
|
||||||
|
// case "":
|
||||||
|
// return "crystal";
|
||||||
|
case "cs":
|
||||||
|
return "csharp";
|
||||||
|
// case "":
|
||||||
|
// return "csp";
|
||||||
|
// case "":
|
||||||
|
// return "cssExtras (css-extras)";
|
||||||
|
case "css":
|
||||||
|
return "css";
|
||||||
|
// case "":
|
||||||
|
// return "cypher";
|
||||||
|
// case "":
|
||||||
|
// return "d";
|
||||||
|
// case "":
|
||||||
|
// return "dart";
|
||||||
|
// case "":
|
||||||
|
// return "dax";
|
||||||
|
// case "":
|
||||||
|
// return "dhall";
|
||||||
|
// case "":
|
||||||
|
// return "diff";
|
||||||
|
// case "":
|
||||||
|
// return "django";
|
||||||
|
// case "":
|
||||||
|
// return "dnsZoneFile (dns-zone-file)";
|
||||||
|
// case "":
|
||||||
|
// return "docker";
|
||||||
|
// case "":
|
||||||
|
// return "ebnf";
|
||||||
|
// case "":
|
||||||
|
// return "editorconfig";
|
||||||
|
// case "":
|
||||||
|
// return "eiffel";
|
||||||
|
// case "":
|
||||||
|
// return "ejs";
|
||||||
|
// case "":
|
||||||
|
// return "elixir";
|
||||||
|
// case "":
|
||||||
|
// return "elm";
|
||||||
|
// case "":
|
||||||
|
// return "erb";
|
||||||
|
// case "":
|
||||||
|
// return "erlang";
|
||||||
|
// case "":
|
||||||
|
// return "etlua";
|
||||||
|
// case "":
|
||||||
|
// return "excelFormula (excel-formula)";
|
||||||
|
// case "":
|
||||||
|
// return "factor";
|
||||||
|
// case "":
|
||||||
|
// return "firestoreSecurityRules (firestore-security-rules)";
|
||||||
|
// case "":
|
||||||
|
// return "flow";
|
||||||
|
// case "":
|
||||||
|
// return "fortran";
|
||||||
|
// case "":
|
||||||
|
// return "fsharp";
|
||||||
|
// case "":
|
||||||
|
// return "ftl";
|
||||||
|
// case "":
|
||||||
|
// return "gcode";
|
||||||
|
// case "":
|
||||||
|
// return "gdscript";
|
||||||
|
// case "":
|
||||||
|
// return "gedcom";
|
||||||
|
// case "":
|
||||||
|
// return "gherkin";
|
||||||
|
// case "":
|
||||||
|
// return "git";
|
||||||
|
// case "":
|
||||||
|
// return "glsl";
|
||||||
|
// case "":
|
||||||
|
// return "gml";
|
||||||
|
case "go":
|
||||||
|
return "go";
|
||||||
|
// case "":
|
||||||
|
// return "graphql";
|
||||||
|
// case "":
|
||||||
|
// return "groovy";
|
||||||
|
// case "":
|
||||||
|
// return "haml";
|
||||||
|
// case "":
|
||||||
|
// return "handlebars";
|
||||||
|
case "hs":
|
||||||
|
return "haskell";
|
||||||
|
// case "":
|
||||||
|
// return "haxe";
|
||||||
|
// case "":
|
||||||
|
// return "hcl";
|
||||||
|
// case "":
|
||||||
|
// return "hlsl";
|
||||||
|
// case "":
|
||||||
|
// return "hpkp";
|
||||||
|
// case "":
|
||||||
|
// return "hsts";
|
||||||
|
// case "":
|
||||||
|
// return "http";
|
||||||
|
// case "":
|
||||||
|
// return "ichigojam";
|
||||||
|
// case "":
|
||||||
|
// return "icon";
|
||||||
|
// case "":
|
||||||
|
// return "iecst";
|
||||||
|
// case "":
|
||||||
|
// return "ignore";
|
||||||
|
// case "":
|
||||||
|
// return "inform7";
|
||||||
|
case "ini":
|
||||||
|
return "ini";
|
||||||
|
// case "":
|
||||||
|
// return "io";
|
||||||
|
// case "":
|
||||||
|
// return "j";
|
||||||
|
case "java":
|
||||||
|
return "java";
|
||||||
|
// case "":
|
||||||
|
// return "javadoc";
|
||||||
|
// case "":
|
||||||
|
// return "javadoclike";
|
||||||
|
case "js":
|
||||||
|
return "javascript";
|
||||||
|
// case "":
|
||||||
|
// return "javastacktrace";
|
||||||
|
// case "":
|
||||||
|
// return "jolie";
|
||||||
|
// case "":
|
||||||
|
// return "jq";
|
||||||
|
// case "":
|
||||||
|
// return "jsExtras (js-extras)";
|
||||||
|
// case "":
|
||||||
|
// return "jsTemplates (js-templates)";
|
||||||
|
// case "":
|
||||||
|
// return "jsdoc";
|
||||||
|
case "json":
|
||||||
|
return "json";
|
||||||
|
// case "":
|
||||||
|
// return "json5";
|
||||||
|
// case "":
|
||||||
|
// return "jsonp";
|
||||||
|
// case "":
|
||||||
|
// return "jsstacktrace";
|
||||||
|
case "jsx":
|
||||||
|
return "jsx";
|
||||||
|
// case "":
|
||||||
|
// return "julia";
|
||||||
|
// case "":
|
||||||
|
// return "keyman";
|
||||||
|
// case "":
|
||||||
|
// return "kotlin";
|
||||||
|
case "tex":
|
||||||
|
return "latex";
|
||||||
|
// case "":
|
||||||
|
// return "latte";
|
||||||
|
// case "":
|
||||||
|
// return "less";
|
||||||
|
// case "":
|
||||||
|
// return "lilypond";
|
||||||
|
// case "":
|
||||||
|
// return "liquid";
|
||||||
|
// case "":
|
||||||
|
// return "lisp";
|
||||||
|
// case "":
|
||||||
|
// return "livescript";
|
||||||
|
// case "":
|
||||||
|
// return "llvm";
|
||||||
|
// case "":
|
||||||
|
// return "lolcode";
|
||||||
|
case "lua":
|
||||||
|
return "lua";
|
||||||
|
// case "":
|
||||||
|
// return "makefile";
|
||||||
|
case "md":
|
||||||
|
return "markdown";
|
||||||
|
// case "":
|
||||||
|
// return "markupTemplating (markup-templating)";
|
||||||
|
// case "":
|
||||||
|
// return "markup";
|
||||||
|
// case "":
|
||||||
|
// return "matlab";
|
||||||
|
// case "":
|
||||||
|
// return "mel";
|
||||||
|
// case "":
|
||||||
|
// return "mizar";
|
||||||
|
// case "":
|
||||||
|
// return "mongodb";
|
||||||
|
// case "":
|
||||||
|
// return "monkey";
|
||||||
|
// case "":
|
||||||
|
// return "moonscript";
|
||||||
|
// case "":
|
||||||
|
// return "n1ql";
|
||||||
|
// case "":
|
||||||
|
// return "n4js";
|
||||||
|
// case "":
|
||||||
|
// return "nand2tetrisHdl (nand2tetris-hdl)";
|
||||||
|
// case "":
|
||||||
|
// return "naniscript";
|
||||||
|
// case "":
|
||||||
|
// return "nasm";
|
||||||
|
// case "":
|
||||||
|
// return "neon";
|
||||||
|
// case "":
|
||||||
|
// return "nginx";
|
||||||
|
// case "":
|
||||||
|
// return "nim";
|
||||||
|
// case "":
|
||||||
|
// return "nix";
|
||||||
|
// case "":
|
||||||
|
// return "nsis";
|
||||||
|
// case "":
|
||||||
|
// return "objectivec";
|
||||||
|
// case "":
|
||||||
|
// return "ocaml";
|
||||||
|
// case "":
|
||||||
|
// return "opencl";
|
||||||
|
// case "":
|
||||||
|
// return "oz";
|
||||||
|
// case "":
|
||||||
|
// return "parigp";
|
||||||
|
// case "":
|
||||||
|
// return "parser";
|
||||||
|
// case "":
|
||||||
|
// return "pascal";
|
||||||
|
// case "":
|
||||||
|
// return "pascaligo";
|
||||||
|
// case "":
|
||||||
|
// return "pcaxis";
|
||||||
|
// case "":
|
||||||
|
// return "peoplecode";
|
||||||
|
// case "":
|
||||||
|
// return "perl";
|
||||||
|
// case "":
|
||||||
|
// return "phpExtras (php-extras)";
|
||||||
|
case "php":
|
||||||
|
return "php";
|
||||||
|
// case "":
|
||||||
|
// return "phpdoc";
|
||||||
|
// case "":
|
||||||
|
// return "plsql";
|
||||||
|
// case "":
|
||||||
|
// return "powerquery";
|
||||||
|
// case "":
|
||||||
|
// return "powershell";
|
||||||
|
// case "":
|
||||||
|
// return "processing";
|
||||||
|
// case "":
|
||||||
|
// return "prolog";
|
||||||
|
// case "":
|
||||||
|
// return "properties";
|
||||||
|
// case "":
|
||||||
|
// return "protobuf";
|
||||||
|
case "pug":
|
||||||
|
return "pug";
|
||||||
|
// case "":
|
||||||
|
// return "puppet";
|
||||||
|
// case "":
|
||||||
|
// return "pure";
|
||||||
|
// case "":
|
||||||
|
// return "purebasic";
|
||||||
|
// case "":
|
||||||
|
// return "purescript";
|
||||||
|
case "py":
|
||||||
|
return "python";
|
||||||
|
// case "":
|
||||||
|
// return "q";
|
||||||
|
// case "":
|
||||||
|
// return "qml";
|
||||||
|
// case "":
|
||||||
|
// return "qore";
|
||||||
|
// case "":
|
||||||
|
// return "r";
|
||||||
|
// case "":
|
||||||
|
// return "racket";
|
||||||
|
// case "":
|
||||||
|
// return "reason";
|
||||||
|
// case "":
|
||||||
|
// return "regex";
|
||||||
|
// case "":
|
||||||
|
// return "renpy";
|
||||||
|
// case "":
|
||||||
|
// return "rest";
|
||||||
|
// case "":
|
||||||
|
// return "rip";
|
||||||
|
// case "":
|
||||||
|
// return "roboconf";
|
||||||
|
// case "":
|
||||||
|
// return "robotframework";
|
||||||
|
// case "":
|
||||||
|
// return "ruby";
|
||||||
|
case "rs":
|
||||||
|
return "rust";
|
||||||
|
// case "":
|
||||||
|
// return "sas";
|
||||||
|
// case "":
|
||||||
|
// return "sass";
|
||||||
|
// case "":
|
||||||
|
// return "scala";
|
||||||
|
// case "":
|
||||||
|
// return "scheme";
|
||||||
|
case "scss":
|
||||||
|
return "scss";
|
||||||
|
// case "":
|
||||||
|
// return "shellSession (shell-session)";
|
||||||
|
// case "":
|
||||||
|
// return "smali";
|
||||||
|
// case "":
|
||||||
|
// return "smalltalk";
|
||||||
|
// case "":
|
||||||
|
// return "smarty";
|
||||||
|
// case "":
|
||||||
|
// return "sml";
|
||||||
|
// case "":
|
||||||
|
// return "solidity";
|
||||||
|
// case "":
|
||||||
|
// return "solutionFile (solution-file)";
|
||||||
|
// case "":
|
||||||
|
// return "soy";
|
||||||
|
// case "":
|
||||||
|
// return "sparql";
|
||||||
|
// case "":
|
||||||
|
// return "splunkSpl (splunk-spl)";
|
||||||
|
case "sqf":
|
||||||
|
return "sqf";
|
||||||
|
case "sql":
|
||||||
|
return "sql";
|
||||||
|
// case "":
|
||||||
|
// return "stan";
|
||||||
|
// case "":
|
||||||
|
// return "stylus";
|
||||||
|
// case "":
|
||||||
|
// return "swift";
|
||||||
|
// case "":
|
||||||
|
// return "t4Cs (t4-cs)";
|
||||||
|
// case "":
|
||||||
|
// return "t4Templating (t4-templating)";
|
||||||
|
// case "":
|
||||||
|
// return "t4Vb (t4-vb)";
|
||||||
|
// case "":
|
||||||
|
// return "tap";
|
||||||
|
// case "":
|
||||||
|
// return "tcl";
|
||||||
|
// case "":
|
||||||
|
// return "textile";
|
||||||
|
case "toml":
|
||||||
|
return "toml";
|
||||||
|
case "tsx":
|
||||||
|
return "tsx";
|
||||||
|
// case "":
|
||||||
|
// return "tt2";
|
||||||
|
// case "":
|
||||||
|
// return "turtle";
|
||||||
|
// case "":
|
||||||
|
// return "twig";
|
||||||
|
case "ts":
|
||||||
|
return "typescript";
|
||||||
|
// case "":
|
||||||
|
// return "typoscript";
|
||||||
|
// case "":
|
||||||
|
// return "unrealscript";
|
||||||
|
// case "":
|
||||||
|
// return "vala";
|
||||||
|
// case "":
|
||||||
|
// return "vbnet";
|
||||||
|
// case "":
|
||||||
|
// return "velocity";
|
||||||
|
// case "":
|
||||||
|
// return "verilog";
|
||||||
|
// case "":
|
||||||
|
// return "vhdl";
|
||||||
|
// case "":
|
||||||
|
// return "vim";
|
||||||
|
// case "":
|
||||||
|
// return "visualBasic (visual-basic)";
|
||||||
|
// case "":
|
||||||
|
// return "warpscript";
|
||||||
|
// case "":
|
||||||
|
// return "wasm";
|
||||||
|
// case "":
|
||||||
|
// return "wiki";
|
||||||
|
// case "":
|
||||||
|
// return "xeora";
|
||||||
|
// case "":
|
||||||
|
// return "xmlDoc (xml-doc)";
|
||||||
|
// case "":
|
||||||
|
// return "xojo";
|
||||||
|
// case "":
|
||||||
|
// return "xquery";
|
||||||
|
case "yaml":
|
||||||
|
case "yml":
|
||||||
|
return "yaml";
|
||||||
|
// case "":
|
||||||
|
// return "yang";
|
||||||
|
// case "":
|
||||||
|
// return "zig";
|
||||||
|
default:
|
||||||
|
return "text"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
15
src/index.tsx
Normal file
15
src/index.tsx
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import ReactDOM from 'react-dom';
|
||||||
|
import App from './App';
|
||||||
|
import "./style.css"
|
||||||
|
|
||||||
|
const shareID = new URL(window.location.href).pathname.substr(1);
|
||||||
|
|
||||||
|
ReactDOM.render(
|
||||||
|
<React.StrictMode>
|
||||||
|
<App
|
||||||
|
shareID={shareID}
|
||||||
|
/>
|
||||||
|
</React.StrictMode>,
|
||||||
|
document.getElementById('root')
|
||||||
|
);
|
1
src/react-app-env.d.ts
vendored
Normal file
1
src/react-app-env.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/// <reference types="react-scripts" />
|
57
src/style.css
Normal file
57
src/style.css
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
.fileContainer{
|
||||||
|
margin-top: 4rem;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-left: auto;
|
||||||
|
|
||||||
|
border-width: 2px;
|
||||||
|
border-color: #1f6feb;
|
||||||
|
border-style: solid;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
max-width: 60rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headerContainer{
|
||||||
|
font-size: larger;
|
||||||
|
font-family: sans-serif;
|
||||||
|
color: #58a6ff;
|
||||||
|
|
||||||
|
padding-left: 2rem;
|
||||||
|
padding-right: 2rem;
|
||||||
|
padding-bottom: 2rem;
|
||||||
|
padding-top: 1rem;
|
||||||
|
|
||||||
|
border-bottom: solid 1px #1f6feb;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.fileTitle{
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonContainer{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.titleButton{
|
||||||
|
border: none;
|
||||||
|
border-radius: 2px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: small;
|
||||||
|
margin-left: 1em;
|
||||||
|
background-color: #1f6feb;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Not the best soution but it works */
|
||||||
|
/* https://github.com/react-syntax-highlighter/react-syntax-highlighter/issues/347 */
|
||||||
|
.linenumber {
|
||||||
|
color: #50545b !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #0d1117;
|
||||||
|
}
|
||||||
|
|
26
tsconfig.json
Normal file
26
tsconfig.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"esnext"
|
||||||
|
],
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"strict": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"jsx": "react-jsx"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src"
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user