├── LICENSE
├── README.md
├── app.js
├── client.js
├── deps.js
├── favicon.ico
└── server.ts
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Thiago 'Jedi' Abreu
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # preact-htm-deno
2 |
3 | Just a experiment on how one can use preact with deno.
4 |
5 | ## How to run
6 |
7 | ```
8 | deno run --allow-net --allow-read ./server.ts
9 | ```
10 |
11 | Then open your browser in `localhost:8000`
12 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | import { htm, h, useState } from "./deps.js";
2 |
3 | const html = htm.bind(h);
4 |
5 | export const App = ({ page }) => {
6 | /** @type {[string[], Function]} */
7 | const [todos, setTodos] = useState([]);
8 |
9 | const addTodo = () => {
10 | setTodos((todos) => todos.concat(`Item ${todos.length}`));
11 | };
12 |
13 | return html`
14 |