├── backup ├── react-hooks │ ├── src │ │ ├── index.css │ │ ├── utils.js │ │ ├── hooks │ │ │ ├── useOnEnter.js │ │ │ ├── useInput.js │ │ │ ├── useApi.js │ │ │ └── useDoubleClick.js │ │ ├── App │ │ │ ├── App.test.js │ │ │ └── App.js │ │ ├── components │ │ │ └── Footer.js │ │ ├── index.js │ │ ├── reducers │ │ │ ├── useTodos.test.js │ │ │ └── useTodos.js │ │ └── containers │ │ │ └── TodoItem.js │ ├── build-old │ │ ├── static │ │ │ ├── css │ │ │ │ ├── main.be9cd952.chunk.css │ │ │ │ └── main.be9cd952.chunk.css.map │ │ │ └── js │ │ │ │ └── runtime~main.1dc9c6f5.js │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ ├── precache-manifest.d8879c74fc1a4a422c8d09e25f321cf3.js │ │ ├── asset-manifest.json │ │ └── service-worker.js │ ├── public │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md ├── src-lesson1 │ ├── app │ │ └── tudumvc │ │ │ ├── static │ │ │ ├── css │ │ │ │ ├── main.be9cd952.chunk.css │ │ │ │ └── main.be9cd952.chunk.css.map │ │ │ └── js │ │ │ │ └── runtime~main.1dc9c6f5.js │ │ │ ├── logo-icon.png │ │ │ ├── manifest.json │ │ │ ├── precache-manifest.d8879c74fc1a4a422c8d09e25f321cf3.js │ │ │ ├── asset-manifest.json │ │ │ └── service-worker.js │ ├── sur │ │ └── tudumvc.hoon │ └── mar │ │ └── tudumvc │ │ └── action.hoon ├── home-react-full │ ├── app │ │ └── todoreact │ │ │ ├── static │ │ │ ├── css │ │ │ │ ├── main.be9cd952.chunk.css │ │ │ │ └── main.be9cd952.chunk.css.map │ │ │ └── js │ │ │ │ └── runtime~main.1dc9c6f5.js │ │ │ ├── logo-icon.png │ │ │ ├── manifest.json │ │ │ ├── precache-manifest.d8879c74fc1a4a422c8d09e25f321cf3.js │ │ │ ├── asset-manifest.json │ │ │ └── service-worker.js │ ├── sur │ │ └── todoreact.hoon │ └── mar │ │ └── todoreact │ │ └── action.hoon ├── home-full-duplex │ ├── app │ │ └── todomvc │ │ │ └── basic │ │ │ ├── package.json │ │ │ ├── js │ │ │ ├── app.js │ │ │ └── helpers.js │ │ │ ├── index.html │ │ │ └── node_modules │ │ │ └── todomvc-common │ │ │ └── base.css │ ├── mar │ │ └── todomvc │ │ │ └── action.hoon │ └── sur │ │ └── todomvc.hoon ├── src-lesson3 │ ├── mar │ │ └── firststep │ │ │ └── action.hoon │ ├── sur │ │ └── firststep.hoon │ └── app │ │ └── firststep.hoon ├── lesson1-2-the-L-ship.md ├── lesson1-4-hosting-options.md ├── lesson4-1-ordering-our-tasks.md └── lesson1-3-towers-of-hanoi.md ├── src-lesson2 └── react-hooks │ ├── src │ ├── index.css │ ├── utils.js │ ├── hooks │ │ ├── useOnEnter.js │ │ ├── useInput.js │ │ └── useDoubleClick.js │ ├── App │ │ ├── App.test.js │ │ └── App.js │ ├── components │ │ └── Footer.js │ ├── index.js │ ├── reducers │ │ ├── useTodos.test.js │ │ └── useTodos.js │ └── containers │ │ └── TodoItem.js │ ├── public │ ├── favicon.ico │ ├── logo-icon.png │ ├── manifest.json │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md ├── src-lesson3 ├── react-hooks │ ├── src │ │ ├── index.css │ │ ├── utils.js │ │ ├── hooks │ │ │ ├── useOnEnter.js │ │ │ ├── useInput.js │ │ │ ├── useDoubleClick.js │ │ │ └── useApi.js │ │ ├── App │ │ │ ├── App.test.js │ │ │ └── App.js │ │ ├── components │ │ │ └── Footer.js │ │ ├── reducers │ │ │ ├── useTodos.test.js │ │ │ └── useTodos.js │ │ ├── index.js │ │ └── containers │ │ │ └── TodoItem.js │ ├── public │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md ├── sur │ └── tudumvc.hoon ├── app │ ├── tudumvc │ │ └── index.html │ └── tudumvc.hoon └── mar │ └── tudumvc │ └── action.hoon ├── src-lesson4 ├── react-hooks │ ├── src │ │ ├── index.css │ │ ├── utils.js │ │ ├── hooks │ │ │ ├── useOnEnter.js │ │ │ ├── useInput.js │ │ │ ├── useDoubleClick.js │ │ │ └── useApi.js │ │ ├── App │ │ │ ├── App.test.js │ │ │ └── App.js │ │ ├── components │ │ │ └── Footer.js │ │ ├── reducers │ │ │ ├── useTodos.test.js │ │ │ └── useTodos.js │ │ ├── index.js │ │ └── containers │ │ │ └── TodoItem.js │ ├── public │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md ├── app │ └── tudumvc │ │ └── index.html ├── mar │ └── tudumvc │ │ └── action.hoon └── sur │ └── tudumvc.hoon ├── src-lesson5 ├── todomvc-end │ ├── src │ │ ├── index.css │ │ ├── utils.js │ │ ├── hooks │ │ │ ├── useOnEnter.js │ │ │ ├── useInput.js │ │ │ ├── useDoubleClick.js │ │ │ └── useApi.js │ │ ├── App │ │ │ ├── App.test.js │ │ │ └── App.js │ │ ├── components │ │ │ └── Footer.js │ │ ├── reducers │ │ │ ├── useTodos.test.js │ │ │ └── useTodos.js │ │ ├── index.js │ │ └── containers │ │ │ └── TodoItem.js │ ├── public │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md ├── todomvc-start │ ├── src │ │ ├── index.css │ │ ├── utils.js │ │ ├── hooks │ │ │ ├── useOnEnter.js │ │ │ ├── useInput.js │ │ │ ├── useDoubleClick.js │ │ │ └── useApi.js │ │ ├── App │ │ │ ├── App.test.js │ │ │ └── App.js │ │ ├── components │ │ │ └── Footer.js │ │ ├── reducers │ │ │ ├── useTodos.test.js │ │ │ └── useTodos.js │ │ ├── index.js │ │ └── containers │ │ │ └── TodoItem.js │ ├── public │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md └── home │ ├── app │ └── tudumvc │ │ ├── static │ │ ├── css │ │ │ ├── main.be9cd952.chunk.css │ │ │ └── main.be9cd952.chunk.css.map │ │ └── js │ │ │ └── runtime~main.1dc9c6f5.js │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ ├── precache-manifest.4511bc68d4d49a41e2aec575c1df0d90.js │ │ ├── asset-manifest.json │ │ └── service-worker.js │ ├── sur │ └── tudumvc.hoon │ └── mar │ └── tudumvc │ └── action.hoon ├── src-lesson6 ├── todomvc-end │ ├── src │ │ ├── index.css │ │ ├── utils.js │ │ ├── hooks │ │ │ ├── useOnEnter.js │ │ │ ├── useInput.js │ │ │ ├── useDoubleClick.js │ │ │ └── useApi.js │ │ ├── App │ │ │ ├── App.test.js │ │ │ └── App.js │ │ ├── components │ │ │ └── Footer.js │ │ ├── reducers │ │ │ ├── useTodos.test.js │ │ │ └── useTodos.js │ │ └── index.js │ ├── public │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md ├── todomvc-start │ ├── src │ │ ├── index.css │ │ ├── utils.js │ │ ├── hooks │ │ │ ├── useOnEnter.js │ │ │ ├── useInput.js │ │ │ ├── useDoubleClick.js │ │ │ └── useApi.js │ │ ├── App │ │ │ ├── App.test.js │ │ │ └── App.js │ │ ├── components │ │ │ └── Footer.js │ │ ├── reducers │ │ │ ├── useTodos.test.js │ │ │ └── useTodos.js │ │ ├── index.js │ │ └── containers │ │ │ └── TodoItem.js │ ├── public │ │ ├── favicon.ico │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ └── index.html │ ├── .gitignore │ ├── package.json │ └── README.md ├── home (part I) │ ├── app │ │ └── tudumvc │ │ │ ├── static │ │ │ ├── css │ │ │ │ ├── main.be9cd952.chunk.css │ │ │ │ └── main.be9cd952.chunk.css.map │ │ │ └── js │ │ │ │ └── runtime~main.1dc9c6f5.js │ │ │ ├── logo-icon.png │ │ │ ├── manifest.json │ │ │ ├── precache-manifest.42dbaf7863a6a9ee2c792afd0ef0d07b.js │ │ │ ├── asset-manifest.json │ │ │ └── service-worker.js │ ├── mar │ │ └── tudumvc │ │ │ ├── update.hoon │ │ │ └── action.hoon │ └── sur │ │ └── tudumvc.hoon └── home (part II) │ ├── app │ └── tudumvc │ │ ├── static │ │ ├── css │ │ │ ├── main.be9cd952.chunk.css │ │ │ └── main.be9cd952.chunk.css.map │ │ └── js │ │ │ └── runtime~main.1dc9c6f5.js │ │ ├── logo-icon.png │ │ ├── manifest.json │ │ ├── precache-manifest.42dbaf7863a6a9ee2c792afd0ef0d07b.js │ │ ├── asset-manifest.json │ │ └── service-worker.js │ ├── mar │ └── tudumvc │ │ ├── update.hoon │ │ ├── action.hoon │ │ └── frontend.hoon │ └── sur │ └── tudumvc.hoon ├── supplemental ├── devops.png ├── final-product.png ├── readmytang.hoon └── dev.sh └── .gitmodules /backup/react-hooks/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-lesson2/react-hooks/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /supplemental/devops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/supplemental/devops.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "todomvc"] 2 | path = todomvc 3 | url = https://github.com/tastejs/todomvc.git 4 | -------------------------------------------------------------------------------- /supplemental/final-product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/supplemental/final-product.png -------------------------------------------------------------------------------- /backup/react-hooks/build-old/static/css/main.be9cd952.chunk.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=main.be9cd952.chunk.css.map */ -------------------------------------------------------------------------------- /backup/src-lesson1/app/tudumvc/static/css/main.be9cd952.chunk.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=main.be9cd952.chunk.css.map */ -------------------------------------------------------------------------------- /src-lesson5/home/app/tudumvc/static/css/main.be9cd952.chunk.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=main.be9cd952.chunk.css.map */ -------------------------------------------------------------------------------- /backup/home-react-full/app/todoreact/static/css/main.be9cd952.chunk.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=main.be9cd952.chunk.css.map */ -------------------------------------------------------------------------------- /src-lesson6/home (part I)/app/tudumvc/static/css/main.be9cd952.chunk.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=main.be9cd952.chunk.css.map */ -------------------------------------------------------------------------------- /backup/react-hooks/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/backup/react-hooks/public/favicon.ico -------------------------------------------------------------------------------- /src-lesson6/home (part II)/app/tudumvc/static/css/main.be9cd952.chunk.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=main.be9cd952.chunk.css.map */ -------------------------------------------------------------------------------- /backup/react-hooks/build-old/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/backup/react-hooks/build-old/favicon.ico -------------------------------------------------------------------------------- /backup/react-hooks/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/backup/react-hooks/public/logo-icon.png -------------------------------------------------------------------------------- /supplemental/readmytang.hoon: -------------------------------------------------------------------------------- 1 | :: readmytang 2 | :: and weep? 3 | :: 4 | |= pax=path 5 | =/ wain-file .^(wain %cx pax) 6 | `tang`wain-file -------------------------------------------------------------------------------- /backup/react-hooks/build-old/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/backup/react-hooks/build-old/logo-icon.png -------------------------------------------------------------------------------- /src-lesson2/react-hooks/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson2/react-hooks/public/favicon.ico -------------------------------------------------------------------------------- /src-lesson3/react-hooks/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson3/react-hooks/public/favicon.ico -------------------------------------------------------------------------------- /src-lesson4/react-hooks/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson4/react-hooks/public/favicon.ico -------------------------------------------------------------------------------- /src-lesson5/home/app/tudumvc/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson5/home/app/tudumvc/logo-icon.png -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson5/todomvc-end/public/favicon.ico -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson6/todomvc-end/public/favicon.ico -------------------------------------------------------------------------------- /backup/src-lesson1/app/tudumvc/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/backup/src-lesson1/app/tudumvc/logo-icon.png -------------------------------------------------------------------------------- /src-lesson2/react-hooks/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson2/react-hooks/public/logo-icon.png -------------------------------------------------------------------------------- /src-lesson3/react-hooks/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson3/react-hooks/public/logo-icon.png -------------------------------------------------------------------------------- /src-lesson4/react-hooks/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson4/react-hooks/public/logo-icon.png -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson5/todomvc-end/public/logo-icon.png -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson5/todomvc-start/public/favicon.ico -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson6/todomvc-end/public/logo-icon.png -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson6/todomvc-start/public/favicon.ico -------------------------------------------------------------------------------- /backup/react-hooks/build-old/static/css/main.be9cd952.chunk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"main.be9cd952.chunk.css"} -------------------------------------------------------------------------------- /backup/src-lesson1/app/tudumvc/static/css/main.be9cd952.chunk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"main.be9cd952.chunk.css"} -------------------------------------------------------------------------------- /src-lesson3/sur/tudumvc.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc sur file 3 | :: 4 | |% 5 | 6 | +$ action 7 | $% 8 | [%add-task task=@tU] 9 | == 10 | -- -------------------------------------------------------------------------------- /src-lesson5/home/app/tudumvc/static/css/main.be9cd952.chunk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"main.be9cd952.chunk.css"} -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson5/todomvc-start/public/logo-icon.png -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/public/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson6/todomvc-start/public/logo-icon.png -------------------------------------------------------------------------------- /backup/home-react-full/app/todoreact/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/backup/home-react-full/app/todoreact/logo-icon.png -------------------------------------------------------------------------------- /backup/home-react-full/app/todoreact/static/css/main.be9cd952.chunk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"main.be9cd952.chunk.css"} -------------------------------------------------------------------------------- /src-lesson6/home (part I)/app/tudumvc/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson6/home (part I)/app/tudumvc/logo-icon.png -------------------------------------------------------------------------------- /src-lesson6/home (part I)/app/tudumvc/static/css/main.be9cd952.chunk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"main.be9cd952.chunk.css"} -------------------------------------------------------------------------------- /src-lesson6/home (part II)/app/tudumvc/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rabsef-bicrym/tudumvc/HEAD/src-lesson6/home (part II)/app/tudumvc/logo-icon.png -------------------------------------------------------------------------------- /src-lesson6/home (part II)/app/tudumvc/static/css/main.be9cd952.chunk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"main.be9cd952.chunk.css"} -------------------------------------------------------------------------------- /src-lesson3/app/tudumvc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Holding for tudumvc 6 | 7 | 8 |

tudumvc Goes Here.

9 | 10 | -------------------------------------------------------------------------------- /src-lesson4/app/tudumvc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Holding for tudumvc 6 | 7 | 8 |

tudumvc Goes Here.

9 | 10 | -------------------------------------------------------------------------------- /backup/react-hooks/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /backup/home-full-duplex/app/todomvc/basic/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "todomvc-common": "^1.0.1", 5 | "todomvc-app-css": "^2.0.1" 6 | }, 7 | "devDependencies": { 8 | "jasmine-core": "^2.0.0" 9 | } 10 | } -------------------------------------------------------------------------------- /src-lesson2/react-hooks/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/src/utils.js: -------------------------------------------------------------------------------- 1 | export function guid() { 2 | var s4 = () => { 3 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); 4 | }; 5 | 6 | return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`; 7 | } 8 | -------------------------------------------------------------------------------- /src-lesson6/home (part I)/mar/tudumvc/update.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc-update mar file 3 | :: 4 | /- tudumvc 5 | =, dejs:format 6 | |_ upd=updates:tudumvc 7 | ++ grad %noun 8 | ++ grow 9 | |% 10 | ++ noun upd 11 | -- 12 | ++ grab 13 | |% 14 | ++ noun updates:tudumvc 15 | -- 16 | -- -------------------------------------------------------------------------------- /src-lesson6/home (part II)/mar/tudumvc/update.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc-update mar file 3 | :: 4 | /- tudumvc 5 | =, dejs:format 6 | |_ upd=updates:tudumvc 7 | ++ grad %noun 8 | ++ grow 9 | |% 10 | ++ noun upd 11 | -- 12 | ++ grab 13 | |% 14 | ++ noun updates:tudumvc 15 | -- 16 | -- -------------------------------------------------------------------------------- /backup/react-hooks/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /src-lesson2/react-hooks/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/src/hooks/useOnEnter.js: -------------------------------------------------------------------------------- 1 | import { useCallback } from "react"; 2 | 3 | export default function useOnEnter(callback, inputs) { 4 | return useCallback(event => { 5 | if (event.key === "Enter") { 6 | event.preventDefault(); 7 | callback(event); 8 | } 9 | }, inputs); 10 | } 11 | -------------------------------------------------------------------------------- /backup/src-lesson3/mar/firststep/action.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: firstsep mar file 3 | :: 4 | /- firststep 5 | =, dejs:format 6 | |_ act=action:firststep 7 | ++ grab 8 | |% 9 | ++ noun action:firststep 10 | ++ json 11 | |= jon=^json 12 | ;; action:firststep 13 | ~& > (so jon) 14 | [%test-action (so jon)] 15 | -- 16 | -- -------------------------------------------------------------------------------- /backup/react-hooks/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /backup/react-hooks/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /backup/src-lesson3/sur/firststep.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: firststep sur file 3 | :: 4 | |% 5 | :: Available poke actions follow 6 | :: 7 | +$ action 8 | $% 9 | :: This is just a test action to show the functionality. 10 | :: It lets us change the message stored in our app's state, by providing a new message (msg). 11 | :: 12 | [%test-action msg=cord] 13 | == 14 | -- -------------------------------------------------------------------------------- /src-lesson2/react-hooks/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/src/hooks/useInput.js: -------------------------------------------------------------------------------- 1 | import { useCallback, useState } from "react"; 2 | 3 | export default function useInput(defaultValue) { 4 | const [value, setValue] = useState(defaultValue || ""); 5 | 6 | const onChange = useCallback(event => { 7 | setValue(event.target.value); 8 | }); 9 | 10 | return [value, onChange, setValue]; 11 | } 12 | -------------------------------------------------------------------------------- /src-lesson2/react-hooks/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/src/App/App.test.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import App from "./App"; 4 | 5 | describe("App", () => { 6 | it("renders without crashing", () => { 7 | const div = document.createElement("div"); 8 | ReactDOM.render(, div); 9 | ReactDOM.unmountComponentAtNode(div); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /supplemental/dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ -z "$1" ] 3 | then 4 | echo "usage: dev.sh URBIT_PIER_HOME_DIRECTORY" 5 | exit; 6 | fi 7 | 8 | while [ 0 ] 9 | do 10 | sleep 0.1 11 | rsync -ru --exclude '.*' app $1 12 | rsync -ru --exclude '.*' sur $1 13 | rsync -ru --exclude '.*' mar $1 14 | rsync -ru --exclude '.*' gen $1 15 | rsync -ru --exclude '.*' lib $1 16 | done 17 | -------------------------------------------------------------------------------- /backup/src-lesson1/sur/tudumvc.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: testing react-hooks tudumvc 3 | :: 4 | |% 5 | 6 | +$ action 7 | $% 8 | [%add-task task=@tU] 9 | [%remove-task id=@ud] 10 | [%mark-complete id=@ud] 11 | [%edit-task id=@ud label=@tU] 12 | [%update-tasks =(list [done=? id=@ud label=@tU])] 13 | [%send-tasks =path] 14 | == 15 | +$ tasks (map id=@ud [label=@tU done=?]) 16 | -- -------------------------------------------------------------------------------- /backup/home-react-full/sur/todoreact.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: testing react-hooks todomvc 3 | :: 4 | |% 5 | 6 | +$ action 7 | $% 8 | [%add-task task=@tU] 9 | [%remove-task id=@ud] 10 | [%mark-complete id=@ud] 11 | [%edit-task id=@ud label=@tU] 12 | [%update-tasks =(list [done=? id=@ud label=@tU])] 13 | [%send-tasks =path] 14 | == 15 | +$ tasks (map id=@ud [label=@tU done=?]) 16 | -- -------------------------------------------------------------------------------- /src-lesson4/mar/tudumvc/action.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc mar file 3 | :: 4 | /- tudumvc 5 | =, dejs:format 6 | |_ act=action:tudumvc 7 | ++ grab 8 | |% 9 | ++ noun action:tudumvc 10 | ++ json 11 | |= jon=^json 12 | ~& "Your JSON object looks like {}" 13 | %- action:tudumvc 14 | =< 15 | action 16 | |% 17 | ++ action 18 | [%add-task 'We did it, reddit!'] 19 | -- 20 | -- 21 | -- -------------------------------------------------------------------------------- /src-lesson3/mar/tudumvc/action.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc mar file 3 | :: 4 | /- tudumvc 5 | =, dejs:format 6 | |_ act=action:tudumvc 7 | ++ grab 8 | |% 9 | ++ noun action:tudumvc 10 | ++ json 11 | |= jon=^json 12 | ~& "Your JSON object looks like {}" 13 | %- action:tudumvc 14 | =< 15 | action 16 | |% 17 | ++ action 18 | [%add-task 'We did it, reddit!'] 19 | -- 20 | -- 21 | ++ grad %noun 22 | -- -------------------------------------------------------------------------------- /backup/react-hooks/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson2/react-hooks/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson2/react-hooks/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /backup/react-hooks/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /backup/react-hooks/build-old/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /backup/src-lesson1/app/tudumvc/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson2/react-hooks/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson3/react-hooks/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson4/react-hooks/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson5/home/app/tudumvc/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-end/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-end/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson5/todomvc-start/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson6/todomvc-start/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /backup/home-react-full/app/todoreact/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /backup/react-hooks/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export default function Footer() { 4 | return ( 5 |
6 |

Double-click to edit a todo

7 |

8 | Created by jacob-ebey 9 |

10 |

11 | Part of TodoMVC 12 |

13 |

14 | Modified for urbit by ~rabsef-bicrym 15 |

16 |
17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src-lesson6/home (part I)/app/tudumvc/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson6/home (part II)/app/tudumvc/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "todos", 3 | "name": "Todos", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo-icon.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./#/active", 17 | "display": "standalone", 18 | "theme_color": "#AF2F2F", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src-lesson4/sur/tudumvc.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc sur file 3 | :: 4 | |% 5 | :: We've added %remove-task, %mark-complete, %edit-task as new actions 6 | :: 7 | +$ action 8 | $% 9 | [%add-task task=@tU] 10 | [%remove-task id=@ud] 11 | [%mark-complete id=@ud] 12 | [%edit-task id=@ud label=@tU] 13 | == 14 | 15 | :: Creates a structure called tasks that is a (map id=@ud [label=@tU done=?]) 16 | :: In other words a map of unique IDs to a cell of `cord` labels and boolean done-ness 17 | :: 18 | +$ tasks (map id=@ud [label=@tU done=?]) 19 | -- -------------------------------------------------------------------------------- /src-lesson5/home/sur/tudumvc.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc sur file 3 | :: 4 | |% 5 | :: We've added %remove-task, %mark-complete, %edit-task as new actions 6 | :: 7 | +$ action 8 | $% 9 | [%add-task task=@tU] 10 | [%remove-task id=@ud] 11 | [%mark-complete id=@ud] 12 | [%edit-task id=@ud label=@tU] 13 | == 14 | 15 | :: Creates a structure called tasks that is a (map id=@ud [label=@tU done=?]) 16 | :: In other words a map of unique IDs to a cell of `cord` labels and boolean done-ness 17 | :: 18 | +$ tasks (map id=@ud [label=@tU done=?]) 19 | -- -------------------------------------------------------------------------------- /src-lesson5/home/mar/tudumvc/action.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: tudumvc mar file 3 | :: 4 | /- tudumvc 5 | =, dejs:format 6 | |_ act=action:tudumvc 7 | ++ grab 8 | |% 9 | ++ noun action:tudumvc 10 | ++ json 11 | |= jon=^json 12 | %- action:tudumvc 13 | =< 14 | (action jon) 15 | |% 16 | ++ action 17 | %- of 18 | :~ [%add-task so] 19 | [%remove-task ni] 20 | [%mark-complete ni] 21 | [%edit-task (ot :~(['id' ni] ['label' so]))] 22 | == 23 | -- 24 | -- 25 | ++ grad %noun 26 | -- -------------------------------------------------------------------------------- /backup/home-full-duplex/mar/todomvc/action.hoon: -------------------------------------------------------------------------------- 1 | :: 2 | :: todoMVC mar file 3 | :: 4 | /- todomvc 5 | =, dejs:format 6 | |_ act=action:todomvc 7 | ++ grab 8 | |% 9 | ++ noun action:todomvc 10 | ++ json 11 | |= jon=^json 12 | %- action:todomvc 13 | =< 14 | (action jon) 15 | |% 16 | ++ action 17 | %- of 18 | :~ [%update-tasks task-update] 19 | == 20 | ++ task-update 21 | %- ar 22 | %- ot 23 | :~ [%title so] 24 | [%completed bo] 25 | [%id ni] 26 | == 27 | -- 28 | -- 29 | -- -------------------------------------------------------------------------------- /src-lesson2/react-hooks/src/App/App.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { HashRouter, Route } from "react-router-dom"; 3 | import "todomvc-app-css/index.css"; 4 | 5 | import Footer from "../components/Footer"; 6 | import TodoList from "../containers/TodoList"; 7 | 8 | export default function App() { 9 | return ( 10 | 11 | 12 |
13 | 14 |
15 |