mirror of
https://github.com/He4eT/huge-link.git
synced 2026-05-04 16:37:23 +00:00
Initial commit
This commit is contained in:
commit
11523c975b
13 changed files with 15621 additions and 0 deletions
9
.babelrc
Normal file
9
.babelrc
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"env": {
|
||||
"test": {
|
||||
"presets": [
|
||||
["preact-cli/babel", { "modules": "commonjs" }]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
node_modules
|
||||
size-plugin.json
|
||||
/build
|
||||
/*.log
|
||||
22
README.md
Normal file
22
README.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# huge-link
|
||||
|
||||
## CLI Commands
|
||||
|
||||
``` bash
|
||||
# install dependencies
|
||||
npm install
|
||||
|
||||
# serve with hot reload at localhost:8080
|
||||
npm run dev
|
||||
|
||||
# build for production with minification
|
||||
npm run build
|
||||
|
||||
# test the production build locally
|
||||
npm run serve
|
||||
|
||||
# run tests with jest and enzyme
|
||||
npm run test
|
||||
```
|
||||
|
||||
For detailed explanation on how things work, checkout the [CLI Readme](https://github.com/developit/preact-cli/blob/master/README.md).
|
||||
15419
package-lock.json
generated
Normal file
15419
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
41
package.json
Normal file
41
package.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "huge-link",
|
||||
"version": "0.0.0",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"build": "preact build",
|
||||
"serve": "sirv build --port 8080 --cors --single",
|
||||
"dev": "preact watch",
|
||||
"lint": "eslint src",
|
||||
"test": "jest"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "preact",
|
||||
"ignorePatterns": [
|
||||
"build/"
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"enzyme": "^3.10.0",
|
||||
"enzyme-adapter-preact-pure": "^2.0.0",
|
||||
"eslint": "^6.0.1",
|
||||
"eslint-config-preact": "^1.1.0",
|
||||
"jest": "^24.9.0",
|
||||
"jest-preset-preact": "^1.0.0",
|
||||
"preact-cli": "^3.0.0",
|
||||
"sirv-cli": "1.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"preact": "^10.3.2",
|
||||
"preact-render-to-string": "^5.1.4",
|
||||
"preact-router": "^3.2.1"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "jest-preset-preact",
|
||||
"setupFiles": [
|
||||
"<rootDir>/tests/__mocks__/browserMocks.js",
|
||||
"<rootDir>/tests/__mocks__/setupTests.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
30
src/app.js
Normal file
30
src/app.js
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
import {h} from 'preact'
|
||||
import {useState} from 'preact/hooks'
|
||||
import {Router} from 'preact-router'
|
||||
|
||||
import Editor from './routes/editor'
|
||||
import Post from './routes/post'
|
||||
|
||||
const App = () => {
|
||||
const [markdown, setMarkdown] = useState('')
|
||||
|
||||
return (<main>
|
||||
<Router>
|
||||
<Editor
|
||||
path='/'
|
||||
markdown={ markdown }
|
||||
{ ...{setMarkdown} } />
|
||||
<Post
|
||||
path='/preview/'
|
||||
mode='preview'
|
||||
payload={ markdown }
|
||||
{ ...{setMarkdown} } />
|
||||
<Post
|
||||
path='/p/:payload'
|
||||
mode='post'
|
||||
{ ...{setMarkdown} } />
|
||||
</Router>
|
||||
</main>)
|
||||
}
|
||||
|
||||
export default App
|
||||
4
src/index.js
Normal file
4
src/index.js
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
import './style'
|
||||
import App from './app'
|
||||
|
||||
export default App
|
||||
21
src/manifest.json
Normal file
21
src/manifest.json
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"name": "huge-link",
|
||||
"short_name": "huge-link",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait",
|
||||
"background_color": "#fff",
|
||||
"theme_color": "#673ab8",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/icons/android-chrome-192x192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android-chrome-512x512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/routes/editor/index.js
Normal file
16
src/routes/editor/index.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import {h} from 'preact'
|
||||
import {Link} from 'preact-router/match'
|
||||
|
||||
const Editor = ({markdown, setMarkdown}) => (
|
||||
<section>
|
||||
<textarea
|
||||
onInput={ ({target}) => setMarkdown(target.value) }>
|
||||
{ markdown }
|
||||
</textarea>
|
||||
|
||||
<Link href='/preview'>
|
||||
Preview
|
||||
</Link>
|
||||
</section>)
|
||||
|
||||
export default Editor
|
||||
33
src/routes/post/index.js
Normal file
33
src/routes/post/index.js
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import {h} from 'preact'
|
||||
import {Link} from 'preact-router/match'
|
||||
|
||||
const emptyControls = null
|
||||
const previewContorls = 'controls placeholder'
|
||||
|
||||
const noop = _ => _
|
||||
const decode = noop
|
||||
|
||||
const Post = ({mode, payload, setMarkdown}) => {
|
||||
const [controls, decodeFn] = {
|
||||
preview: [previewContorls, noop],
|
||||
post: [emptyControls, decode]
|
||||
}[mode]
|
||||
|
||||
const markdown = decodeFn(payload)
|
||||
|
||||
setMarkdown(markdown)
|
||||
|
||||
return (<section>
|
||||
{ controls }
|
||||
|
||||
<article>
|
||||
{ markdown }
|
||||
</article>
|
||||
|
||||
<Link href='/'>
|
||||
Edit post
|
||||
</Link>
|
||||
</section>)
|
||||
}
|
||||
|
||||
export default Post
|
||||
3
src/style/index.css
Normal file
3
src/style/index.css
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
html, body {
|
||||
|
||||
}
|
||||
4
src/sw.js
Normal file
4
src/sw.js
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
import { getFiles, setupPrecaching, setupRouting } from 'preact-cli/sw/'
|
||||
|
||||
setupRouting()
|
||||
setupPrecaching(getFiles())
|
||||
15
src/template.html
Normal file
15
src/template.html
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title><% preact.title %></title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link rel="apple-touch-icon" href="/assets/icons/apple-touch-icon.png">
|
||||
<% preact.headEnd %>
|
||||
</head>
|
||||
<body>
|
||||
<% preact.bodyEnd %>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue