├── .gitignore ├── LICENSE.txt ├── README.md ├── SECURITY.md ├── css ├── css_style_guide.md ├── css_tricks.txt └── readme.md ├── general ├── html-streaming │ ├── controller.html │ ├── controller.js │ ├── diagrams │ │ ├── with.svg │ │ └── without.svg │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── readme.md │ ├── second-demo.js │ ├── sendFile.js │ └── slide-show │ │ ├── css.css │ │ ├── headLoaded.js │ │ ├── slide-controller.html │ │ ├── slide-controller.js │ │ └── slide-show.js ├── manifest.webmanifest ├── npm │ ├── dependency_management.md │ ├── presentation │ │ ├── LICENSE │ │ ├── css │ │ │ ├── print │ │ │ │ ├── paper.css │ │ │ │ └── pdf.css │ │ │ ├── reveal.css │ │ │ ├── reveal.min.css │ │ │ └── theme │ │ │ │ ├── README.md │ │ │ │ ├── beige.css │ │ │ │ ├── blood.css │ │ │ │ ├── default.css │ │ │ │ ├── moon.css │ │ │ │ ├── night.css │ │ │ │ ├── serif.css │ │ │ │ ├── simple.css │ │ │ │ ├── sky.css │ │ │ │ ├── solarized.css │ │ │ │ ├── source │ │ │ │ ├── beige.scss │ │ │ │ ├── blood.scss │ │ │ │ ├── default.scss │ │ │ │ ├── moon.scss │ │ │ │ ├── night.scss │ │ │ │ ├── serif.scss │ │ │ │ ├── simple.scss │ │ │ │ ├── sky.scss │ │ │ │ └── solarized.scss │ │ │ │ └── template │ │ │ │ ├── mixins.scss │ │ │ │ ├── settings.scss │ │ │ │ └── theme.scss │ │ ├── dm.html │ │ ├── js │ │ │ ├── reveal.js │ │ │ └── reveal.min.js │ │ ├── lib │ │ │ ├── css │ │ │ │ └── zenburn.css │ │ │ ├── font │ │ │ │ ├── league_gothic-webfont.eot │ │ │ │ ├── league_gothic-webfont.svg │ │ │ │ ├── league_gothic-webfont.ttf │ │ │ │ ├── league_gothic-webfont.woff │ │ │ │ └── league_gothic_license │ │ │ └── js │ │ │ │ ├── classList.js │ │ │ │ ├── head.min.js │ │ │ │ └── html5shiv.js │ │ └── plugin │ │ │ ├── highlight │ │ │ └── highlight.js │ │ │ ├── leap │ │ │ └── leap.js │ │ │ ├── markdown │ │ │ ├── example.html │ │ │ ├── example.md │ │ │ ├── markdown.js │ │ │ └── marked.js │ │ │ ├── math │ │ │ └── math.js │ │ │ ├── multiplex │ │ │ ├── client.js │ │ │ ├── index.js │ │ │ └── master.js │ │ │ ├── notes-server │ │ │ ├── client.js │ │ │ ├── index.js │ │ │ └── notes.html │ │ │ ├── notes │ │ │ ├── notes.html │ │ │ └── notes.js │ │ │ ├── postmessage │ │ │ ├── example.html │ │ │ └── postmessage.js │ │ │ ├── print-pdf │ │ │ └── print-pdf.js │ │ │ ├── remotes │ │ │ └── remotes.js │ │ │ ├── search │ │ │ └── search.js │ │ │ └── zoom-js │ │ │ └── zoom.js │ └── readme.md ├── offline.md ├── package.json ├── use_es2015_strategies.md ├── wasm │ ├── css │ │ └── canvas.css │ ├── js │ │ ├── canvas.js │ │ ├── main.js │ │ └── world.js │ ├── package-lock.json │ ├── package.json │ ├── readme.md │ └── wasm-disabled.html └── web_app_manifest_guide.md ├── html ├── HTML_EXAMPLE.html ├── OTHER_HTML_TEMPLATE.html ├── picture-element.md └── simple_form.html ├── images ├── background │ └── ez.jpg └── icons │ └── 16.png ├── js ├── Array.js ├── DOM_Style_Guide.md ├── JavaScript_Style_Guide.md ├── Numbers.js ├── Object.js ├── Regular_Expressions.js ├── Set.js ├── ai │ ├── neuron │ │ ├── data.js │ │ ├── neuron.js │ │ ├── package-lock.json │ │ └── package.json │ └── qlearn │ │ ├── examples │ │ ├── dodgeShoot │ │ │ ├── dodgeShoot.js │ │ │ ├── draw.js │ │ │ ├── index.html │ │ │ ├── initialState.js │ │ │ ├── reduceState.js │ │ │ ├── results2.txt │ │ │ ├── start.js │ │ │ └── visualDemo.js │ │ ├── eatFoodAvoidDanger │ │ │ ├── draw.js │ │ │ ├── eatFoodAvoidDanger.js │ │ │ ├── index.html │ │ │ ├── initialState.js │ │ │ ├── start.js │ │ │ └── visualDemo.js │ │ └── scheduleNext.js │ │ ├── license.txt │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── readme.md │ │ └── source │ │ ├── partialRandomDecide.js │ │ ├── qlearn.js │ │ └── randomDecide.js ├── alpha-5 │ ├── alpha-5.js │ ├── package.json │ ├── readme.md │ └── tests │ │ └── specification │ │ └── alpha-5.js ├── audio │ └── textToSpeech.js ├── class │ ├── class1.js │ ├── class2.js │ ├── class3.js │ ├── class4.js │ ├── class5.js │ ├── class6.js │ ├── class7.js │ ├── multipleExtends.js │ └── multipleExtendsExample.js ├── gamepad │ ├── gamepad.css │ ├── gamepad.html │ └── gamepad.js ├── ifelse.js ├── network │ ├── fetchNode.js │ ├── fetchexample.js │ ├── forms │ │ └── readme.md │ ├── httpRequest.js │ ├── onewaydata │ │ ├── changelog.md │ │ ├── documentation │ │ │ └── notes.txt │ │ ├── examples │ │ │ ├── client.html │ │ │ └── server.js │ │ ├── license.txt │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── readme.md │ │ └── source │ │ │ ├── defaultLogging.js │ │ │ └── onewaydata.js │ ├── socketiyo-client │ │ ├── examples │ │ │ ├── addWsToNode.js │ │ │ ├── exampleBinary.html │ │ │ ├── exampleClient.html │ │ │ ├── exampleClient.js │ │ │ ├── exampleNodeClient.js │ │ │ ├── package-lock.json │ │ │ └── package.json │ │ ├── license.txt │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── readme.md │ │ ├── source │ │ │ ├── defaultLogging.js │ │ │ ├── defaultOptions.js │ │ │ └── socketiyo-client.js │ │ └── tools │ │ │ └── rollup.config.js │ ├── socketiyo-shared │ │ ├── license.txt │ │ ├── package.json │ │ ├── readme.md │ │ └── source │ │ │ └── socketiyo-shared.js │ └── socketiyo │ │ ├── documentation │ │ └── scaling.md │ │ ├── examples │ │ ├── createHttpServer.js │ │ ├── deno.js │ │ ├── denodebug.js │ │ ├── exampleAuthenticationFlow.md │ │ ├── exampleBinaryServer.js │ │ ├── exampleClient.html │ │ ├── exampleMetadata.js │ │ ├── exampleServer.js │ │ ├── package-lock.json │ │ └── package.json │ │ ├── extensions │ │ └── disconnectionDetection.js │ │ ├── license.txt │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── readme.md │ │ ├── source │ │ ├── defaultLogging.js │ │ ├── defaultOptions.js │ │ ├── isObject.js │ │ ├── socketiyo.js │ │ └── validate.js │ │ └── tools │ │ └── rollup.config.js ├── quirk_fixes │ └── safari10_nomodule_fix.js ├── readme.md ├── red-javascript-style-guide │ ├── images │ │ └── red.jpg │ ├── index.js │ ├── license.txt │ ├── package.json │ ├── readme.md │ └── why-disallow-class.md ├── singleton │ ├── singleton1.js │ ├── singleton2.js │ ├── singleton3.js │ ├── singleton4.js │ └── singleton5.js ├── tricks.md └── undefined.js └── svg ├── readme.md ├── svg-help.txt ├── svg_icons ├── iconmonstr-logo-1.svg └── iconmonstr-school-20.svg ├── svg_icons_pattern.md ├── svg_icons_pattern_example.html ├── svg_template.svg └── svg_template_mdn.svg /.gitignore: -------------------------------------------------------------------------------- 1 | old/ 2 | node_modules 3 | #temporarily ignore 4 | design/ 5 | built-slide-controller.js 6 | x64/ 7 | build/ 8 | [Bb]in/ 9 | [Oo]bj/ 10 | *.tmp 11 | .builds 12 | *.pidb 13 | *.log 14 | *.scc 15 | 16 | publish/ 17 | ############# 18 | ## Windows detritus 19 | ############# 20 | 21 | # Windows image file caches 22 | Thumbs.db 23 | ehthumbs.db 24 | 25 | # Folder config file 26 | Desktop.ini 27 | 28 | # Recycle Bin used on file shares 29 | $RECYCLE.BIN/ 30 | 31 | # Mac crap 32 | .DS_Store 33 | 34 | 35 | ############# 36 | ## Python 37 | ############# 38 | 39 | *.py[cod] 40 | 41 | # Packages 42 | *.egg 43 | *.egg-info 44 | dist/ 45 | build/ 46 | eggs/ 47 | parts/ 48 | var/ 49 | sdist/ 50 | develop-eggs/ 51 | .installed.cfg 52 | 53 | # Installer logs 54 | pip-log.txt 55 | 56 | # Unit test / coverage reports 57 | .coverage 58 | .tox 59 | 60 | #Translations 61 | *.mo 62 | 63 | #Mr Developer 64 | .mr.developer.cfg 65 | svg/svg_icons/iconmonstr-idea-2.svg 66 | general/html-streaming/api.js 67 | general/html-streaming/api-2.js 68 | general/html-streaming/readme.md.html 69 | general/html-streaming/last-of-type-test-2.js 70 | general/html-streaming/last-of-type-test.html 71 | general/html-streaming/so.txt 72 | js/network/socketiyo/examples/built/exampleServerReady.js 73 | js/network/socketiyo/examples/upload 74 | js/network/forms/upload/ 75 | js/network/socketiyo-client/built/ 76 | js/network/socketiyo/built/socketiyo.es.js 77 | **/.vscode/settings.json 78 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | 15 | 16 | This work is free. You can redistribute it and/or modify it under the 17 | terms of the Do What The Fuck You Want To Public License, Version 2, 18 | as published by Sam Hocevar. See http://www.wtfpl.net/ for more details. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hello 2 | 3 | Have a look at the files inside 4 | 5 | 6 | 7 | ## Linting and testing 8 | 9 | ### JavaScript linting 10 | 11 | Follow a good [JavaScript Red Style Guide](https://github.com/GrosSacASac/JavaScript-Set-Up/tree/master/js/red-javascript-style-guide) 12 | 13 | Use eslint or jslint 14 | 15 | Make sure objects are what you think with https://github.com/sbansal6/schema-enforcer or Typescript. 16 | 17 | ### JavaScript tests 18 | 19 | with [Jasmine](https://github.com/jasmine/jasmine) or Ava or mocha/chai 20 | 21 | ### HTML tests 22 | 23 | Basic syntax https://validator.w3.org/ or https://html5.validator.nu/ or https://validator.w3.org/nu/#textarea 24 | 25 | User experience with light-house 26 | 27 | ### Performance 28 | 29 | Random UI test with [gremlins.js](https://github.com/marmelab/gremlins.js) 30 | 31 | ## Transpiling 32 | 33 | [Babel](https://babeljs.io/) or Bublé. 34 | 35 | 36 | ## Are you completely new to JavaScript ? 37 | 38 | Learn how JavaScript work first, then come back. Here are some good links: 39 | 40 | * [Eloquent Javascript](https://eloquentjavascript.net/) 41 | * [Javascript-allongé](https://leanpub.com/javascript-allonge/read) 42 | * [jstherightway](https://jstherightway.org/#getting-started) 43 | * [A re-introduction to JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript) 44 | * [Crockford on JavaScript - Section 8: Programming Style & Your Brain ](https://www.youtube.com/watch?v=taaEzHI9xyY) (video) 45 | * [JavaScript examples](https://github.com/GrosSacASac/JavaScript-Set-Up/tree/master/js/) 46 | 47 | 48 | 49 | 50 | ## License 51 | 52 | This project is free and open source. [See License](./LICENSE.txt) 53 | 54 | other project mentioned here, and subfolders, may have other licenses 55 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | latest 6 | 7 | ## Reporting a Vulnerability 8 | 9 | Send email or open issue 10 | -------------------------------------------------------------------------------- /css/css_style_guide.md: -------------------------------------------------------------------------------- 1 | # CSS Stlye Guide 2 | 3 | ## Semantics first 4 | 5 | Want to make text look big ? Think about the reason first, maybe it is a title and `` should be used. Maybe it is an important word, use ``. If it is a subtitle, use `body` and `overline` variant. Once the correct semantic is used, you may have a selector ready. 6 | 7 | ## Sub-categorize CSS 8 | 9 | 1. Company CSS (brand, colors, logo, typography) 10 | 2. Site CSS (colors, visual design) 11 | 3. Site Category CSS (Consistent visual for a site category (news, weather)) 12 | 4. Page Specific CSS (used only on 1 page) 13 | 14 | By putting the most common CSS in company wide CSS, you get visual consistency for free, and best code reuse. Alternatively with SASS or LESS, one could declare site-wide variables and import those where required. 15 | 16 | * 1 Component, 1 CSS 17 | 18 | Can be further extended on individual site categories or pages. 19 | 20 | 21 | ## Selectors 22 | 23 | Should be as short as possible. Use the element selector only when it makes sense (e.g for site wide styles). Use descendant, and child selector when the associated markup also follows this hierarchy 24 | 25 | 26 | ## Key-Value Pairs 27 | 28 | Put the most important ones first 29 | 30 | 0. Content 31 | 1. Positioning and layout 32 | 2. Margin, Border, Padding, Width, Height 33 | 3. Font 34 | 4. Colors 35 | 36 | ### Values: 37 | 38 | No units with `0` as value. 39 | 40 | 41 | 42 | ## Media Queries 43 | 44 | ### Color scheme 45 | 46 | ```css 47 | @media (prefers-color-scheme: dark) { 48 | :root { 49 | --text-color: #eee0d9; 50 | } 51 | } 52 | ``` 53 | 54 | ### Size 55 | 56 | Mobile first 57 | 58 | ```css 59 | @media only screen and (min-width:1200px) { 60 | body { 61 | font-size: 19px; 62 | } 63 | } 64 | ``` 65 | -------------------------------------------------------------------------------- /css/css_tricks.txt: -------------------------------------------------------------------------------- 1 | head, title, style { 2 | display: block; 3 | } 4 | and combo for contenteditable attribute. 5 | 6 | cursor: none; 7 | 8 | anything:after { 9 | content:attr(abbr); 10 | } 11 | -------------------------------------------------------------------------------- /css/readme.md: -------------------------------------------------------------------------------- 1 | # CSS 2 | 3 | ## Media queries 4 | 5 | Media queries allows to define style for a certain configuration only. By default the CSS is used for all configuration. Examples: media="print" media="screen". They can be applied to entire files or group of rules inside the file. 6 | 7 | ### device size or size ? 8 | 9 | I recommend always using size `@media screen and (min-width: 960px) {`. And never device size `@media screen and (min-device-width: 960px) {` 10 | 11 | 12 | 13 | 14 | ## Awesome CSS tricks 15 | 16 | https://github.com/you-dont-need/You-Dont-Need-JavaScript 17 | 18 | 19 | ## CSS loaders 20 | 21 | https://codepen.io/viduthalai1947/pen/JkhDK 22 | 23 | http://tobiasahlin.com/spinkit/ 24 | 25 | https://codepen.io/brunjo/pen/ByjRPy -------------------------------------------------------------------------------- /general/html-streaming/controller.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Controller 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Controller

13 |

14 | Open viewer in another tab to experience this demo 15 |

16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /general/html-streaming/controller.js: -------------------------------------------------------------------------------- 1 | import * as d from "./dom99.js"; 2 | 3 | d.functions.numberChange = function (event) { 4 | fetch(`/updateNumber`, { 5 | method: "PUT", 6 | body: String(d.variables.number), 7 | "content-type": "application/json", 8 | headers: { 9 | 'Content-Type': 'application/json' 10 | } 11 | }); 12 | }; 13 | 14 | d.start(); 15 | -------------------------------------------------------------------------------- /general/html-streaming/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "html-streaming", 3 | "version": "2.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@arr/every": { 8 | "version": "1.0.1", 9 | "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.1.tgz", 10 | "integrity": "sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==" 11 | }, 12 | "@polka/url": { 13 | "version": "0.5.0", 14 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", 15 | "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==" 16 | }, 17 | "dom99": { 18 | "version": "21.1.3", 19 | "resolved": "https://registry.npmjs.org/dom99/-/dom99-21.1.3.tgz", 20 | "integrity": "sha512-2KTuvK9nWNRy5WXVNRJ1fb016NbV5OYJJZOe/Qyc+xHAkjjNuJrtNr8u82aSeWJ3ifYwLjcEj3oTnamAkdULwA==" 21 | }, 22 | "fsevents": { 23 | "version": "2.1.3", 24 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", 25 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", 26 | "dev": true, 27 | "optional": true 28 | }, 29 | "matchit": { 30 | "version": "1.0.8", 31 | "resolved": "https://registry.npmjs.org/matchit/-/matchit-1.0.8.tgz", 32 | "integrity": "sha512-CwPPICzozd/ezCzpVwGYG5bMVieaapnA0vvHDQnmQ2u2vZtVLynoPmvFsZjL67hFOvTBhhpqSR0bq3uloDP/Rw==", 33 | "requires": { 34 | "@arr/every": "^1.0.0" 35 | } 36 | }, 37 | "polka": { 38 | "version": "0.5.2", 39 | "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz", 40 | "integrity": "sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==", 41 | "requires": { 42 | "@polka/url": "^0.5.0", 43 | "trouter": "^2.0.1" 44 | } 45 | }, 46 | "rollup": { 47 | "version": "2.8.2", 48 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.8.2.tgz", 49 | "integrity": "sha512-LRzMcB8V1M69pSvf6uCbR+W9OPCy5FuxcIwqioWg5RKidrrqKbzjJF9pEGXceaMVkbptNFZgIVJlUokCU0sfng==", 50 | "dev": true, 51 | "requires": { 52 | "fsevents": "~2.1.2" 53 | } 54 | }, 55 | "trouter": { 56 | "version": "2.0.1", 57 | "resolved": "https://registry.npmjs.org/trouter/-/trouter-2.0.1.tgz", 58 | "integrity": "sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==", 59 | "requires": { 60 | "matchit": "^1.0.0" 61 | } 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /general/html-streaming/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "html-streaming", 3 | "version": "2.0.1", 4 | "type": "module", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "demo1": "node index.js", 9 | "demo2": "node second-demo.js", 10 | "build-demo3": "rollup slide-show/slide-controller.js --output.format es --name \"slidecontroller\" --output.file slide-show/built-slide-controller.js", 11 | "demo3": "node slide-show/slide-show.js" 12 | }, 13 | "dependencies": { 14 | "dom99": "^21.1.3", 15 | "polka": "^0.5.2" 16 | }, 17 | "devDependencies": { 18 | "rollup": "^2.8.2" 19 | }, 20 | "private": true 21 | } 22 | -------------------------------------------------------------------------------- /general/html-streaming/second-demo.js: -------------------------------------------------------------------------------- 1 | import { dirname } from "node:path"; 2 | import url from "node:url"; 3 | import polka from "polka"; 4 | import { makeSendFileAvailable } from "./sendFile.js"; 5 | 6 | 7 | const __filename = url.fileURLToPath(import.meta.url); 8 | const __dirname = dirname(__filename); 9 | 10 | const app = polka(); 11 | app.use(makeSendFileAvailable); 12 | 13 | const PORT = 8081; 14 | const TIME_OUT_LIMIT = 1000 * 60 * 60; 15 | 16 | const htmlStart = ` 17 | 18 | 19 | 20 | html streaming 21 | 22 | 25 | 31 | 32 | 33 |

Viewer

`; 34 | 35 | const htmlEnd = ` 36 | 37 | `; 38 | 39 | 40 | let number = `0`; 41 | const subScribers = []; 42 | app.get('/', (request, response) => response.sendFile(`${__dirname}/controller.html`)); 43 | app.get('/controller.js', (request, response) => response.sendFile(`${__dirname}/controller.js`)); 44 | app.get('/dom99.js', 45 | (request, response) => response.sendFile(`${__dirname}/node_modules/dom99/built/dom99.es.js`)); 46 | 47 | app.get('/viewer', function (request, response) { 48 | response.setHeader(`Content-Type`, `text/html`); 49 | response.writeHead(200); 50 | response.write(htmlStart); 51 | response.write(`

${number}

`); 52 | subScribers.push(response); 53 | // call this to close response.end(htmlEnd); 54 | }); 55 | 56 | app.put('/updateNumber', function (request, response) { 57 | let body = ``; 58 | request.on(`data`, function (x) { 59 | body = `${body}${x}`; 60 | }); 61 | request.on(`end`, function () { 62 | number = Number(body); 63 | if (!Object.is(number, NaN)) { 64 | subScribers.forEach(function (responseSubscriber) { 65 | responseSubscriber.write(`

${number}

`); 66 | }); 67 | } 68 | response.writeHead(204); 69 | response.end(); 70 | }); 71 | }); 72 | 73 | const server = app.listen(PORT, () => console.log(`Listening on ${PORT}`)); 74 | server.timeout = TIME_OUT_LIMIT; 75 | -------------------------------------------------------------------------------- /general/html-streaming/sendFile.js: -------------------------------------------------------------------------------- 1 | /* from worka/example */ 2 | export { makeSendFileAvailable }; 3 | 4 | import { createReadStream } from "node:fs"; 5 | import path from "node:path"; 6 | 7 | 8 | /* from 3D-realtime-editor */ 9 | const mimeDictionairy = {//add more as you need 10 | '.html': 'text/html', 11 | '.js': 'text/javascript', 12 | '.css': 'text/css', 13 | '.json': 'application/json' 14 | }; 15 | const makeSendFileAvailable = function (req, res, next) { 16 | res.sendFile = sendFile; 17 | next(); 18 | }; 19 | 20 | const sendFile = function (filePath) { 21 | const res = this; 22 | const extname = path.extname(filePath); 23 | const contentType = mimeDictionairy[extname]; 24 | res.setHeader('Content-Type', contentType); 25 | createReadStream(filePath).pipe(res); 26 | }; 27 | -------------------------------------------------------------------------------- /general/html-streaming/slide-show/css.css: -------------------------------------------------------------------------------- 1 | 2 | section { 3 | position: absolute; 4 | left: 0; 5 | right: 0; 6 | } 7 | 8 | section:last-of-type { 9 | animation: comin 1.4s ease 0s; 10 | left: 0; 11 | opacity: 1; 12 | } 13 | 14 | @keyframes comin { 15 | 0% { 16 | left: 100%; 17 | } 18 | 100% { 19 | left: 0; 20 | } 21 | } 22 | 23 | section:not(:last-of-type) { 24 | animation: comout 1.4s ease 0s; 25 | left: -100%; 26 | opacity: 0; 27 | } 28 | 29 | @keyframes comout { 30 | 0% { 31 | left: 0; 32 | opacity: 1; 33 | } 34 | 100% { 35 | left: -100%; 36 | opacity: 0; 37 | } 38 | } 39 | body { 40 | margin: 30px; 41 | font-size: 24px; 42 | text-align: center; 43 | } 44 | -------------------------------------------------------------------------------- /general/html-streaming/slide-show/headLoaded.js: -------------------------------------------------------------------------------- 1 | var headLoaded = Date.now(); 2 | document.addEventListener("DOMContentLoaded", function() { 3 | console.log((Date.now() - headLoaded) / 1000); 4 | }); 5 | -------------------------------------------------------------------------------- /general/html-streaming/slide-show/slide-controller.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Controller 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Controller

13 |

14 | Open viewer in another tab to experience this demo 15 |

16 | 17 |

18 | Shake works too ! 19 |

20 | 21 | 22 | -------------------------------------------------------------------------------- /general/html-streaming/slide-show/slide-controller.js: -------------------------------------------------------------------------------- 1 | import * as d from "../node_modules/dom99/built/dom99.es.js"; 2 | import {shake, shakeSupport} from "../node_modules/dom99/plugins/shake/shake.js"; 3 | 4 | d.plugin(shake); 5 | 6 | d.functions.slideChange = function (event) { 7 | fetch(`/slideChange`, { 8 | method: "POST" 9 | }); 10 | }; 11 | 12 | d.start(); 13 | -------------------------------------------------------------------------------- /general/manifest.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "version": "", 3 | "dir": "", 4 | "lang":"", 5 | "default_locale": "", 6 | "name": "", 7 | "short_name": "", 8 | "description": "", 9 | "scope": "/", 10 | "icons": [ 11 | { 12 | "src": "images/logo-optimized2.svg", 13 | "sizes": "16x16", 14 | "type": "image/svg+xml" 15 | } 16 | ], 17 | "display": "fullscreen", 18 | "orientation": "any", 19 | "start_url": "", 20 | "theme_color": "orange", 21 | "background_color": "yellow", 22 | "categories": "", 23 | "screenshots": [], 24 | "iarc_rating_id": "undefined", 25 | "developer": { 26 | "name": "", 27 | "url": "" 28 | }, 29 | "launch_path": "/" 30 | } -------------------------------------------------------------------------------- /general/npm/presentation/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 Hakim El Hattab, http://hakim.se 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/README.md: -------------------------------------------------------------------------------- 1 | ## Dependencies 2 | 3 | Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceding: https://github.com/hakimel/reveal.js#full-setup 4 | 5 | You also need to install Ruby and then Sass (with `gem install sass`). 6 | 7 | ## Creating a Theme 8 | 9 | To create your own theme, start by duplicating any ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source) and adding it to the compilation list in the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js). 10 | 11 | Each theme file does four things in the following order: 12 | 13 | 1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)** 14 | Shared utility functions. 15 | 16 | 2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)** 17 | Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3. 18 | 19 | 3. **Override** 20 | This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding full selectors with hardcoded styles. 21 | 22 | 4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)** 23 | The template theme file which will generate final CSS output based on the currently defined variables. 24 | 25 | When you are done, run `grunt themes` to compile the Sass file to CSS and you are ready to use your new theme. 26 | -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/beige.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Beige theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @font-face { 17 | font-family: 'League Gothic'; 18 | src: url('../../lib/font/league_gothic-webfont.eot'); 19 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'), 20 | url('../../lib/font/league_gothic-webfont.woff') format('woff'), 21 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'), 22 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg'); 23 | 24 | font-weight: normal; 25 | font-style: normal; 26 | } 27 | 28 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 29 | 30 | 31 | // Override theme settings (see ../template/settings.scss) 32 | $mainColor: #333; 33 | $headingColor: #333; 34 | $headingTextShadow: none; 35 | $backgroundColor: #f7f3de; 36 | $linkColor: #8b743d; 37 | $linkColorHover: lighten( $linkColor, 20% ); 38 | $selectionBackgroundColor: rgba(79, 64, 28, 0.99); 39 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 40 | 41 | // Background generator 42 | @mixin bodyBackground() { 43 | @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) ); 44 | } 45 | 46 | 47 | 48 | // Theme template ------------------------------ 49 | @import "../template/theme"; 50 | // --------------------------------------------- -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/blood.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Blood theme for reveal.js 3 | * Author: Walther http://github.com/Walther 4 | * 5 | * Designed to be used with highlight.js theme 6 | * "monokai_sublime.css" available from 7 | * https://github.com/isagalaev/highlight.js/ 8 | * 9 | * For other themes, change $codeBackground accordingly. 10 | * 11 | */ 12 | 13 | // Default mixins and settings ----------------- 14 | @import "../template/mixins"; 15 | @import "../template/settings"; 16 | // --------------------------------------------- 17 | 18 | // Include theme-specific fonts 19 | 20 | @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); 21 | 22 | // Colors used in the theme 23 | $blood: #a23; 24 | $coal: #222; 25 | $codeBackground: #23241f; 26 | 27 | // Main text 28 | $mainFont: Ubuntu, 'sans-serif'; 29 | $mainFontSize: 36px; 30 | $mainColor: #eee; 31 | 32 | // Headings 33 | $headingFont: Ubuntu, 'sans-serif'; 34 | $headingTextShadow: 2px 2px 2px $coal; 35 | 36 | // h1 shadow, borrowed humbly from 37 | // (c) Default theme by Hakim El Hattab 38 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 39 | 40 | // Links 41 | $linkColor: $blood; 42 | $linkColorHover: lighten( $linkColor, 20% ); 43 | 44 | // Text selection 45 | $selectionBackgroundColor: $blood; 46 | $selectionColor: #fff; 47 | 48 | // Background generator 49 | @mixin bodyBackground() { 50 | @include radial-gradient( $coal, lighten( $coal, 25% ) ); 51 | } 52 | 53 | // Theme template ------------------------------ 54 | @import "../template/theme"; 55 | // --------------------------------------------- 56 | 57 | // some overrides after theme template import 58 | 59 | .reveal p { 60 | font-weight: 300; 61 | text-shadow: 1px 1px $coal; 62 | } 63 | 64 | .reveal h1, 65 | .reveal h2, 66 | .reveal h3, 67 | .reveal h4, 68 | .reveal h5, 69 | .reveal h6 { 70 | font-weight: 700; 71 | } 72 | 73 | .reveal a:not(.image), 74 | .reveal a:not(.image):hover { 75 | text-shadow: 2px 2px 2px #000; 76 | } 77 | 78 | .reveal small a:not(.image), 79 | .reveal small a:not(.image):hover { 80 | text-shadow: 1px 1px 1px #000; 81 | } 82 | 83 | .reveal p code { 84 | background-color: $codeBackground; 85 | display: inline-block; 86 | border-radius: 7px; 87 | } 88 | 89 | .reveal small code { 90 | vertical-align: baseline; 91 | } -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/default.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Default theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @font-face { 17 | font-family: 'League Gothic'; 18 | src: url('../../lib/font/league_gothic-webfont.eot'); 19 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'), 20 | url('../../lib/font/league_gothic-webfont.woff') format('woff'), 21 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'), 22 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg'); 23 | 24 | font-weight: normal; 25 | font-style: normal; 26 | } 27 | 28 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 29 | 30 | // Override theme settings (see ../template/settings.scss) 31 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 32 | 33 | // Background generator 34 | @mixin bodyBackground() { 35 | @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) ); 36 | } 37 | 38 | 39 | 40 | // Theme template ------------------------------ 41 | @import "../template/theme"; 42 | // --------------------------------------------- -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/moon.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Dark theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | 6 | 7 | // Default mixins and settings ----------------- 8 | @import "../template/mixins"; 9 | @import "../template/settings"; 10 | // --------------------------------------------- 11 | 12 | 13 | 14 | // Include theme-specific fonts 15 | @font-face { 16 | font-family: 'League Gothic'; 17 | src: url('../../lib/font/league_gothic-webfont.eot'); 18 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'), 19 | url('../../lib/font/league_gothic-webfont.woff') format('woff'), 20 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'), 21 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg'); 22 | 23 | font-weight: normal; 24 | font-style: normal; 25 | } 26 | 27 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 28 | 29 | /** 30 | * Solarized colors by Ethan Schoonover 31 | */ 32 | html * { 33 | color-profile: sRGB; 34 | rendering-intent: auto; 35 | } 36 | 37 | // Solarized colors 38 | $base03: #002b36; 39 | $base02: #073642; 40 | $base01: #586e75; 41 | $base00: #657b83; 42 | $base0: #839496; 43 | $base1: #93a1a1; 44 | $base2: #eee8d5; 45 | $base3: #fdf6e3; 46 | $yellow: #b58900; 47 | $orange: #cb4b16; 48 | $red: #dc322f; 49 | $magenta: #d33682; 50 | $violet: #6c71c4; 51 | $blue: #268bd2; 52 | $cyan: #2aa198; 53 | $green: #859900; 54 | 55 | // Override theme settings (see ../template/settings.scss) 56 | $mainColor: $base1; 57 | $headingColor: $base2; 58 | $headingTextShadow: none; 59 | $backgroundColor: $base03; 60 | $linkColor: $blue; 61 | $linkColorHover: lighten( $linkColor, 20% ); 62 | $selectionBackgroundColor: $magenta; 63 | 64 | 65 | 66 | // Theme template ------------------------------ 67 | @import "../template/theme"; 68 | // --------------------------------------------- 69 | -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/night.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700); 16 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); 17 | 18 | 19 | // Override theme settings (see ../template/settings.scss) 20 | $backgroundColor: #111; 21 | 22 | $mainFont: 'Open Sans', sans-serif; 23 | $linkColor: #e7ad52; 24 | $linkColorHover: lighten( $linkColor, 20% ); 25 | $headingFont: 'Montserrat', Impact, sans-serif; 26 | $headingTextShadow: none; 27 | $headingLetterSpacing: -0.03em; 28 | $headingTextTransform: none; 29 | $selectionBackgroundColor: #e7ad52; 30 | $mainFontSize: 30px; 31 | 32 | 33 | // Theme template ------------------------------ 34 | @import "../template/theme"; 35 | // --------------------------------------------- -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/serif.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is brown. 4 | * 5 | * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. 6 | */ 7 | 8 | 9 | // Default mixins and settings ----------------- 10 | @import "../template/mixins"; 11 | @import "../template/settings"; 12 | // --------------------------------------------- 13 | 14 | 15 | 16 | // Override theme settings (see ../template/settings.scss) 17 | $mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 18 | $mainColor: #000; 19 | $headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 20 | $headingColor: #383D3D; 21 | $headingTextShadow: none; 22 | $headingTextTransform: none; 23 | $backgroundColor: #F0F1EB; 24 | $linkColor: #51483D; 25 | $linkColorHover: lighten( $linkColor, 20% ); 26 | $selectionBackgroundColor: #26351C; 27 | 28 | .reveal a:not(.image) { 29 | line-height: 1.3em; 30 | } 31 | 32 | 33 | // Theme template ------------------------------ 34 | @import "../template/theme"; 35 | // --------------------------------------------- 36 | -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/simple.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is darkblue. 4 | * 5 | * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. 6 | * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | 9 | 10 | // Default mixins and settings ----------------- 11 | @import "../template/mixins"; 12 | @import "../template/settings"; 13 | // --------------------------------------------- 14 | 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); 19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 20 | 21 | 22 | // Override theme settings (see ../template/settings.scss) 23 | $mainFont: 'Lato', sans-serif; 24 | $mainColor: #000; 25 | $headingFont: 'News Cycle', Impact, sans-serif; 26 | $headingColor: #000; 27 | $headingTextShadow: none; 28 | $headingTextTransform: none; 29 | $backgroundColor: #fff; 30 | $linkColor: #00008B; 31 | $linkColorHover: lighten( $linkColor, 20% ); 32 | $selectionBackgroundColor: rgba(0, 0, 0, 0.99); 33 | 34 | 35 | 36 | // Theme template ------------------------------ 37 | @import "../template/theme"; 38 | // --------------------------------------------- -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/sky.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Sky theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); 17 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); 18 | 19 | 20 | // Override theme settings (see ../template/settings.scss) 21 | $mainFont: 'Open Sans', sans-serif; 22 | $mainColor: #333; 23 | $headingFont: 'Quicksand', sans-serif; 24 | $headingColor: #333; 25 | $headingLetterSpacing: -0.08em; 26 | $headingTextShadow: none; 27 | $backgroundColor: #f7fbfc; 28 | $linkColor: #3b759e; 29 | $linkColorHover: lighten( $linkColor, 20% ); 30 | $selectionBackgroundColor: #134674; 31 | 32 | // Fix links so they are not cut off 33 | .reveal a:not(.image) { 34 | line-height: 1.3em; 35 | } 36 | 37 | // Background generator 38 | @mixin bodyBackground() { 39 | @include radial-gradient( #add9e4, #f7fbfc ); 40 | } 41 | 42 | 43 | 44 | // Theme template ------------------------------ 45 | @import "../template/theme"; 46 | // --------------------------------------------- 47 | -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/source/solarized.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Light theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | 6 | 7 | // Default mixins and settings ----------------- 8 | @import "../template/mixins"; 9 | @import "../template/settings"; 10 | // --------------------------------------------- 11 | 12 | 13 | 14 | // Include theme-specific fonts 15 | @font-face { 16 | font-family: 'League Gothic'; 17 | src: url('../../lib/font/league_gothic-webfont.eot'); 18 | src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'), 19 | url('../../lib/font/league_gothic-webfont.woff') format('woff'), 20 | url('../../lib/font/league_gothic-webfont.ttf') format('truetype'), 21 | url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg'); 22 | 23 | font-weight: normal; 24 | font-style: normal; 25 | } 26 | 27 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 28 | 29 | 30 | /** 31 | * Solarized colors by Ethan Schoonover 32 | */ 33 | html * { 34 | color-profile: sRGB; 35 | rendering-intent: auto; 36 | } 37 | 38 | // Solarized colors 39 | $base03: #002b36; 40 | $base02: #073642; 41 | $base01: #586e75; 42 | $base00: #657b83; 43 | $base0: #839496; 44 | $base1: #93a1a1; 45 | $base2: #eee8d5; 46 | $base3: #fdf6e3; 47 | $yellow: #b58900; 48 | $orange: #cb4b16; 49 | $red: #dc322f; 50 | $magenta: #d33682; 51 | $violet: #6c71c4; 52 | $blue: #268bd2; 53 | $cyan: #2aa198; 54 | $green: #859900; 55 | 56 | // Override theme settings (see ../template/settings.scss) 57 | $mainColor: $base00; 58 | $headingColor: $base01; 59 | $headingTextShadow: none; 60 | $backgroundColor: $base3; 61 | $linkColor: $blue; 62 | $linkColorHover: lighten( $linkColor, 20% ); 63 | $selectionBackgroundColor: $magenta; 64 | 65 | // Background generator 66 | // @mixin bodyBackground() { 67 | // @include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) ); 68 | // } 69 | 70 | 71 | 72 | // Theme template ------------------------------ 73 | @import "../template/theme"; 74 | // --------------------------------------------- 75 | -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/template/mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin vertical-gradient( $top, $bottom ) { 2 | background: $top; 3 | background: -moz-linear-gradient( top, $top 0%, $bottom 100% ); 4 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) ); 5 | background: -webkit-linear-gradient( top, $top 0%, $bottom 100% ); 6 | background: -o-linear-gradient( top, $top 0%, $bottom 100% ); 7 | background: -ms-linear-gradient( top, $top 0%, $bottom 100% ); 8 | background: linear-gradient( top, $top 0%, $bottom 100% ); 9 | } 10 | 11 | @mixin horizontal-gradient( $top, $bottom ) { 12 | background: $top; 13 | background: -moz-linear-gradient( left, $top 0%, $bottom 100% ); 14 | background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) ); 15 | background: -webkit-linear-gradient( left, $top 0%, $bottom 100% ); 16 | background: -o-linear-gradient( left, $top 0%, $bottom 100% ); 17 | background: -ms-linear-gradient( left, $top 0%, $bottom 100% ); 18 | background: linear-gradient( left, $top 0%, $bottom 100% ); 19 | } 20 | 21 | @mixin radial-gradient( $outer, $inner, $type: circle ) { 22 | background: $outer; 23 | background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 24 | background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) ); 25 | background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 26 | background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 27 | background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 28 | background: radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 29 | } -------------------------------------------------------------------------------- /general/npm/presentation/css/theme/template/settings.scss: -------------------------------------------------------------------------------- 1 | // Base settings for all themes that can optionally be 2 | // overridden by the super-theme 3 | 4 | // Background of the presentation 5 | $backgroundColor: #2b2b2b; 6 | 7 | // Primary/body text 8 | $mainFont: 'Lato', sans-serif; 9 | $mainFontSize: 36px; 10 | $mainColor: #eee; 11 | 12 | // Headings 13 | $headingMargin: 0 0 20px 0; 14 | $headingFont: 'League Gothic', Impact, sans-serif; 15 | $headingColor: #eee; 16 | $headingLineHeight: 0.9em; 17 | $headingLetterSpacing: 0.02em; 18 | $headingTextTransform: uppercase; 19 | $headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2); 20 | $heading1TextShadow: $headingTextShadow; 21 | 22 | // Links and actions 23 | $linkColor: #13DAEC; 24 | $linkColorHover: lighten( $linkColor, 20% ); 25 | 26 | // Text selection 27 | $selectionBackgroundColor: #FF5E99; 28 | $selectionColor: #fff; 29 | 30 | // Generates the presentation background, can be overridden 31 | // to return a background image or gradient 32 | @mixin bodyBackground() { 33 | background: $backgroundColor; 34 | } -------------------------------------------------------------------------------- /general/npm/presentation/lib/css/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | pre code { 9 | display: block; padding: 0.5em; 10 | background: #3F3F3F; 11 | color: #DCDCDC; 12 | } 13 | 14 | pre .keyword, 15 | pre .tag, 16 | pre .css .class, 17 | pre .css .id, 18 | pre .lisp .title, 19 | pre .nginx .title, 20 | pre .request, 21 | pre .status, 22 | pre .clojure .attribute { 23 | color: #E3CEAB; 24 | } 25 | 26 | pre .django .template_tag, 27 | pre .django .variable, 28 | pre .django .filter .argument { 29 | color: #DCDCDC; 30 | } 31 | 32 | pre .number, 33 | pre .date { 34 | color: #8CD0D3; 35 | } 36 | 37 | pre .dos .envvar, 38 | pre .dos .stream, 39 | pre .variable, 40 | pre .apache .sqbracket { 41 | color: #EFDCBC; 42 | } 43 | 44 | pre .dos .flow, 45 | pre .diff .change, 46 | pre .python .exception, 47 | pre .python .built_in, 48 | pre .literal, 49 | pre .tex .special { 50 | color: #EFEFAF; 51 | } 52 | 53 | pre .diff .chunk, 54 | pre .subst { 55 | color: #8F8F8F; 56 | } 57 | 58 | pre .dos .keyword, 59 | pre .python .decorator, 60 | pre .title, 61 | pre .haskell .type, 62 | pre .diff .header, 63 | pre .ruby .class .parent, 64 | pre .apache .tag, 65 | pre .nginx .built_in, 66 | pre .tex .command, 67 | pre .prompt { 68 | color: #efef8f; 69 | } 70 | 71 | pre .dos .winutils, 72 | pre .ruby .symbol, 73 | pre .ruby .symbol .string, 74 | pre .ruby .string { 75 | color: #DCA3A3; 76 | } 77 | 78 | pre .diff .deletion, 79 | pre .string, 80 | pre .tag .value, 81 | pre .preprocessor, 82 | pre .built_in, 83 | pre .sql .aggregate, 84 | pre .javadoc, 85 | pre .smalltalk .class, 86 | pre .smalltalk .localvars, 87 | pre .smalltalk .array, 88 | pre .css .rules .value, 89 | pre .attr_selector, 90 | pre .pseudo, 91 | pre .apache .cbracket, 92 | pre .tex .formula { 93 | color: #CC9393; 94 | } 95 | 96 | pre .shebang, 97 | pre .diff .addition, 98 | pre .comment, 99 | pre .java .annotation, 100 | pre .template_comment, 101 | pre .pi, 102 | pre .doctype { 103 | color: #7F9F7F; 104 | } 105 | 106 | pre .coffeescript .javascript, 107 | pre .javascript .xml, 108 | pre .tex .formula, 109 | pre .xml .javascript, 110 | pre .xml .vbscript, 111 | pre .xml .css, 112 | pre .xml .cdata { 113 | opacity: 0.5; 114 | } -------------------------------------------------------------------------------- /general/npm/presentation/lib/font/league_gothic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GrosSacASac/JavaScript-Set-Up/72b95771e0885a9531fddd7fbff85701f9bd49be/general/npm/presentation/lib/font/league_gothic-webfont.eot -------------------------------------------------------------------------------- /general/npm/presentation/lib/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GrosSacASac/JavaScript-Set-Up/72b95771e0885a9531fddd7fbff85701f9bd49be/general/npm/presentation/lib/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /general/npm/presentation/lib/font/league_gothic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GrosSacASac/JavaScript-Set-Up/72b95771e0885a9531fddd7fbff85701f9bd49be/general/npm/presentation/lib/font/league_gothic-webfont.woff -------------------------------------------------------------------------------- /general/npm/presentation/lib/font/league_gothic_license: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /general/npm/presentation/lib/js/classList.js: -------------------------------------------------------------------------------- 1 | /*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js*/ 2 | if(typeof document!=="undefined"&&!("classList" in document.createElement("a"))){(function(j){var a="classList",f="prototype",m=(j.HTMLElement||j.Element)[f],b=Object,k=String[f].trim||function(){return this.replace(/^\s+|\s+$/g,"")},c=Array[f].indexOf||function(q){var p=0,o=this.length;for(;p 3 | Copyright Tero Piirainen (tipiirai) 4 | License MIT / http://bit.ly/mit-license 5 | Version 0.96 6 | 7 | http://headjs.com 8 | */(function(a){function z(){d||(d=!0,s(e,function(a){p(a)}))}function y(c,d){var e=a.createElement("script");e.type="text/"+(c.type||"javascript"),e.src=c.src||c,e.async=!1,e.onreadystatechange=e.onload=function(){var a=e.readyState;!d.done&&(!a||/loaded|complete/.test(a))&&(d.done=!0,d())},(a.body||b).appendChild(e)}function x(a,b){if(a.state==o)return b&&b();if(a.state==n)return k.ready(a.name,b);if(a.state==m)return a.onpreload.push(function(){x(a,b)});a.state=n,y(a.url,function(){a.state=o,b&&b(),s(g[a.name],function(a){p(a)}),u()&&d&&s(g.ALL,function(a){p(a)})})}function w(a,b){a.state===undefined&&(a.state=m,a.onpreload=[],y({src:a.url,type:"cache"},function(){v(a)}))}function v(a){a.state=l,s(a.onpreload,function(a){a.call()})}function u(a){a=a||h;var b;for(var c in a){if(a.hasOwnProperty(c)&&a[c].state!=o)return!1;b=!0}return b}function t(a){return Object.prototype.toString.call(a)=="[object Function]"}function s(a,b){if(!!a){typeof a=="object"&&(a=[].slice.call(a));for(var c=0;c