From 71bee9085381a8d82b02c1969444258f44499502 Mon Sep 17 00:00:00 2001 From: Rowan Merewood Date: Wed, 9 Jan 2019 14:35:08 +0000 Subject: [PATCH] Initial release --- .gitignore | 4 + CONTRIBUTING.md | 44 ++ LICENSE | 201 +++++ README.md | 44 ++ firebase.json | 10 + package-lock.json | 744 ++++++++++++++++++ package.json | 22 + public/404.html | 49 ++ public/bundle.js | 2 + public/bundle.js.map | 1 + public/favicon.ico | Bin 0 -> 15086 bytes public/google0afd8760fd68f119.html | 1 + public/img/icons/android-chrome-192x192.png | Bin 0 -> 4637 bytes public/img/icons/android-chrome-512x512.png | Bin 0 -> 10369 bytes public/img/icons/apple-touch-icon.png | Bin 0 -> 3535 bytes public/img/icons/browserconfig.xml | 9 + public/img/icons/favicon-16x16.png | Bin 0 -> 525 bytes public/img/icons/favicon-32x32.png | Bin 0 -> 869 bytes public/img/icons/mstile-150x150.png | Bin 0 -> 2951 bytes public/img/icons/safari-pinned-tab.svg | 1 + public/img/web-a-skeb-hello-facebook.jpg | Bin 0 -> 96131 bytes public/img/web-a-skeb-hello-twitter.jpg | Bin 0 -> 77252 bytes public/index.html | 111 +++ public/manifest.json | 21 + public/styles.css | 212 +++++ public/sw.js | 57 ++ public/third_party/LICENSE | 201 +++++ .../third_party/Montez-Regular-webfont.woff | Bin 0 -> 36244 bytes rollup.config.js | 37 + src/main.js | 28 + src/skeb-case.js | 222 ++++++ src/toggle-fullscreen.js | 53 ++ src/touch-knob.js | 228 ++++++ 33 files changed, 2302 insertions(+) create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 firebase.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/404.html create mode 100644 public/bundle.js create mode 100644 public/bundle.js.map create mode 100644 public/favicon.ico create mode 100644 public/google0afd8760fd68f119.html create mode 100644 public/img/icons/android-chrome-192x192.png create mode 100644 public/img/icons/android-chrome-512x512.png create mode 100644 public/img/icons/apple-touch-icon.png create mode 100644 public/img/icons/browserconfig.xml create mode 100644 public/img/icons/favicon-16x16.png create mode 100644 public/img/icons/favicon-32x32.png create mode 100644 public/img/icons/mstile-150x150.png create mode 100644 public/img/icons/safari-pinned-tab.svg create mode 100644 public/img/web-a-skeb-hello-facebook.jpg create mode 100644 public/img/web-a-skeb-hello-twitter.jpg create mode 100644 public/index.html create mode 100644 public/manifest.json create mode 100644 public/styles.css create mode 100644 public/sw.js create mode 100644 public/third_party/LICENSE create mode 100644 public/third_party/Montez-Regular-webfont.woff create mode 100644 rollup.config.js create mode 100644 src/main.js create mode 100644 src/skeb-case.js create mode 100644 src/toggle-fullscreen.js create mode 100644 src/touch-knob.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e41c92 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/.firebase/ +/.firebaserc +/firebase-debug.log +/node_modules/ \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..8a52a8f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,44 @@ + + +# How to Contribute + +We'd love to accept your patches and contributions to this project. There are +just a few small guidelines you need to follow. + +## Contributor License Agreement + +Contributions to this project must be accompanied by a Contributor License +Agreement. You (or your employer) retain the copyright to your contribution; +this simply gives us permission to use and redistribute your contributions as +part of the project. Head over to to see +your current agreements on file or to sign a new one. + +You generally only need to submit a CLA once, so if you've already submitted one +(even if it was for a different project), you probably don't need to do it +again. + +## Code reviews + +All submissions, including submissions by project members, require review. We +use GitHub pull requests for this purpose. Consult +[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more +information on using pull requests. + +## Community Guidelines + +This project follows +[Google's Open Source Community Guidelines](https://opensource.google.com/conduct/). diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..471d2b0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ca55662 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ + + +# Magic Web A Skeb Screen + +Create your own single line of pure art at https://web-a-skeb.firebaseapp.com + +## Installation + +1. From the project root directory: +```sh +git web-a-skeb +``` +2. Install the dependencies +```sh +npm install +``` +3. Build the bundle +```sh +npm run build +``` +4. Serve the `public` directory using the web server of your choice. The project is configured for Firebase hosting +```sh +firebase serve +``` + +## Contributing + +This is a playground project, so there is so much room for improvement! Issues and pull requests are always welcome. For details, see [CONTRIBUTING](CONTRIBUTING.md) + +This is not an officially supported Google product. \ No newline at end of file diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..e782939 --- /dev/null +++ b/firebase.json @@ -0,0 +1,10 @@ +{ + "hosting": { + "public": "public", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ] + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5652ced --- /dev/null +++ b/package-lock.json @@ -0,0 +1,744 @@ +{ + "name": "web-a-skeb", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", + "dev": true + }, + "acorn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", + "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.0.0.tgz", + "integrity": "sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "jest-worker": { + "version": "24.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.0.0-alpha.9.tgz", + "integrity": "sha512-6lveyea6qbLdlQy+H+hn4IcEVgdqlI++KZU0tOdLeCliJ7myj7sDAO3fCVAcuMW9yxekIwrYclj472mP3wQdcQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^5.5.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lave": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/lave/-/lave-1.1.10.tgz", + "integrity": "sha1-BiIHZSxVAtfG/wlsneOZVAH2NNU=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "magic-string": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", + "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.1" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "resolve": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", + "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "rollup": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.1.0.tgz", + "integrity": "sha512-NK03gkkOz0CchHBMGomcNqa6U3jLNzHuWK9SI0+1FV475JA6cQxVtjlDcQoKKDNIQ3IwYumIlgoKYDEWUyFBwQ==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "*", + "acorn": "^6.0.5" + } + }, + "rollup-plugin-commonjs": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz", + "integrity": "sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA==", + "dev": true, + "requires": { + "estree-walker": "^0.5.2", + "magic-string": "^0.25.1", + "resolve": "^1.8.1", + "rollup-pluginutils": "^2.3.3" + } + }, + "rollup-plugin-node-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.0.tgz", + "integrity": "sha512-7Ni+/M5RPSUBfUaP9alwYQiIKnKeXCOHiqBpKUl9kwp3jX5ZJtgXAait1cne6pGEVUUztPD6skIKH9Kq9sNtfw==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0", + "is-module": "^1.0.0", + "resolve": "^1.8.1" + } + }, + "rollup-plugin-terser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-4.0.2.tgz", + "integrity": "sha512-M2vY7NPMa3N77/avJSJyBva4nyBTiUM0kgMoWwEAeo2Edl3MW/GoM0069FzVrfMYP3xDqcVrDbaIOqVaBD8lHQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "escodegen": "^1.11.0", + "jest-worker": "^24.0.0-alpha.9", + "lave": "^1.1.10", + "terser": "^3.14.1" + } + }, + "rollup-pluginutils": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz", + "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==", + "dev": true, + "requires": { + "estree-walker": "^0.5.2", + "micromatch": "^2.3.11" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "shake.js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/shake.js/-/shake.js-1.2.2.tgz", + "integrity": "sha1-sqxWCoKr5o14oCliOnCI4bMLrP8=" + }, + "simplify-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simplify-js/-/simplify-js-1.2.3.tgz", + "integrity": "sha512-0IkEqs+5c5vROkHaifGfbqHf5tYDcsTBy6oJPRbFCSwp2uzEr+PpH3dNP7wD8O3d7zdUCjLVq1/xHkwA/JjlFA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "terser": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", + "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c2ae544 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "web-a-skeb", + "version": "1.0.0", + "description": "Magic Web-a-Skeb screen", + "main": "script.js", + "scripts": { + "build": "rollup -c" + }, + "author": "Rowan Merewood ", + "license": "Apache-2.0", + "repository": "https://github.com/rowan-m/web-a-skeb", + "dependencies": { + "shake.js": "^1.2.2", + "simplify-js": "^1.2.3" + }, + "devDependencies": { + "rollup": "^1.1.0", + "rollup-plugin-commonjs": "^9.2.0", + "rollup-plugin-node-resolve": "^4.0.0", + "rollup-plugin-terser": "^4.0.2" + } +} diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..e08874c --- /dev/null +++ b/public/404.html @@ -0,0 +1,49 @@ + + + + + + + + Page Not Found + + + + +
+

404

+

Page Not Found

+

The specified file was not found on this website. Please check the URL for mistakes and try again.

+

Why am I seeing this?

+

This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

+
+ + diff --git a/public/bundle.js b/public/bundle.js new file mode 100644 index 0000000..0b57a4e --- /dev/null +++ b/public/bundle.js @@ -0,0 +1,2 @@ +!function(){"use strict";var t,e;!function(){function t(t,e,s){var i=e.x,n=e.y,h=s.x-i,o=s.y-n;if(0!==h||0!==o){var a=((t.x-i)*h+(t.y-n)*o)/(h*h+o*o);a>1?(i=s.x,n=s.y):a>0&&(i+=h*a,n+=o*a)}return(h=t.x-i)*h+(o=t.y-n)*o}function e(e,s){var i=e.length-1,n=[e[0]];return function e(s,i,n,h,o){for(var a,r=h,l=i+1;lr&&(a=l,r=c)}r>h&&(a-i>1&&e(s,i,a,h,o),o.push(s[a]),n-a>1&&e(s,a,n,h,o))}(e,0,i,s,n),n.push(e[i]),n}function s(t,s,i){if(t.length<=2)return t;var n=void 0!==s?s*s:1;return t=e(t=i?t:function(t,e){for(var s,i,n,h,o,a=t[0],r=[a],l=1,c=t.length;le&&(r.push(s),a=s);return a!==s&&r.push(s),r}(t,n),n)}"function"==typeof define&&define.amd?define(function(){return s}):"undefined"!=typeof module?(module.exports=s,module.exports.default=s):"undefined"!=typeof self?self.simplify=s:window.simplify=s}(),t="undefined"!=typeof window?window:void 0,e=function(t,e){function s(s){if(this.hasDeviceMotion="ondevicemotion"in t,this.options={threshold:15,timeout:1e3},"object"==typeof s)for(var i in s)s.hasOwnProperty(i)&&(this.options[i]=s[i]);if(this.lastTime=new Date,this.lastX=null,this.lastY=null,this.lastZ=null,"function"==typeof e.CustomEvent)this.event=new e.CustomEvent("shake",{bubbles:!0,cancelable:!0});else{if("function"!=typeof e.createEvent)return!1;this.event=e.createEvent("Event"),this.event.initEvent("shake",!0,!0)}}return s.prototype.reset=function(){this.lastTime=new Date,this.lastX=null,this.lastY=null,this.lastZ=null},s.prototype.start=function(){this.reset(),this.hasDeviceMotion&&t.addEventListener("devicemotion",this,!1)},s.prototype.stop=function(){this.hasDeviceMotion&&t.removeEventListener("devicemotion",this,!1),this.reset()},s.prototype.devicemotion=function(e){var s,i,n,h=e.accelerationIncludingGravity;if(null===this.lastX&&null===this.lastY&&null===this.lastZ)return this.lastX=h.x,this.lastY=h.y,void(this.lastZ=h.z);s=Math.abs(this.lastX-h.x),i=Math.abs(this.lastY-h.y),n=Math.abs(this.lastZ-h.z),(s>this.options.threshold&&i>this.options.threshold||s>this.options.threshold&&n>this.options.threshold||i>this.options.threshold&&n>this.options.threshold)&&(new Date).getTime()-this.lastTime.getTime()>this.options.timeout&&(t.dispatchEvent(this.event),this.lastTime=new Date),this.lastX=h.x,this.lastY=h.y,this.lastZ=h.z},s.prototype.handleEvent=function(t){if("function"==typeof this[t.type])return this[t.type](t)},s},"function"==typeof define&&define.amd?define(function(){return e(t,t.document)}):"undefined"!=typeof module&&module.exports?module.exports=e(t,t.document):t.Shake=e(t,t.document);class s{constructor(t){this.path=[t],this.erasedPaths=[],this._lastAngle=null}get lastPoint(){return this.path[this.path.length-1]}moveTo(t){t={x:parseFloat(t.x),y:parseFloat(t.y)};const e=Math.atan2(t.x-this.lastPoint.x,t.y-this.lastPoint.y);e===this._lastAngle&&this.path.pop(),this._lastAngle=e,this.path.push(t)}simplifyPath(){this.path=simplify(this.path,.5)}shake(){return this.path.length>1&&(this.erasedPaths.push(this.path),this.path=[this.lastPoint],!0)}}window.customElements.define("touch-knob",class extends HTMLElement{constructor(){super(),this._angle=1,this._canDraw=!0,this._rotations=0,this._scale=10,this._TWO_PI=2*Math.PI,this.min=0,this.max=298,this._drawState=this._drawState.bind(this),this._onMousedown=this._onMousedown.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseup=this._onMouseup.bind(this),this._onPointerdown=this._onPointerdown.bind(this),this._onPointermove=this._onPointermove.bind(this),this._onPointerup=this._onPointerup.bind(this),this._onTouchend=this._onTouchend.bind(this),this._onTouchmove=this._onTouchmove.bind(this),this._onTouchstart=this._onTouchstart.bind(this)}get value(){return this.hasAttribute("value")?this.getAttribute("value"):0}set value(t){this.setAttribute("value",t)}connectedCallback(){this.style.setProperty("transform","rotate("+this._angle+"rad)"),"PointerEvent"in window?this.addEventListener("pointerdown",this._onPointerdown):(this.addEventListener("touchstart",this._onTouchstart),this.addEventListener("mousedown",this._onMousedown))}disconnectedCallback(){this.removeEventListener("pointerdown",this._onPointerdown),this.removeEventListener("touchstart",this._onTouchstart),this.removeEventListener("mousedown",this._onMousedown)}_onMousedown(t){this._touchX=t.clientX,this._touchY=t.clientY,this._handleStart(),document.addEventListener("mousemove",this._onMousemove),document.addEventListener("mouseup",this._onMouseup)}_onMousemove(t){t.preventDefault(),this._touchX=t.clientX,this._touchY=t.clientY,this._handleMove()}_onMouseup(t){t.preventDefault(),document.removeEventListener("mousemove",this._onMousemove),document.removeEventListener("mouseup",this._onMouseup),this._handleEnd()}_onTouchstart(t){t.preventDefault(),window.oncontextmenu=(()=>!1),this._touchX=t.changedTouches[0].clientX,this._touchY=t.changedTouches[0].clientY,this._handleStart(),this.addEventListener("touchmove",this._onTouchmove),this.addEventListener("touchend",this._onTouchend),this.addEventListener("touchcancel",this._onTouchend)}_onTouchmove(t){t.preventDefault(),this._touchX=t.targetTouches[0].clientX,this._touchY=t.targetTouches[0].clientY,this._handleMove()}_onTouchend(t){t.preventDefault(),window.oncontextmenu=null,this.removeEventListener("touchmove",this._onTouchmove),this.removeEventListener("touchend",this._onTouchend),this.removeEventListener("touchcancel",this._onTouchend),this._handleEnd()}_onPointerdown(t){t.preventDefault(),window.oncontextmenu=(()=>!1),this._touchX=t.clientX,this._touchY=t.clientY,this.setPointerCapture(t.pointerId),this._handleStart(),this.addEventListener("pointermove",this._onPointermove),this.addEventListener("pointerup",this._onPointerup),this.addEventListener("pointercancel",this._onPointerup)}_onPointermove(t){t.preventDefault(),this._touchX=t.clientX,this._touchY=t.clientY,this._handleMove()}_onPointerup(t){t.preventDefault(),window.oncontextmenu=null,this.releasePointerCapture(t.pointerId),this.removeEventListener("pointermove",this._onPointermove),this.removeEventListener("pointerup",this._onPointerup),this.removeEventListener("pointercancel",this._onPointerup),this._handleEnd()}_handleStart(){this._centerX=this.offsetLeft-this.scrollLeft+this.clientLeft+this.offsetWidth/2,this._centerY=this.offsetTop-this.scrollTop+this.clientTop+this.offsetHeight/2,this._initialAngle=this._angle,this._initialValue=parseFloat(this.value),this._initialTouchAngle=Math.atan2(this._touchY-this._centerY,this._touchX-this._centerX),this._attemptedAngle=this._angle,this._attemptedRotations=this._rotations,this._attemptedValue=this.value;const t=new CustomEvent("touch-knob-start",{bubbles:!0});this.dispatchEvent(t)}_handleMove(){!0===this._canDraw&&(this._canDraw=!1,window.requestAnimationFrame(this._drawState));const t=new CustomEvent("touch-knob-move",{bubbles:!0});this.dispatchEvent(t)}_handleEnd(){const t=new CustomEvent("touch-knob-end",{bubbles:!0});this.dispatchEvent(t)}_drawState(){const t=this._attemptedAngle;this._attemptedAngle=this._initialAngle-this._initialTouchAngle+Math.atan2(this._touchY-this._centerY,this._touchX-this._centerX),this._attemptedAngle=this._attemptedAngle-this._TWO_PI*Math.floor((this._attemptedAngle+Math.PI)/this._TWO_PI),t>-1.57&&t<0&&this._attemptedAngle>=0&&this._attemptedAngle<=1.57?this._attemptedRotations++:t<1.57&&t>0&&this._attemptedAngle<=0&&this._attemptedAngle>=-1.57&&this._attemptedRotations--,this._attemptedAngle>=0?this._attemptedValue=(this._attemptedAngle+this._TWO_PI*this._attemptedRotations)*this._scale:this._attemptedAngle<0&&(this._attemptedValue=(this._attemptedAngle+this._TWO_PI*(this._attemptedRotations+1))*this._scale),this._attemptedValue>=this.min&&this._attemptedValue<=this.max&&(this.value=this._attemptedValue,this._rotations=this._attemptedRotations,this._angle=this._attemptedAngle,this.style.setProperty("transform",`rotate(${this._angle}rad)`)),this._canDraw=!0}}),window.customElements.define("skeb-case",class extends HTMLElement{constructor(){super(),this._canDraw=!0,this._lastSketchAngle=null,this._onShake=this._onShake.bind(this),this._optimizeSketch=this._optimizeSketch.bind(this),this._requestOptimizeSketch=this._requestOptimizeSketch.bind(this),this._requestUpdateSketch=this._requestUpdateSketch.bind(this),this._toggleDetail=this._toggleDetail.bind(this),this._updateSketch=this._updateSketch.bind(this)}connectedCallback(){this._sketchModel=new s({x:10,y:10}),this._screen=this.querySelector(".screen"),this._activeSketch=this.querySelector(".active-sketch"),this._path=this.querySelector(".sketch-path"),this._stylus=this.querySelector(".sketch-stylus"),this._horzKnob=this.querySelector(".horz-knob"),this._vertKnob=this.querySelector(".vert-knob"),this.addEventListener("touch-knob-move",this._requestUpdateSketch,{capture:!1,passive:!0}),this.addEventListener("touch-knob-end",this._requestOptimizeSketch,{capture:!1,passive:!0}),this._shakeDetector=new Shake({threshold:5,timeout:200}),this._shakeDetector.start(),window.addEventListener("shake",this._onShake,{capture:!1,passive:!0}),this._shakeButton=this.querySelector(".button-shake"),this._shakeButton.addEventListener("click",this._onShake,{capture:!1,passive:!0}),this._detailButton=this.querySelector(".button-detail"),this._detailButton.addEventListener("click",this._toggleDetail,{capture:!1,passive:!0})}disconnectedCallback(){this.removeEventListener("touch-knob-move",this._requestUpdateSketch),this.removeEventListener("touch-knob-end",this._requestOptimizeSketch),window.removeEventListener("shake",this._onShake,{capture:!1,passive:!0}),this._shakeButton.removeEventListener("click",this._onShake,{capture:!1,passive:!0}),this._shakeDetector.stop(),this._detailButton.removeEventListener("click",this._toggleDetail,{capture:!1,passive:!0})}_requestUpdateSketch(){!0===this._canDraw&&(this._canDraw=!1,window.requestAnimationFrame(this._updateSketch))}_requestOptimizeSketch(){!0===this._canDraw&&(this._canDraw=!1,window.requestAnimationFrame(this._optimizeSketch))}_updateSketch(){this._sketchModel.moveTo({x:this._horzKnob.value,y:this._vertKnob.value}),this._drawSketch(),this._canDraw=!0}_optimizeSketch(){this._sketchModel.simplifyPath(),this._drawSketch(),this._canDraw=!0}_drawSketch(){const t=this._sketchModel.path,e=t[0];let s=`M ${e.x-2} ${e.y-2} M ${e.x+2} ${e.y+2} M ${e.x} ${e.y}`;for(let e=1;e{let e=Number.parseFloat(t.style.opacity);if(e<=0)this._screen.removeChild(t);else{const s=1-(e-=.21);t.style.opacity=e,t.style.filter="blur("+s+"vw)"}})}_toggleDetail(){switch(this._detailButton.value){case"fast":this._screen.classList.add("fast"),this._screen.classList.remove("fanciest"),this._screen.classList.remove("fancy"),this._detailButton.textContent="✨ Fancy",this._detailButton.value="fancy";break;case"fancy":this._screen.classList.add("fancy"),this._screen.classList.remove("fanciest"),this._screen.classList.remove("fast"),this._detailButton.textContent="🌈 Fanciest",this._detailButton.value="fanciest";break;case"fanciest":this._screen.classList.add("fanciest"),this._screen.classList.remove("fancy"),this._screen.classList.remove("fast"),this._detailButton.textContent="🚀 Fast",this._detailButton.value="fast"}}}),window.customElements.define("toggle-fullscreen",class extends HTMLElement{constructor(){super(),this._onFullscreenchange=this._onFullscreenchange.bind(this),this._toggleFullscreen=this._toggleFullscreen.bind(this)}connectedCallback(){document.addEventListener("fullscreenchange",this._onFullscreenchange,{capture:!1,passive:!0}),this._fullscreenButton=this.querySelector(".button-fullscreen"),this._fullscreenButton.addEventListener("click",this._toggleFullscreen,{capture:!1,passive:!0})}disconnectedCallback(){this._fullscreenButton.removeEventListener("click",this._toggleFullscreen)}_onFullscreenchange(){null!==document.fullscreenElement?this._fullscreenButton.textContent="⤵️ Normal screen":this._fullscreenButton.textContent="⤴️ Fullscreen"}_toggleFullscreen(){document.fullscreenElement?document.exitFullscreen&&document.exitFullscreen():document.documentElement.requestFullscreen()}}),"serviceWorker"in navigator&&window.addEventListener("load",function(){navigator.serviceWorker.register("/sw.js").then(function(t){})})}(); +//# sourceMappingURL=bundle.js.map diff --git a/public/bundle.js.map b/public/bundle.js.map new file mode 100644 index 0000000..a9fb307 --- /dev/null +++ b/public/bundle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bundle.js","sources":["../node_modules/shake.js/shake.js","../node_modules/simplify-js/simplify.js","../src/skeb-case.js","../src/main.js","../src/touch-knob.js","../src/toggle-fullscreen.js"],"sourcesContent":["/*\n * Author: Alex Gibson\n * https://github.com/alexgibson/shake.js\n * License: MIT license\n */\n\n(function(global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return factory(global, global.document);\n });\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = factory(global, global.document);\n } else {\n global.Shake = factory(global, global.document);\n }\n} (typeof window !== 'undefined' ? window : this, function (window, document) {\n\n 'use strict';\n\n function Shake(options) {\n //feature detect\n this.hasDeviceMotion = 'ondevicemotion' in window;\n\n this.options = {\n threshold: 15, //default velocity threshold for shake to register\n timeout: 1000 //default interval between events\n };\n\n if (typeof options === 'object') {\n for (var i in options) {\n if (options.hasOwnProperty(i)) {\n this.options[i] = options[i];\n }\n }\n }\n\n //use date to prevent multiple shakes firing\n this.lastTime = new Date();\n\n //accelerometer values\n this.lastX = null;\n this.lastY = null;\n this.lastZ = null;\n\n //create custom event\n if (typeof document.CustomEvent === 'function') {\n this.event = new document.CustomEvent('shake', {\n bubbles: true,\n cancelable: true\n });\n } else if (typeof document.createEvent === 'function') {\n this.event = document.createEvent('Event');\n this.event.initEvent('shake', true, true);\n } else {\n return false;\n }\n }\n\n //reset timer values\n Shake.prototype.reset = function () {\n this.lastTime = new Date();\n this.lastX = null;\n this.lastY = null;\n this.lastZ = null;\n };\n\n //start listening for devicemotion\n Shake.prototype.start = function () {\n this.reset();\n if (this.hasDeviceMotion) {\n window.addEventListener('devicemotion', this, false);\n }\n };\n\n //stop listening for devicemotion\n Shake.prototype.stop = function () {\n if (this.hasDeviceMotion) {\n window.removeEventListener('devicemotion', this, false);\n }\n this.reset();\n };\n\n //calculates if shake did occur\n Shake.prototype.devicemotion = function (e) {\n var current = e.accelerationIncludingGravity;\n var currentTime;\n var timeDifference;\n var deltaX = 0;\n var deltaY = 0;\n var deltaZ = 0;\n\n if ((this.lastX === null) && (this.lastY === null) && (this.lastZ === null)) {\n this.lastX = current.x;\n this.lastY = current.y;\n this.lastZ = current.z;\n return;\n }\n\n deltaX = Math.abs(this.lastX - current.x);\n deltaY = Math.abs(this.lastY - current.y);\n deltaZ = Math.abs(this.lastZ - current.z);\n\n if (((deltaX > this.options.threshold) && (deltaY > this.options.threshold)) || ((deltaX > this.options.threshold) && (deltaZ > this.options.threshold)) || ((deltaY > this.options.threshold) && (deltaZ > this.options.threshold))) {\n //calculate time in milliseconds since last shake registered\n currentTime = new Date();\n timeDifference = currentTime.getTime() - this.lastTime.getTime();\n\n if (timeDifference > this.options.timeout) {\n window.dispatchEvent(this.event);\n this.lastTime = new Date();\n }\n }\n\n this.lastX = current.x;\n this.lastY = current.y;\n this.lastZ = current.z;\n\n };\n\n //event handler\n Shake.prototype.handleEvent = function (e) {\n if (typeof (this[e.type]) === 'function') {\n return this[e.type](e);\n }\n };\n\n return Shake;\n}));\n","/*\n (c) 2017, Vladimir Agafonkin\n Simplify.js, a high-performance JS polyline simplification library\n mourner.github.io/simplify-js\n*/\n\n(function () { 'use strict';\n\n// to suit your point format, run search/replace for '.x' and '.y';\n// for 3D version, see 3d branch (configurability would draw significant performance overhead)\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n\n var dx = p1.x - p2.x,\n dy = p1.y - p2.y;\n\n return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(p, p1, p2) {\n\n var x = p1.x,\n y = p1.y,\n dx = p2.x - x,\n dy = p2.y - y;\n\n if (dx !== 0 || dy !== 0) {\n\n var t = ((p.x - x) * dx + (p.y - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = p2.x;\n y = p2.y;\n\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = p.x - x;\n dy = p.y - y;\n\n return dx * dx + dy * dy;\n}\n// rest of the code doesn't care about point format\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points, sqTolerance) {\n\n var prevPoint = points[0],\n newPoints = [prevPoint],\n point;\n\n for (var i = 1, len = points.length; i < len; i++) {\n point = points[i];\n\n if (getSqDist(point, prevPoint) > sqTolerance) {\n newPoints.push(point);\n prevPoint = point;\n }\n }\n\n if (prevPoint !== point) newPoints.push(point);\n\n return newPoints;\n}\n\nfunction simplifyDPStep(points, first, last, sqTolerance, simplified) {\n var maxSqDist = sqTolerance,\n index;\n\n for (var i = first + 1; i < last; i++) {\n var sqDist = getSqSegDist(points[i], points[first], points[last]);\n\n if (sqDist > maxSqDist) {\n index = i;\n maxSqDist = sqDist;\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 1) simplifyDPStep(points, first, index, sqTolerance, simplified);\n simplified.push(points[index]);\n if (last - index > 1) simplifyDPStep(points, index, last, sqTolerance, simplified);\n }\n}\n\n// simplification using Ramer-Douglas-Peucker algorithm\nfunction simplifyDouglasPeucker(points, sqTolerance) {\n var last = points.length - 1;\n\n var simplified = [points[0]];\n simplifyDPStep(points, 0, last, sqTolerance, simplified);\n simplified.push(points[last]);\n\n return simplified;\n}\n\n// both algorithms combined for awesome performance\nfunction simplify(points, tolerance, highestQuality) {\n\n if (points.length <= 2) return points;\n\n var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n\n points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n points = simplifyDouglasPeucker(points, sqTolerance);\n\n return points;\n}\n\n// export as AMD module / Node module / browser or worker variable\nif (typeof define === 'function' && define.amd) define(function() { return simplify; });\nelse if (typeof module !== 'undefined') {\n module.exports = simplify;\n module.exports.default = simplify;\n} else if (typeof self !== 'undefined') self.simplify = simplify;\nelse window.simplify = simplify;\n\n})();\n","// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport 'simplify-js'; // imports simplify()\nimport 'shake.js'; // imports Shake\n\nclass Sketch {\n constructor(startingPoint) {\n this.path = [startingPoint];\n this.erasedPaths = [];\n this._lastAngle = null;\n }\n\n get lastPoint() {\n return this.path[this.path.length - 1];\n }\n\n moveTo(point) {\n point = {\n x: parseFloat(point.x),\n y: parseFloat(point.y)\n }\n const angle = Math.atan2(\n point.x - this.lastPoint.x,\n point.y - this.lastPoint.y\n );\n\n if (angle === this._lastAngle) {\n this.path.pop();\n }\n\n this._lastAngle = angle;\n this.path.push(point);\n }\n\n simplifyPath() {\n this.path = simplify(this.path, 0.5);\n }\n\n shake() {\n if (this.path.length > 1) {\n this.erasedPaths.push(this.path);\n this.path = [this.lastPoint];\n return true;\n }\n\n return false;\n }\n}\n\nexport class SkebCase extends HTMLElement {\n constructor() {\n super();\n this._canDraw = true;\n this._lastSketchAngle = null;\n\n this._onShake = this._onShake.bind(this);\n this._optimizeSketch = this._optimizeSketch.bind(this);\n this._requestOptimizeSketch = this._requestOptimizeSketch.bind(this);\n this._requestUpdateSketch = this._requestUpdateSketch.bind(this);\n this._toggleDetail = this._toggleDetail.bind(this);\n this._updateSketch = this._updateSketch.bind(this);\n }\n\n connectedCallback() {\n this._sketchModel = new Sketch({ x: 10, y: 10 });\n\n this._screen = this.querySelector('.screen');\n this._activeSketch = this.querySelector('.active-sketch');\n this._path = this.querySelector('.sketch-path');\n this._stylus = this.querySelector('.sketch-stylus');\n\n this._horzKnob = this.querySelector('.horz-knob');\n this._vertKnob = this.querySelector('.vert-knob');\n\n this.addEventListener('touch-knob-move', this._requestUpdateSketch, { capture: false, passive: true });\n this.addEventListener('touch-knob-end', this._requestOptimizeSketch, { capture: false, passive: true });\n\n this._shakeDetector = new Shake({ threshold: 5, timeout: 200 });\n this._shakeDetector.start();\n window.addEventListener('shake', this._onShake, { capture: false, passive: true });\n\n this._shakeButton = this.querySelector('.button-shake');\n this._shakeButton.addEventListener('click', this._onShake, { capture: false, passive: true });\n\n this._detailButton = this.querySelector('.button-detail');\n this._detailButton.addEventListener('click', this._toggleDetail, { capture: false, passive: true });\n }\n\n disconnectedCallback() {\n this.removeEventListener('touch-knob-move', this._requestUpdateSketch);\n this.removeEventListener('touch-knob-end', this._requestOptimizeSketch);\n\n window.removeEventListener('shake', this._onShake, { capture: false, passive: true });\n this._shakeButton.removeEventListener('click', this._onShake, { capture: false, passive: true });\n this._shakeDetector.stop();\n\n this._detailButton.removeEventListener('click', this._toggleDetail, { capture: false, passive: true });\n }\n\n _requestUpdateSketch() {\n if (this._canDraw === true) {\n this._canDraw = false;\n window.requestAnimationFrame(this._updateSketch);\n }\n }\n\n _requestOptimizeSketch() {\n if (this._canDraw === true) {\n this._canDraw = false;\n window.requestAnimationFrame(this._optimizeSketch);\n }\n }\n\n _updateSketch() {\n this._sketchModel.moveTo({\n x: this._horzKnob.value,\n y: this._vertKnob.value\n });\n this._drawSketch();\n this._canDraw = true;\n }\n\n _optimizeSketch() {\n this._sketchModel.simplifyPath();\n this._drawSketch();\n this._canDraw = true;\n }\n\n _drawSketch() {\n const path = this._sketchModel.path;\n const start = path[0];\n let svgPath = `M ${start.x - 2} ${start.y - 2} M ${start.x + 2} ${start.y + 2} M ${start.x} ${start.y}`;\n\n for (let i = 1; i < path.length; i++) {\n const point = path[i];\n svgPath += ` L ${point.x} ${point.y}`;\n }\n\n this._path.setAttribute('d', svgPath);\n\n const stylus = this._sketchModel.lastPoint;\n this._stylus.setAttribute('x1', stylus.x);\n this._stylus.setAttribute('x2', stylus.x);\n this._stylus.setAttribute('y1', stylus.y);\n this._stylus.setAttribute('y2', stylus.y);\n }\n\n _onShake() {\n if (this._sketchModel.shake()) {\n const newPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n const start = this._sketchModel.path[0];\n const initialPath = `M ${start.x - 2} ${start.y - 2} M ${start.x + 2} ${start.y + 2} M ${start.x} ${start.y}`;\n\n newPath.setAttributeNS(null, 'd', initialPath);\n newPath.classList.add('sketch-path');\n\n const erasedSketch = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n erasedSketch.classList.add('erased-sketch');\n erasedSketch.setAttributeNS(null, 'preserveAspectRatio', 'none');\n erasedSketch.setAttributeNS(null, 'x', '0');\n erasedSketch.setAttributeNS(null, 'y', '0');\n erasedSketch.setAttributeNS(null, 'viewBox', '0 0 300 300');\n erasedSketch.setAttributeNS(null, 'height', '100%');\n erasedSketch.style.opacity = '1';\n\n erasedSketch.appendChild(this._path);\n this._path = newPath;\n this._activeSketch.insertBefore(this._path, this._stylus);\n this._screen.insertBefore(erasedSketch, this._activeSketch);\n }\n\n this._screen.querySelectorAll('.erased-sketch').forEach(erasedSketch => {\n let opacity = Number.parseFloat(erasedSketch.style.opacity);\n if (opacity <= 0) {\n this._screen.removeChild(erasedSketch);\n } else {\n opacity -= 0.21;\n const blur = 1 - opacity;\n erasedSketch.style.opacity = opacity;\n erasedSketch.style.filter = 'blur(' + blur + 'vw)';\n }\n });\n }\n\n _toggleDetail() {\n switch (this._detailButton.value) {\n case 'fast':\n this._screen.classList.add('fast');\n this._screen.classList.remove('fanciest');\n this._screen.classList.remove('fancy');\n this._detailButton.textContent = '✨ Fancy';\n this._detailButton.value = 'fancy';\n break;\n case 'fancy':\n this._screen.classList.add('fancy');\n this._screen.classList.remove('fanciest');\n this._screen.classList.remove('fast');\n this._detailButton.textContent = '🌈 Fanciest';\n this._detailButton.value = 'fanciest';\n break;\n case 'fanciest':\n this._screen.classList.add('fanciest');\n this._screen.classList.remove('fancy');\n this._screen.classList.remove('fast');\n this._detailButton.textContent = '🚀 Fast';\n this._detailButton.value = 'fast';\n break;\n }\n }\n}\n","// Copyright 2018 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { TouchKnob } from './touch-knob.js';\nimport { SkebCase } from './skeb-case.js';\nimport { ToggleFullscreen } from './toggle-fullscreen.js';\n\nwindow.customElements.define('touch-knob', TouchKnob);\nwindow.customElements.define('skeb-case', SkebCase);\nwindow.customElements.define('toggle-fullscreen', ToggleFullscreen);\n\nif ('serviceWorker' in navigator) {\n window.addEventListener('load', function () {\n navigator.serviceWorker\n .register('/sw.js')\n .then(function (registration) { });\n });\n}","// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport class TouchKnob extends HTMLElement {\n constructor() {\n super();\n this._angle = 1;\n this._canDraw = true;\n this._rotations = 0;\n this._scale = 10;\n this._TWO_PI = 2 * Math.PI;\n this.min = 0;\n this.max = 298;\n\n this._drawState = this._drawState.bind(this);\n this._onMousedown = this._onMousedown.bind(this);\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseup = this._onMouseup.bind(this);\n this._onPointerdown = this._onPointerdown.bind(this);\n this._onPointermove = this._onPointermove.bind(this);\n this._onPointerup = this._onPointerup.bind(this);\n this._onTouchend = this._onTouchend.bind(this);\n this._onTouchmove = this._onTouchmove.bind(this);\n this._onTouchstart = this._onTouchstart.bind(this);\n }\n\n get value() {\n return this.hasAttribute('value') ? this.getAttribute('value') : 0;\n }\n\n set value(value) {\n this.setAttribute('value', value);\n }\n\n connectedCallback() {\n this.style.setProperty('transform', 'rotate(' + this._angle + 'rad)');\n if ('PointerEvent' in window) {\n this.addEventListener('pointerdown', this._onPointerdown);\n } else {\n this.addEventListener('touchstart', this._onTouchstart);\n this.addEventListener('mousedown', this._onMousedown);\n }\n }\n\n disconnectedCallback() {\n this.removeEventListener('pointerdown', this._onPointerdown);\n this.removeEventListener('touchstart', this._onTouchstart);\n this.removeEventListener('mousedown', this._onMousedown);\n }\n\n _onMousedown(e) {\n this._touchX = e.clientX;\n this._touchY = e.clientY;\n\n this._handleStart();\n\n document.addEventListener('mousemove', this._onMousemove);\n document.addEventListener('mouseup', this._onMouseup);\n }\n\n _onMousemove(e) {\n e.preventDefault();\n this._touchX = e.clientX;\n this._touchY = e.clientY;\n\n this._handleMove();\n }\n\n _onMouseup(e) {\n e.preventDefault();\n\n document.removeEventListener('mousemove', this._onMousemove);\n document.removeEventListener('mouseup', this._onMouseup);\n\n this._handleEnd();\n }\n\n _onTouchstart(e) {\n e.preventDefault();\n window.oncontextmenu = () => { return false; };\n\n this._touchX = e.changedTouches[0].clientX;\n this._touchY = e.changedTouches[0].clientY;\n\n this._handleStart();\n\n this.addEventListener('touchmove', this._onTouchmove);\n this.addEventListener('touchend', this._onTouchend);\n this.addEventListener('touchcancel', this._onTouchend);\n }\n\n _onTouchmove(e) {\n e.preventDefault();\n\n this._touchX = e.targetTouches[0].clientX;\n this._touchY = e.targetTouches[0].clientY;\n\n this._handleMove();\n }\n\n _onTouchend(e) {\n e.preventDefault();\n window.oncontextmenu = null;\n\n this.removeEventListener('touchmove', this._onTouchmove);\n this.removeEventListener('touchend', this._onTouchend);\n this.removeEventListener('touchcancel', this._onTouchend);\n\n this._handleEnd();\n }\n\n _onPointerdown(e) {\n e.preventDefault();\n window.oncontextmenu = () => { return false; };\n\n this._touchX = e.clientX;\n this._touchY = e.clientY;\n this.setPointerCapture(e.pointerId);\n\n this._handleStart();\n\n this.addEventListener('pointermove', this._onPointermove);\n this.addEventListener('pointerup', this._onPointerup);\n this.addEventListener('pointercancel', this._onPointerup);\n }\n\n _onPointermove(e) {\n e.preventDefault();\n this._touchX = e.clientX;\n this._touchY = e.clientY;\n\n this._handleMove();\n }\n\n _onPointerup(e) {\n e.preventDefault();\n window.oncontextmenu = null;\n\n this.releasePointerCapture(e.pointerId);\n this.removeEventListener('pointermove', this._onPointermove);\n this.removeEventListener('pointerup', this._onPointerup);\n this.removeEventListener('pointercancel', this._onPointerup);\n\n this._handleEnd();\n }\n\n _handleStart() {\n this._centerX = this.offsetLeft - this.scrollLeft + this.clientLeft + this.offsetWidth / 2;\n this._centerY = this.offsetTop - this.scrollTop + this.clientTop + this.offsetHeight / 2;\n\n this._initialAngle = this._angle;\n this._initialValue = parseFloat(this.value);\n this._initialTouchAngle = Math.atan2(\n this._touchY - this._centerY,\n this._touchX - this._centerX\n );\n\n this._attemptedAngle = this._angle;\n this._attemptedRotations = this._rotations;\n this._attemptedValue = this.value;\n\n const evt = new CustomEvent('touch-knob-start', { bubbles: true });\n this.dispatchEvent(evt);\n }\n\n _handleMove() {\n if (this._canDraw === true) {\n this._canDraw = false;\n window.requestAnimationFrame(this._drawState);\n }\n\n const evt = new CustomEvent('touch-knob-move', { bubbles: true });\n this.dispatchEvent(evt);\n }\n\n _handleEnd() {\n const evt = new CustomEvent('touch-knob-end', { bubbles: true });\n this.dispatchEvent(evt);\n }\n _drawState() {\n const previousAttemptedAngle = this._attemptedAngle;\n this._attemptedAngle =\n this._initialAngle - this._initialTouchAngle\n + Math.atan2(this._touchY - this._centerY, this._touchX - this._centerX);\n this._attemptedAngle = this._attemptedAngle\n - this._TWO_PI * Math.floor((this._attemptedAngle + Math.PI) / this._TWO_PI);\n\n if (\n previousAttemptedAngle > -1.57 && previousAttemptedAngle < 0\n && this._attemptedAngle >= 0 && this._attemptedAngle <= 1.57\n ) {\n this._attemptedRotations++;\n } else if (\n previousAttemptedAngle < 1.57 && previousAttemptedAngle > 0\n && this._attemptedAngle <= 0 && this._attemptedAngle >= -1.57\n ) {\n this._attemptedRotations--;\n }\n\n if (this._attemptedAngle >= 0) {\n this._attemptedValue =\n (this._attemptedAngle + this._TWO_PI * this._attemptedRotations) * this._scale;\n } else if (this._attemptedAngle < 0) {\n this._attemptedValue =\n (this._attemptedAngle + this._TWO_PI * (this._attemptedRotations + 1)) * this._scale;\n }\n\n if (this._attemptedValue >= this.min && this._attemptedValue <= this.max) {\n this.value = this._attemptedValue;\n this._rotations = this._attemptedRotations;\n this._angle = this._attemptedAngle;\n this.style.setProperty('transform', `rotate(${this._angle}rad)`);\n }\n\n this._canDraw = true;\n }\n}","// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport class ToggleFullscreen extends HTMLElement {\n\n constructor() {\n super();\n\n this._onFullscreenchange = this._onFullscreenchange.bind(this);\n this._toggleFullscreen = this._toggleFullscreen.bind(this);\n }\n\n\n connectedCallback() {\n document.addEventListener('fullscreenchange', this._onFullscreenchange, { capture: false, passive: true });\n\n this._fullscreenButton = this.querySelector('.button-fullscreen');\n this._fullscreenButton.addEventListener('click', this._toggleFullscreen, { capture: false, passive: true });\n }\n\n disconnectedCallback() {\n this._fullscreenButton.removeEventListener('click', this._toggleFullscreen);\n }\n\n _onFullscreenchange() {\n if (document.fullscreenElement !== null) {\n this._fullscreenButton.textContent = '⤵️ Normal screen';\n } else {\n this._fullscreenButton.textContent = '⤴️ Fullscreen';\n }\n }\n\n _toggleFullscreen() {\n if (!document.fullscreenElement) {\n document.documentElement.requestFullscreen();\n } else {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n }\n }\n}"],"names":["global","factory","getSqSegDist","p","p1","p2","x","y","dx","dy","t","simplifyDouglasPeucker","points","sqTolerance","last","length","simplified","simplifyDPStep","first","index","maxSqDist","i","sqDist","push","simplify","tolerance","highestQuality","undefined","point","prevPoint","newPoints","len","simplifyRadialDist","define","amd","module","exports","default","self","window","this","document","Shake","options","hasDeviceMotion","threshold","timeout","hasOwnProperty","lastTime","Date","lastX","lastY","lastZ","CustomEvent","event","bubbles","cancelable","createEvent","initEvent","prototype","reset","start","addEventListener","stop","removeEventListener","devicemotion","e","deltaX","deltaY","deltaZ","current","accelerationIncludingGravity","z","Math","abs","getTime","dispatchEvent","handleEvent","type","Sketch","[object Object]","startingPoint","path","erasedPaths","_lastAngle","lastPoint","parseFloat","angle","atan2","pop","customElements","HTMLElement","super","_angle","_canDraw","_rotations","_scale","_TWO_PI","PI","min","max","_drawState","bind","_onMousedown","_onMousemove","_onMouseup","_onPointerdown","_onPointermove","_onPointerup","_onTouchend","_onTouchmove","_onTouchstart","value","hasAttribute","getAttribute","setAttribute","style","setProperty","_touchX","clientX","_touchY","clientY","_handleStart","preventDefault","_handleMove","_handleEnd","oncontextmenu","changedTouches","targetTouches","setPointerCapture","pointerId","releasePointerCapture","_centerX","offsetLeft","scrollLeft","clientLeft","offsetWidth","_centerY","offsetTop","scrollTop","clientTop","offsetHeight","_initialAngle","_initialValue","_initialTouchAngle","_attemptedAngle","_attemptedRotations","_attemptedValue","evt","requestAnimationFrame","previousAttemptedAngle","floor","_lastSketchAngle","_onShake","_optimizeSketch","_requestOptimizeSketch","_requestUpdateSketch","_toggleDetail","_updateSketch","_sketchModel","_screen","querySelector","_activeSketch","_path","_stylus","_horzKnob","_vertKnob","capture","passive","_shakeDetector","_shakeButton","_detailButton","moveTo","_drawSketch","simplifyPath","svgPath","stylus","shake","newPath","createElementNS","initialPath","setAttributeNS","classList","add","erasedSketch","opacity","appendChild","insertBefore","querySelectorAll","forEach","Number","removeChild","blur","filter","remove","textContent","_onFullscreenchange","_toggleFullscreen","_fullscreenButton","fullscreenElement","exitFullscreen","documentElement","requestFullscreen","navigator","serviceWorker","register","then","registration"],"mappings":"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"} \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4927e3a60a1e67d4bd00814e2c49ecbf123288cf GIT binary patch literal 15086 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 TO~qILRshruW9>3cOyqw6w=-zJ literal 0 HcmV?d00001 diff --git a/public/img/icons/android-chrome-512x512.png b/public/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..117a7cad1cf94792c5f8227309fdd599f1e59c0c GIT binary patch literal 10369 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 Q{{;6snugcPu3#ho3s^YC-T(jq literal 0 HcmV?d00001 diff --git a/public/img/icons/apple-touch-icon.png b/public/img/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e6215ecadb89ab40d9b9f7da7a3049247c4e0f6d GIT binary patch literal 3535 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 literal 0 HcmV?d00001 diff --git a/public/img/icons/browserconfig.xml b/public/img/icons/browserconfig.xml new file mode 100644 index 0000000..58a837d --- /dev/null +++ b/public/img/icons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #991111 + + + diff --git a/public/img/icons/favicon-16x16.png b/public/img/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4315cda83947a4947d438788b0e8b6d72e8a6a GIT binary patch literal 525 zcmV+o0`mQdP)Px#kWfriMYR9`lnM&35d_W6&7S}Ovj6~+3=Fpb0H*>1 zxBvkA007X?(3mSLqNAj)v$M__74`M?m~wKNXJ_#|7vbdOpD-qvKP{V;m5`E>^z`)e zFA(C4KJ)?r+u-2pj6d`k2I+b=s;a8N!NIn;xWdK7o1dS2QBj3WP2&Uvq@<MX|7$?hBVhk`Z4+n2d<4|Dr28&g%fq7atZ6 zA$EuqSpWb4S9(-fbW&k=AaHVTW@&6?Aar?fWguyAbYlPjc%0+%3K74o@Px#;ZRIeMV9~onE(LI&CUM+0G9v&nE(Kn005T&0GR*) zoB#mO(9reu^~3-Gz5oECqN4Wp_Ra_hN zV`J#8P^|_9tgWqabad*JLzxp3w*Ua@1O)a!7aC6o<3KRcx0cBrT=4&{A3`p;w?q zpLgGSzBgJz^-*Ru;pT*W?E~f6vmcv6h(31wyP;h+a0jN zacYgZU<{=rr-_j{RTxtfVX-VpLxTxDZPesHae%rNXiy5xk=DBuo}ca+PtTWvu{@0s zu@=ZBf%Y+CX_O(+h=&whpTZLAy8;h6LS@KCytX8k%w5i4#cb)ayb@Z+Ot`XXJRWM= z&_DN?;q%Hk=Bvk-_rd7(jEB!#TUGe-{%if;0Uwl830Gn4X8-^IS9(-fbW&k=AaHVT zW@&6?Aar?fWguyAbYlPjc%0+%3K74o@ zf7_FPm$tXJJv==0^z_I8zzhIz^4%kg3E<)8b~5FutE)TA#u6SL?(6G&1OT*hajr7~ zOtiIodU|#N0BWw`4%xAa89*QqR;n#2EX?hfL}@fyFF~(AR4v@vIths^z6zO`nD};6 zEH5vwR0>FOfXvIEOT5hU=~SGgNhFfJo!#fppIcg5==W8)ET@A1 zrFw+Ngg5Pu2MJYqYRh|m<(z>{H!+=#{U>QTNvi*Hh=*cM9u$3wqXX4HI9d~NTe%f4 zM0TyQ7vm>RZj5|xFQpBJ>@f*h@&3X%Hngr;L6+xH-O>yCZ&_6tM(DhCOkj}@2CGV6 z8eUgHiS4onoka;}-h34~ANoUh`hurZW|AeLJrX2=(0_8)sT?vbacW(y~x0QBmU#Z{aCSS$0Q{J+S&FY)^dxy zyW2HxJSq}@g!oCwaE{M!KM+{m`#2m-$E>i*_ruTAx#hLs;&Q3%Y0c z?KzXKtC#_ec~fj%-O}d>u99FKAn3O=0T@FH;QuaM9Bib6f*l> zOA8pcudF?LEwu!=fYJg>7NXE;7Iyf;@>y=Vv5jgexsyjP5G^5(RBzucdGOl^znEXM zMqGZVhFZ92x~%G`6l`$z`@^ett5irVZHBEkI3`uM2vOmDU0=dvxF3#w5t_H3Sw4NR4sZ)dNQA+!K{TxL4C zOVqXr88W~*GdSo^jwwxjA4qMGfV+c!M)X~pzY0o#IBZ~P@aOo)*AmcFOqq*&b`>RX ze>19=Qu(mjxtUhssy`d1#BTG#zn!CP-AhQC*!%a!i^h{i4^1E3+bX|ylNGHt^0qV6 z=`D`OSjrK5mM8=Kt~^<0OlwhC6dLfbzRkO})=R|NrjYn6Aa^=(=h7Pe#5oWw=`^r5 z=`$qHWYMSWjIt(p0rm-M%o*RH)fGDPBPhKbBGd#>4ATrCL!1R9QFrh~lKjxX$v4DK zqibz3K<%dYR@H2G6qk`DyxaMKWfDBP@<4o$gZIbu{TPaL{(YHtvDo)k`EPY>_R!9P zK0Af#SS~5g*vQ6U#Y<&I{%pE-&Y(wk(6InWjnQTYRvaZrx9_^Ubc^%a*WB?O*B?OhF4pw9%dz8Z3rUXUAt_ znsmmos*|rJgiL8>NwuUUl>LFoIaFO{QN!8P1Tw!ZoI|y(2zXHB`+k_~o(o>sdiQ76 za_s14Gs02MY!3&k#MbAn1;avLFnmMJ3UI-^je>}9(EhM+5cNxUsS~^oTu!^PQgP!K zC#gXTZr-1@8H?oIxHLxF@02Kd+Gg%Z*%xZo89Df4wkh~KZ&dzyaC!7jL4hs_I;bc7jYQTbPnvlpkl$o-RZp3 z6!#he{AK`x4Q_bWG%=J$G;fKRhlu0WM>dLd_h6u?8_+9UpyVd^{P+=~xx)AE*OXi}0ZFyaPY=}*%oVR` zy*wK{u^5*#9aFK{H;b5eSCB~|Z9!HyyupZr8;Q`h|Nsr;&yX)l!j{2BL&L=(Td}P~b4G!=(!M zL#O=%WE9HK0HSN4Hu9>=-HWMwfd(iDJdKX>Vu|xDRRjh@O+82Yj zbD&p*U$R6XR?)%pl0za{iJQHS&c(-81{?cd3G!X=*M7RfP>)h6BRg!O4F(kEpjfji z*nxg`544xKox}S4Ew1EVvM>{7s^&z!!Tmjm85KChkphBnmA94gNxPI z(Wzrr1z@B=TAw&>_&8vCdnH%?{P|}q%T2BBHKU2XTtdaJVG7bmuM;rhxS`(4 z3pC0$jkqnSU<0SWmEU5bCyUT1oXh#F?*^rMWkR3Rhz@o997e~g7|&yF)JPHWX+&d? zph9IA?hCnFP{i82d9E&A{ih4bBb)F2g@sX2xvhFtO4QUx8g{H|snY$Ds+Hr**sa53 z8j{?dGDH=n4xq14id{+yiX+VHlqYq)1Vp4PvNA`LR&zea{bj$N4(oBGE0|ZeMk#L{ zl#3xbwExn)fJjLffJW>iC#)1gJxM1GI}6SXCmwO`g^Aqy)owCq*%8XOfGGs_Xz5%| zXwdo!Com`6F|u~Re*y==k{>k;CWU{Re%W9fSkY6!^^k~Q9Lj`TRu0ytM7joF&sCNb zq3=u5&C?mboKw`jq9(1;ZKj6frhUg{A?PnrM?1E6PZ|K4eRQ9xThSBzyK3_>6GU8q zh$U-tBMh9FGuqi_rQGCW{^`g!`)OPI3IdZEz%nhZq&SYxg{+8cZ9WVO$>S1~{1E1E z0GIZiF&66E3qul~9hq1!L--iP4W#|h=1TdS)n#WvwKe64Zo?3Ezn0s+e|gha^Sqx=a<4?x@RZ61 z-PK?P1r1MT*Gx3j{%BlV>$}X)QoW-iCHO-4^by`yA5gMCTp0^HU*G z?I~URXNO6s`k%E(_7lLACf|%!f%^Puvvr824c5Z>zNmkIpNE%^yC^o;-(A$p zAL|MLJjj~g \ No newline at end of file diff --git a/public/img/web-a-skeb-hello-facebook.jpg b/public/img/web-a-skeb-hello-facebook.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a2bcbb0e13117b4ec4424d729770130c17e22df GIT binary patch literal 96131 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

VE^i6W^z8v5mG$V6F^0MZWXgL?4m;W0 zR*Jo3u<)oENyQtwsM(h_Edd-=j7`5wg$pvUVfeNj>>YMu#3ds-KgGaKw38OEwO)P( z9|J~Y?xC;2nv}vZj>Kv0M0qpB6(m2Q3xh(=F$Y^d0AD8;fB81q{=VuznR{>TUEZg+PH5|jy>m!q;+c^F-NKon z+r+s59%aB}inX^3-a^mblF=#JF-ua?7sqVu)3BgP4wXI?gV!@IKkZs5FmJP zch}(V4ncyuyCt~0yIarz!F5h@Z_nJm-QSye^Yy&xe&0O>`_$gMs&?%kRNeov@y{l$KH((<`7v>bGDWKKPohKhig9sbJWCiTWEN@A-V5-E;+CHez zshFn{!8IHsF1$C)d8S9SHE?QKrAHK|d#9s6wjhCR8PMabufB)ZL?rp)TkeYn2p5o1 zf9$J8cTNk8OGknJVp21YFtto~tiPyguX}5N6sC^eLaUIQQKQJ ztOlH~Q6Z{LDxVySS38kh#!Z`G$&KGL1hqW@Xq{p+IIE5og89M>a(?lk2xw=tm4r z_~B7PH_8D@l+hQ7mQt|LH)OH8dCJ1ya`O~n6tRovcjlx(-gB|=6MDmycC!=(7SQZ* zTWgQ=KSwaW0_NxNj7PJNtZZk+KaLSRrPpDi6+^Dl?LvYH;f|WwAgB3m@})Ng46$K$ zNOE*S&oRa_OL>p^2ZSWN_e72<4Y~0A>alfs$a1WiFG#OBy)y;T9?)btl)l8)c$L)LRlGVSflk+Yo;Aku*+ zvHUk>7|w4z#t<}wE={Mr{G)ybd@3WE85)FmJCp|CvT93x(Zn{$f3a<8sMFuYso`wC zR^rEloso?bf*$5_eE8S9wpY?WD`*AAwo`$yV4&%Cj6xw`xqEKfC@pb$r1+`6MM}6R zI#OL~x6vBV1n<=pYpE@8HI1?{K(PB$1~_JVts~Kp2Q6=DujrKl&CJHSN|5f}y;7y* z`wfo4<0%!|Qf6T@sddBgn{&`0d71nbbh)hMti^Kwzp01Z@uoydV@sbp0cYb^7ns#L zbBwI$XBbuNVN*jF0N2k3pb4;I=we;3g3Uzf1+Dt{dU`bs%IrOTvV%QTaZ{@k-KAfEi>*?N`|`@Ee}_JeYsdq-Gp{sgd+D z{5!XlEC46(ySZI4wXmR78`Hv~C9!{CHyuiQ6JUV9dE8%-yEikpGh~){5T~$H5%kpw zj*qL(hUxlB=4m@JosWAm|}lB+Pcl{D(LIO zkywtvdGl3=;8CcuN$aqp9JHep(e+L2yr)bM?Nmz%3d_2Pg!+5Y%dwaR^DPT3u7(p; z&sZV#`^2-a1hE-^W7YW4y^hB^Xx15T=}iV5Hk==t=EiD}x^Fv5D{}p^S0!VJ_Pu06 zHP_AY8%(CfXAu@ZfZZ0_Bc{eiV)`PiusUd)H8AwR<1LTlrqv~(b0((!9wmt_?TD!k(Z4kcIao4BGhI0@Hh3=wUGjV{NYdj> z`j~uyp`}HzQo80vvrmkBbW8DQYv=(XMi3IMqEBoxQ8KEH;CGVCchRofjPg}~*ZwAs z$?0nz9qZK<*?=Hg1?^a-_-Qkeyd6P%hTjx8-Qp?&Q{IMFDnPuAeCWE5<9WN;IpCIy z<{Q`$DKsa9U+!{swUTG7$9EbYR|xNczg3Z}=G`BwdTS~6`LS$)R*Gc~9NzIS4p!y* z@%;-mBRbINv5p$oH=n6Fh3&-K?Haw5TIk@gb@S%l*`!V{^{g*342F9k5frS|0geZf>Q~v^W3C0OQ4=}1APs8#bwl7&kv>1z9J#!8Vx&urG!r<4GbFM)o8)qIE z!LhnG)r}W9Io@s{Vl~JFXl(ymzk?6h6h358$_r>;K-dV1(i%Gg@tAjbj6Ne8l_tE4 zH64vX5j51Y+IM>q=;Pt|ooG1}MqICeX4O|fFV?pW55(cR1G-9RWrkb{?ffLX+8@{q zG!Qd*zTXT4W!4h4hC)xkDJM7B=oUBL7q3ZSmK%z+$lnr>P)A724o~{vqrxIGaFOU> zDJA!mf6;$TH+J?HL4HJ~*`M_lKRsQOgB_Xu`wD`}>84Pb73miS(m`f?lTBeWzDP@%1!%u95ZQD z4xBd;sqom>TF!Qh_!fsE;RLhsd%%x{zx7gz$QC66S*KP*Q4Q}8IP;-&*xefr_=J1` z_Pn#_*{osK##Y_yxispqvtX8PKOTR;Z!%>WH_d3}vqNZdO?n@q)u3+!A{R|n@LO;o zmv5kF*%6yaEe%CF0el&Lbqr#DIqzf5)l^8qnc!|?s3IH^2p{&>*|VjG96K#zC3Bxacbl%+`&A$F80~GG|>Fw?u=y_Gh zrh088I&tAFVCprvb43*xX=yC-@%%!M4knw^ErjiSV?KO~sMF^GS{~twn&4MJYvVY< z%h3w1RhebRlclB5Jh?d6+jOsMHzC`-6$Ja}xt7k5dU z*^UsKQ=5#v3Y(L18x@OW#oSu8kF-5-|MPE*hTJ8{BUmuKr)9eeLyN?|E{C__`{J6l zTT&^bw-5#v(2@BS`i2E#h6O6BMgW`P$3DYdVjE=`neJCWg*DG?3uO4f;7U|JUVXE^ zma;eQ=VfFme$UJE8?~7vo4#6Kzq+cC4u0QuMDzL~sy~^MZKE=-`n9qAAQbSmC|yYkLnm(ui6Nl-4w-%Mi$B)sL8pk_(igG!-bt%|b=#gTi3*^*m9qQiX_6 zIq;kId^x>&38ZFswn5|M;#oPpR_S$+{wY?Ffka{TiFNjkZuOZ8xOxz$QsFDWTb|Ea z4-5yp34Xvp3NpaXX|i?HKHOM?yA(3$C#n%h7T-G zq4$T1g2-D?iaf7ff9bg&j#`qqhIYb-wxA{=FBd>Go<7b)cT2EXR&S3-P*123<)ouV zA>(?{v%YCL%J<@S#S@0~&9j@YX^xd8Qpu|GL{T*~jbTcTa#+3Ki0-3n_&lsoc-wM4 zFNn?j#?HCLq#`ezC#6c6+0b4~5@$1KSZGv2JM+zRnYqDPCoNC(-oo>-g~1te?sar; zMOEpcCzzHjHqx<~LGqf6LQ?&O$v{{|K?Era>FN)x`U{K3hKNrM_4dAK)~|r^#$=i% zna$%e1l`79mS#GzQExr3{>Ch(0pThndMwsE3047No4l9)*mT0)OeT3Ehre|F)NAHZ zdix7f<*fjlEv=B%P37LzbQK7Ph(#36>JhtaZ2*@FSahSnats^Y@-9TrRXH~U_Ch%~ zH7(?$1(>IW6!bxqe)8r9N6?t0CoOS>$Ei96)qD$9pb!WVt-l(0uw&6x)LLE42H^?c zU65*7RK}<`eZuHzK@Wj_?A{O{{?rhpwY+KxMVub3Bd)J#$GN6XbJE?veH|!lJmUFL zrn~T~OF3(@qk|N5b;-;|5r(6>7^#-q*Hd+NMF2sQpE~zx4^4wUrc+gczKZcC*E|wC zX?PFQr6p`rOF5x8aV?X)ULKx&e^Rj6Pgmr@YLJnAtYwExl=p1F8pwLS1d1jfGhj`L zp4?0rAHPeysfJ5h0#*8I-F5mtj&9?ZDD*SG$ zbI|^8%QydCXV4Ba1T+y^PB}hdQ^Np$S3w0RQz(@0T6eXXtL9FSKI)xVHZ9HYaK~8{0DSFpKE~f zc3W48z0T%rbLF{(_6Ii(Ci-^#e-ixXYzOg)N@;|dWW#y)yI*(*uYk9|Ro`EnerrAV z_sH^_)J$TZjuTPM8q$DQf;YdH#Ytmh-OTDQ*JZG>?tS@(Ah?K3lph%DG^mnF7r%AT zFUZX)9F0{$+h1|jZlWf*&eJ9pUkDMSthOWrIk)G0VAb}oxkdI*VDs!aC}wu!xHtq% z^)2VR_Ybv#taj~&ZRsK_zg2ff7~Z(GkfN+-7rgPSfjJ}4a8W?l{|w7|C#Q1UXGjpF z&m#>a>5mukeFczfaV5S22$24_zjzaSKpP1m6|G}YfVjGvBeJAtsmIh=X3Ptqq$IX6 zdGTGk5~spMf_eaxm)J%;P~App8}=12D(MIIBLBbr)c@s5t0OBHJ@sqzfHzL8taFS} zfjgb67Z9r0cqo_W`y&UUjSnGXLrsMB$vO1F+Z$?8V-4fYNM@NUkRVH)K+boVa0?z` zESwC$Jd1cdr*6Iiir;;#BP6+oJH9atc*)`aG-~HFOI@`Tjq(t9{Rr%O1t@0yFJ!9D zQMgPOv7D!~PH$v%URu0`qT(Y#*`)5I?W3WMqX{x4JR^G1HWFhF;a7}c%^%iC3)#N4Ttg(2dt ziYlL7Y~#+NN`)NOt$njDawHJ|HjpA@wK_DLz+ekF8fUqqS0ztE;g6WH4Z?9u7=yAV`gy_i_ z#g5ULgtQ7wpB_TPF>xXxwJBg)3a4U9gEbyS+E|hr-7+&_O*|exJ*qgtu0zuee)s6G zD{BtvEV`uk(rm@^(;`o*L25Z9?eh+D!H$%&m_d1w2<&9QF14FIYO|9QCuw+?0f927 zoVI0)y}eoQC+nw!uJ${p0c$FJJYpTCcg4tV3#*r=7t?R+-?`mU9{ql3{h|lgKv+#3nKcZc?WJ7Gf_># zaPD@gqYQ|xsOZ52*pM#^rTGXKrD2h|!+WKXrv}nbR^h=ibHCNe`f%{_Sy)%PlurpQ zrkz(q_vjNlBcg767)GuamG{rgW#D32$MqEVL1r_Kd)noD>>rRNdHKH2n~PO9vIA83 zaLPr5)o=o3^%I*JfnMS#$YvHz5`^>(B1YojLsSU(_L4~O{EG(2+PwkFJ9^QMg1+YZ zVtU|fwTtk*e3pKl1~oJ);2PODfQ6Ui(EC0@uXD*Jdv5*UrSHT-jtQAVtMryKi!j~a z=+S@nC2O;av2p9MQ>ZQWiAQ#|`a$!kc$dI6n$=!MW5x6txXe$>Vdy8&ph*A$+ESJ{ z4ISG{pTVNdU>2h(P}rii4nIe;=-Z`>z7P=;KoPs|_kyK$&=r>}FuF+6xa3+L;HGvP zuuR{nO1vMCXy$0JKW*IdG7t}?`C`nv6#$Hh-mBpQ>0}&0EN#MY<-hx(qs~A|f|AC* z&fE-d?9XfN!(T!;wzXB)v|oT&WWEIkqbQuH1{VyDXcY#K&nRz!frxKxwW@>09Se00 zp{R-lpmTTPIBIEOgm>#*DCyVO8*HKu2HOIIDq%T>t>i2l>{tv8^h%RPkY zTt)`?h!Xe=7k6aJGa&oGNV^hzIqsxhg&lfUh$#wZbo#PHG_>>f;^*CQFvFG)<)2mJ z)`WY@H6T|_F&nP54lm)t_QRPn{0cz&}2`@ZeCrb8f{6G1KI zYSo`HNkOS~Xsw$8N@#uqk%wJI>mz%f1R(buH(fCLh9ySHvq%h?Vt$*>2O%b;hnzv3pTYV9<++x+h^PH;FXPmU*A5 zrh4mMz7~#KW6@aK2D9M_IXz2ot7@5$fE+5!A0nblKEK&q30w+Q{Qxo|d>O+qFoCeS zq%S`SC%3%Qh7)Tca_Qq!$d^}uY0N7i(a~@P4l@=t9zm0InPTzpHm@s4e2ilG;Uac2~6$wP`2dXy|+EoPU1RU3uS|A&RylxP( z2pc{KD50P`FwI%5n!({mMGmGGurYc*(LnPaUamG!aQtcGWe?OazK$MZFV`UGiSDPQ z=7x!CWfU05Pgu_lRH{nZC(+sbPEJh7g$FWr#cl6kM@Ovy=uz?xMVQT)15(wn#?UO8 z8WvtmY)KOVQH_qL=s_BO@Vlmy%}NE<8IX^zJ)1S6a0K1{+yJ` zoN5GJ4b}`Gr<)G%p!@?+ji4zrFTj6V7L~gLyQ1A{x9Z$4 z&}b2p%hj;?I0X}?yZqkMNNJ%>nnvNZ*6Gfr^yu%oeIbX|9<;KO2>kH!3P5=U;3TeF zpgieL#&GWtdW-m>Ie#2>-&MnFM=VtxLE)OGmEVfpwV5Uw_-$($u56U05+$_VKYLN_ zkA;j=@i0^XF&v&Gum+BIzLD`Mx5;1lGJ!$KdKIom?8K@pEb;&(+8WO>t3j2T8jNHR zW#(j+a&+$`LNXvW*Yf1)i2r`dSQjSebm2S@67$5;6UKK5d%p4!_Kwpr8+kcLa6FHe z4;@p_r}-LRKZ(m+y~*gL4xOf|wJE`eE@;;UzBG3?p&8!JUftNsh8x1JZlZ-h$Gs`Q zUX%|Pgx(~l+HrZ{Yg}_P>)stuV5NaD3K*xr3NiZ$eB1COYABhJFe+V0iqBEPF|~~Q zBztP5;?swZHH6<(Z@I_762}#ik-3EK&n}gtg478QK%oVWS4HTe`zm3?io{*!?+UqZkE1*#2f zIYptHq9pQ6_exI?L7?yV?GCeMx7ai3YULE-)rNnk(Epcp__xXJthkw=EoaeBiK;A_ z1aW;Ss3VmwHsxie-_fVI8aj-+pGQP5E{*}YKip4Vvs9{WZc8qlq|3KM#y!-XaSRhH z_$YmxZV?^oIFfz%K;zE!EbSw+he8E{*I_=?&e`3#rhKMP6wfgO5Tu}+-)%}q(e@0Fz#oV#Hl$%qWpo!jD~ zNjlP-Xd_9;{+^QdP)zndz3!&+ejhBVuw1jxe>ub?hngf~@M?RAdMLtx?G57W=-MtX zEi69M{bJJ%3XIhH2Nm91#zJvgMd=N=U+8(ME%f#u`gixT@v`7|>}f8uZQV` z!0s=8fg?2+8)>OsU09@)jHYEtEq|lGwe38XHrGT#+AG$XV8h4Tp+E9vhG zg^z@(SXb-s)uLBw6=2t3($<4ud2jj4nmRm!tt;Br5nibDZIHt|tJA2w5J!T1#YDM{ zbj_s|YJGjXpBa3$2I+iL&Fk>#^Yij~^_VpY=;10HP7*D-3D6R>w2dAv~@9(9~OJ zW&T~PUHE5os2>tPg1R-HD?z)LiCD5*J1i}4@1ta}CKp%w65xWmCTbVZIN$1!Af_A+ z9bd!u%htKmqQ-J^N6wt`=}!(nDPMC1JrZNnu-nurYT9+UTZcy8US&2C(E+~jdCxYZa`a0+I;leY$Bf`COFBv9f##wcVtR72XAKaJWpGW z-~=32uy{NpM)$qom{t-!+> ziHCaP-zY4dW_|h%P_b`T6cs?8Qv<2ejg;@FM7>)35}cU|obTUW?IpoyID!6F>KsOn z~ zN6AMS#1nGLE{zw>(y;|ENiCDU9d>I9`z`AXwGtNrE}|95KB*ArX~~oIaRhYH4v`j_ zAg;Y>*NpP_mluNMYN}e%3T-YNtV#DYpXSvD8tNBVv-cZ}Kk?zm`fw=Nt?;Ga!CrOj zll$E3szr;Df^Z%o)o^-*U?DJ2>jQqO&4rt#>cnY|qkz}<4y05Dp8|^gLpYV`?^Hg2 z3VNDQH6Zt=iawcUQDowGW?9BKEm@T#r*!tROZxO(Ms!eonj@WXta#)YbihfVJlswa< z$fAB~;O*V9mmr3B{!E?JsSyrqm{R|3q>C>!V`4axg_fNb0|FFNruju?559Ez)zsG~9_3!Zzz5HuD zfUxX=XaF!sFfbTMaL@+==ZzlBo2 z!QFCxZR1r5R~+0C+5wJ#H?aROd2fP&ZZi^X2@0}*{{M>oivMxt*Z2QZFfZbCammpi z$9AVbI|c1G7OR%))~N;Yr!Ot@az#PmHy(Xx1y^fmNEhVK8cr_zlqVyP+l_*!!k~c- zq;Q{<%*cT@6N&7mPAs5`)P1Lxb}D)=mO;U_6&HGL)(_s7xiiN0;Y}qAVV*s@q5D`4 zocxh8kaU3gnGdATZfd=RJiAf$q!kr4mfPT!-Z8W|-w;T2ql7kYE~KXJcTM1fxkZBJ z8l2Eye3y(mTvkA+z3pw5$9T zPTE(T+;Jau?ez8rX%*Wi!!f*;gh4D_9_Xtc-7@XW6vk5Kp<+>XS?WGb_6U?z=#@3wD1mG(mZ(wo~^Avw9J0Mt14+ClocBp3T*lN521RJf3^Y!~w z*E}K^sRy1Xo+vBrc*2Tp)lDw3P@H4)JHL zN8O6=js2?@C;K7_Kc3r4Ujc*~g)y+5DBmy4RvgCT@|B5a2c;v3&^iO`wp*C2ou)Kh zYav4qZ~_b9luxb14Ra?@rLpeH!4mIT%tx=wfto{Gx(aeuVGOocjrJ(dD z9%&@Z>as(kOTeg7kv$bdtq^Yv=8n+DOdeuerg7&g?FvYt6#`abeRD@;2uKqJ*i^h0DY_bN@Q5}-s7ZvUvGA|i%+?PZlIn=>(ttNg=@ z3gq}U8bkdaU3Y*qW<#&w_Yl}F0WHD2x}4ATxf8rM%NHmpYG;3y~Jv(R%Sa1vr+J3oH%QbDF5f5^Oi>1r$abXRbA_zEyYDSoUaDrr*c z(rBdup}#Su{NFy1S@orMD+g}T$S8swHT|L`bX}g<0O&w6ZVA-O6=|Iy2k7WOZZPnA z>>l1nmCQ)b|9OFHY4#_<`@;A?-q|?#@oko&h10aUx8z#vsa*Aj>HAS@h0n5oymT_b z$&vf7-1@&q2WyXa<~v}+TXP11yt6@POxv5~ zH2rVmMXAe~?8*N;`kw~>r6ql@_ce@> zXn#;W>&2&g^B`Z{lJKL{%Kys;s#)G{IWlzPj6u0Si0aQjNU{9>A5=8m%aC>`58sp9 zkxgMiUg_%UgNxIaDW$1tM4Mn_PH2PA9@@zqchgfcr;*M0b@?p62=_$WpHmhaZyTF_ z4Qes>qQKKS8FgUAhiAk${fwiV;Qtb6mIdO&3Axwo!2Wf>^g^D%L=#_$_5#=bOOU`2 zURHWKU+g%*_^jT~5+OoRIgPa09AQ&po~1|kXXCE$3zrj}Vq8opS|qpRJq3>LM({^K z0CpXb`wUf!jN~S$uWazxJlfcXmVqD7FrvTvh!|@<*{U}`+(tEM(J^L0^KESq3tZhf^t4F z`6B;;5BrY^hsxB|#L8K%Nbb#3?KS=ydRGVOv2i`?R)3rU)8GdhfAtr`hETs80#vu9 zGHpIpc;F0zk4Xlh7|R-GDA_#ijat5VQzxSr@wiZ7RJRnsL&QunwYL~g%Kl@233sf2 z66!@=KRf+Jo$Md#5l;?$57w&Nha>dA6mWFxepwnp>o zaPm=BDiU9xW@&YxF88>L$Ua0)21ECCP%^!OQu>A5^y)HcL1L1&ybK5qjwY-pVyR|W z?aRHMGu{G(keMlJ?sP&kUAH1(c^i@AW`EV_D`4L|1q6ZkAg%$9axZ&Och2F$Jak zl;{<}UxwJfuoAm)j{M1OXmJW4dQMzf zb3a=wFz?Uc;brOi|4R_h(D{rik}keh@SXBs1qzM22MJinh`tY>nM^NXXAI^UstiOPw=W{=tCG!SS)VV;rU!(m1J#T?bh zA4V5Futgn5G;DL~bnG{R*7=NwaYKzD=FvFJN86g~8E@dKZ~20N=@sx(%XS*(dT@6G zw5nk3nux*Ey0S*Rv#+y7t7E-tHGBEYy3_Q@^A|xJ!w3(9dEm^*N-B%!)sr3>3b-PS zBu$M#eW|PdO)*CaCg+7-0a?@O(VPD3#3k<7LPq1`qo?<#NJIUZf3jwM>MtA*yFNo} zX_@QyuYd%Ht|tYuflD)R+k0#Nm=9H|f07dyx)tqw^iLXP)@ot=dWRA9#61HR*W<7yCiju?74 zW#(JA^QCc4cSY6HTJ^Ny!+)Zv%HneQ$q~@3j*S{Dg>)p=c#w4$&jGOoT04MA`2W)j zAkmjFNc08r;s^%~2?Y)fa^MI6fC0cE(3BuiyU^bN6_xGd;%mrQg%fhONLfVmF~}W2 z7ET6GY(oCEQ$4_^jPzOwQj0Y%XAjEX$j1wO>c5MSZvKuAJNo72Ivf0b z%px^0?LfHwc7|Kg|A^2H;m_fkqh4{j^Z364kYh~EC$~k@`|<;K`nWF?_}<50{@VzG zFJ#+W$An+E_T|5^x!wq61Te6kEQe8Ha;h>>2(f$mQ_!%O6#6)Vb80|KSpZDku<3dCr}J!N!)Z z;P)xin(28hjiax^skR{9X~FsQdwl?9E&*spa!h49^peZ$4BqUx*Tr`=rw7_0vu>m^ zqi)u-Dz3C2P~x$O8A`5>xy35%H<(i-1E?$e)S+HBdgkW1r zpb+=I0t5|2FV)y4FmhvSj(Da(a7B9iTd0j-3n|kH53(w3&zsDdTTN56MKVETypwvj z)&g$xP%0mlIP_A|;2zHhM8!m@UXVJV3B(OTUje%@H()7p8tkpTG=S?zj;3^|Q=?AQ z&@QfG7gCCQzXkg?f58;7q!Sd@1cZX(IHsv+$Q4JP6fvbB#nGcJuKi@Q};C|qZ-Zxsphhr?MKGX@5rBiCma=cPw*9|Ix{wic5!4#*1a zv*%)R?&>1qnK6}KZz7Tpd`il>SVrF7D^#EkXJr!{PAAFfA{j;_zDt-CqLu*&8L?rV z;spWZ5Yb5S*x}4ci=!R=(*1afZisQ9TSd9)jMI!)b1ho|jvcFQK_|BK!Zcj8Ei79B zc`TnD5!SmU#CCaUx-Ah|25=O7>XYN{iUNfCOf2=A+s>pAPG@$fn%CYXI)-#dLZ54T z=o;yEc0I1$@)^jRN0Z)iT@!^?o{A8$h@>sKpC&DsoJDZ(^@8dY7;FbNt(JoK1a0eHkC|6U1FIQ&ws@)QR1zfS~4@#{WMfn(AfT{wY*LV$B_--vb2ALmB8Db zXWtrOi)62!O2#&pG|EAdM9O5pEt2`6Pf&_5*+hK%yx2JB1bt&$dP9ax=XfFh2uB z9+B+c7z_B~>1Fe)Q%GwHrFSUZg;?h?rVk8AIw>TsPkkjG*unFTSc%UdAgnjS5OVbO z3&EONodi5wN;qU(-t-3~OP$&t!nxxF&!gTE5Vvs0m77ssna*?t>U(MxfltY41cprw&hZc5c z{UnTT$iqNPFtZLR*%15F^t2w0f5ha{LnP@Hsbq}r)Y7i->{5=h?Z3$mmN!qE+I!TLfL@cJC_iM1>MfB)pdUGjgzyvPO zB)f9$B6jUY4RGHTpM~pv!+YXV+ToTbBPWmSsMb$Y3Z(HDkA5p~MDr%DcTEv@DzSnQ z5qf;T&XhE=zyj5v4|VggURoyA5pgL*Xv_-^K!_1vdmkXIv%gpW1JNRU z2dcvl$hVdpR($GI#L8|OIx|Tx=hSbpG?sCNs~?VcP!=0xwJ7)oYD0{yOy z!~98PM3(U2*%yP?f2p;kMa|9DOZ`hus3@wQa0q0mfxPAC9hTfZ7XCfIfx1Mnp?8)U z`Za}O<|u6Nzb90Oh3D}tD77|#oZ7cc9MtKS<9t14_atKb2i1XjIx zBdSI)&-7T%Z-Uiry;MHC0yB_3=C-C(MuceT8Pe2epXg+_A9C4A;tDE8NKQecP08Dy z(9PtYL{8eCgrHVuI}aJ2W%JJif<(N9%~>Yhf4}gTTdjf#_JAlTp7!_YeSbYDrQ!|U zeG6{cAQ$~CiQ3Kz>cPDjy-zU(C)^e>usTxr0%(*^>BSv|0^$T99M)1!f`#2zzy}Ox zoU4JsJfB?-i5`!qFGt%px#z=#D1#4KUD3r4IZouecfDUOZE~jvi~LB)k3!$k%;6Ig zu9NS2GdMOwJvXn3d5$5IGz|*w^-O$S&in594!oWuMs~OB@mGI}F{P(m$xPoha~y3# z>`}>@kq~Wa+IdTL>jeL6V0&8QF|P}duY@hy{wPuWo5y2#s+Es;8R!2fu-jvW&c#@!vG>oq|*0VNT%C|D4=!P*dore=_>u-@X z*r1+owzCLlvLgn8D9&Lso{?j-)*Fg%;82Zh6V;F^=!Q)n5;~BHN1UDH)*0Wz*O|Ud zX9s(aJ7j6^Y}*q3Ot<^$o4HH#DL3aKJmiRuq`3G$RrFHL&k5%;3F@gp*oRi}`jD0+29*UwX%&qC2doz?l?svb8 zcni|`s9f}~8290sM->#%!ds%faQVz<2W!b$&^jy4H%KKnz%+kecDPiKP|7bLt?Lsk zb=xujoxG8f5tQ8OcX_jl;+8UsIv`cqz@h}Hd+a%!7xr`_I*+*~!Z@D264C-Fc+hhe zmdulNbq+Bwqj;pH7u_jKD7ukrxhHjQ@bs#F$V_?}r)q%Kllm^;Lkv}pD>S)-Ow-|* zFC_>gO0##*8HwFv$m)OW37vUj<o@8DH+|g zbWgm;i>(Z1MmJ5zT~=W%2e+x|`@TPbG0wh z6x$mqTUFJ3nOd+SG9#XX8l4YK`5LO>vJ#2c64`?zWi(Vp%Jmhrnmz@5jakXZH{uT? zJ{LZ5Ra}}{AZHb|8}jwU5#F8ycTe|fB~fFpaI;fJ)?@fa0vUNkd2p&6EG5w6ER1@o>nONY z5sk$e7`X~>z!__gP~%5NJ%-LWn+Ysnt+LZZjaA-1!|f;740dSPzA#_H$q&dEi`%{e zF6oO&!_S0SW9Vv^A1WI2Xz_jwGtmg}%%{F^Zy3o>-%#Bakr|}H4G$#dza2Mag3S^X zn(vCks`9EXKs(GVOn#^tf|hZ8Gut2|&D{Wn>8>nuffyUcA#cymFcFRuAKswCui;O2 zp1xgPR5k=(!KoRa)OQ+8{MB%3$xqcA$*jUmA+8n2IQ*gusSmi}>CjzVM~y4p!sD4X zPFanGsvzU;V2Sco*OLSQ@z*WFMSY33fgOKq7so@ZD;+p{H2qPRfSw!E99 zqg+g@>41gy^b1ur?o;i?lg8O{l7K*yj<=w`*5NT)=|jHN{IWzCnYruH-VcLoE;`yY zehuu#yh!fYZI5Ye8VgExcS_>@!YL8fa5~LvWhvH1HlB0|SQ*!5)2F=RL@u@*k<#VI zCBe#;lB5^ftBVn#hZdHI(oOSrC9`Xg_bUqaN%PD zeIKToa%em)DZh~oIvZfNF0P0-y#gSAN;esOECmss<2Y6)3qh$zvpaHcp9>R`=oe}zrspRtnnifRrVwV@m^`thN}%#Li6nP^>Q^`yP6D78EMh&=w!BY&Jmlo1osrD38z!EJIywQB7 z%dtUZ)BGXqSHLZ2<~{zgbx28Lb7Nw@dg-(w&N~{LXMUyB3n(A5YxEhb{LDUSnW0<< z0vgTPJ#s1edVT{}JUJa@xTB!&JK<`i%;dQr@Jr~W6wJ$+!WqbHJ$Y5Ec|8KGT!x?s zOhjdr*o>&kO~pEoHjh@5ax26dnsHlY-W%iNj#++rKe>V~EW!FUIT+-AAlN;BrIvXf zWI-Fj(f1=>6!Y`v`l{T3+gqk$&<X?%X1dMA9al*0Fy?{sLHzHX2Wx)CyGi4dT#x0-YGSJ-u6>5zl6Bx0 zlqjmm`q&vi z2@slqv;>Htgd$C$ujvR`w*5nZ5Sxx%TXP_UwT{ zLX%4r&2F{Vi8bpn1Z3sLVH$k5k&_&L0b)8Ol;JiSiN3#XoMd&v1s zOD`a&z5ABnmpTEP{Vyd>^G`fm4?pOgodohcyLfxT_q(oR5wAFEda5IT$BXqp__-o} zM`nafK#SyBS$YPI92PRmxD8xc39f_a3rq9MO=;wp;W8%2-Dr4l<1XIBFLYZJqnJWo z$E|Jxg1DXp&)$gmt;r~r9rRxS(WoaM?f-mZ`9~UmG~pM*|Ivg$n(!a03CiW}+;%@S`nVj!=2nE4A4D1m!=X1VO6VlA2zxmjQ*q+FA{lmd5)gY)oj zCusJ`^ep84QtGG5?pubg_{i-Y`E1QKELd&-@cCSN~_{(Ggn0hC2;_D>~82Crn3d@@rLtaq|sL8SFN zam9>iP-H+^1X!i+fjp{)yae42;c> zhzIr_M*Ut#?Tma$Xpu4>d47nZeby~@8Ev+H)6mV?g@AN1tpM-7Y1cvYmKX2*eq(2_ zx?$g5&p70C#xy&}_JP4fI|5`*QMpy-M&3Sgo@^a|I9MPI9MMM5q6geQ`$#|dToQXt zPr%p}{6PDG=LGDB%k&e!m}h4&=mVchbG^i%fiN7UczOH-TtI@`0qDxe$ z^~)0<{dWuSVPg!UvQ^U4?JoeiC0~vBR9%AVZ>|&Tkr>bJP4}t&{XI&_b6bNoC-{X(-SDnf&Zjix-3s@TrtE*oy z06~56i1&=qJZxnZfnJbuqS1ugUXNdD+`b^U{|oTL`nuqzgOX9^0|VFzr(Tk|Nn>9I zkJ0@oy+dq9nPX$870lkxi5GdMxu+U_BbKu?{4{f~ohjV(SZu=>cwSN867alJsB%5} zLyhZLZR^`#^Y7`X`?f22UDoAOr(k^tZ?De7^z7iB#6A8}A<)Y);YlqI(`T4al3QmO zX6iW!Zhh{B9)N0ggO7IyNs>AIuwFwVM7#Smi#sdkghkX=RykCIX{_=-WA$ zHoRdFFcr?zlN9bx?%-!F2>t;6V1r@1T@%z*c=&r=yLP)8hOHsJBp0ei%5`#`*J$IW zswc0?jqc-zppW@J!=SZvA2jz`@^C+$Z?Z}Lmt*#MdLU31xhN^ndMW+CeurwIS)W5? z_*gxSZ03?EYT~c``IJ-zW`Clvy?uoAETeji$S;OyH) zPEi(0_I=8*mqGp|&TSmn*f;4=0$)DGZp}+NAL3H8UlP#w^dYvEXktDX;TG|${t%Ds zApx7W%=24$O;3|%o!k}&Ll5d(Cun1SI-V$9&N4kVg-AL&V`qVeL*|?mt0#E4+l4s! zj^7wXo&C*|vuY-)f^9L`R;Zr;RLR$KAL2YbPmS7IIJJ$FRO)eRfUIr`V z6BSv2b#ZO7$Ez^~l&70mWTA+8Pey*@eaM>vhMH}K?R4B2yKCE$aCViR=e0WvxV$C)Ea)6BxLRn#T%qVC|0p-#yVZuP?-x3%^1SDt z`3gx+T_uFT5;bETr<`Kzc_bs2w%#SEe~incHoz>B{Kr2;*iV6Vb;T22vS&%Jz#H?M z#jB9gcqEi}4)o&TepD`R zDCgsmEk4$`f9+{YJuBg(rDY(;2SNvf{xI={C&;Dz%m0?r$wSOzfRNiE1DDI$4ZnKkuZh@SH;w~55StaPCu3O+jJ-0@Mm$eEKDq#U5oNde7>s-V{c z`#rCvKSXjck#F7tkdNct96Cf@i+n1T zH|s={w{?87mXm4@-e9a2-Y4m^+sE~TN7g-Z@N z^3M$ASceQxzr%o{cUK?!AjaRdQGJ(ZUreFc*|oW9MU6{VzomFBvPADJv7De3_!nTo z<<f5G9fWgJ+G}OdCm%F2bwJd21`|2H1XnJfX0a!t?z+r<^q_i)vIKZi0n~x}y zyY+IpU=MX2EAMF}9hzQLE&X}5-3K@S9vPH; z#@%xxk&i8)4k&C@j_bP)9KWnl#R=(?fw`HNGY34UmFyUahE~61=oMYzm`1)u@M=qI z6DH#H4QW!)q;TrTfVp6IGr8o(}cwo#b7#m^5ra69D_RnnJ(q-4Fx@^=)e z@pB_sfc<>*35ws=Gxu65-gzj`Ju{q+JU(a`aQ#TJRoSQzCyUWemH(6jJzd0v*wOJY zXIx>vTuM)Cs3^=(Sl>U8v4>rhj5-$OG$tCs_mhSRK72uejpJfSSOCk7e6}XC_t9Kp za`xVeOvHHU)IKyQe7|e=;0<;otiW%-#V11j!(7v-HH??A*K4=&Ti+Y6N9eA;!zp_y zL{`C_gmWk%_w?Yy;roR9^_KUjmx~2-BBDMsl#;|h zHXCC^AEHv)ww4bRcJ(g4>O%czi2804EU#xfpZGOIy?yk|Of{rxgjLfg3Zs~>8G?xu z@>4SjRczy|q-ou|&+q6vyiK7-92Z&2RLe9naKbz@?^`Drd*c5h1o2`I(Jdz&i$Ap= zBYk=}?@V7A&SJr(602lW7)ob2;2Gw>1<_y`FpB0+2}+6jD6lfFd~$_qDBrKdk!p#w zDFW?aMd=~W?NjiX2rUs8W2&sP{G4O$29fCavfLGx?@lSn4vs0bO(na{^!$BNuR7yE zsTEWO*p)VD6yVM%C^&a?#Q>PjC_2_89aa%(Wh*M@V`t$6t9<69t1m;s(6XNu$|g@P zXn>DG>tbZ-Li-I^{hs&Qo@z%So|dF*yM)J2QxZ`J>)xZ-E%RPiY{~Q+I-#+1M|UV+ z=HIDpgUw!`dojYJf1{1qR%ibH+!{etOIsl$&CU9oIsR=Za{q#EqiHc6B?jC5qD=kJ zAoU|D(&iZmazI6JliPRA&(Me3Bsx=KUl>Th@}l3Z+MUPG6lWvu73?rN2UaCp>0sJJ^T^R+(Su$Q$lDPHF*HSX#r^L=O%Z^OX>!Q0)weCwH zK^RBZ^PMBo<@=JohjR)HhQ=Pb{e<8bdy*(=_7|Go`u+VBKAUiFw8?>S&+Gek*wM6x z6+1O(zP4UzEMe3c%U$XO-MX}V%Fi13=5zj)EZz_{_tU3FS+O7G?sGg0pGjfhe*LZ7 zA?Kt}WW_$CJHK;5&Xzag)>?0fQR;C-8C7^nvyA+lJ#$nafE);L)4)d*42~=C%K-%s zC8+6YE2;tlO9>9z4#J8ejkUj6y#rE`j0~JJf6kkh$+8dh@i*_`hIoCJr?l|%a&h~n z$dIZ;l0>iXTwLW75MGqPcSAe*K-F3V6LUulP)fm3%yPFz?}iTMHG4Mc9N5?+>mKlg z6!PFs;);KuSvz>1oxUdr%A;#OEeEC=rt*^_PH8z;>%S^}2ww|p2uLe}k_aX)ZG<|dn_7aTBB*E#MJxFMfe!Pwlyclu z4;{K#yuZw*oTGj++eMg}DRe35;Qi2L=sBvMUOl&Z#l$u5{|{n)Qi(2(SXbnn{$|iU ziMvqOW`=y*=&T30R5V$ldIsEGJju<3U%op97M`-veqzyD_fP+Ea4&jvN*6Ct9rmRs1VMf zxH+RCi0rpC+6zTf!+(NJ&D2ukTVa`)({9ndG5m2m!N*BEmD8=7V5ⅇEv$wA$o|_cEy0_!W|fR+>ySK1Xde zSdM&wkzc_+cL47u$cPRGlBs8ipeTmw1r#%q#4W zD*J#WlWCGR-HlbA@S+ShNel00<6D^Mm$~C2cUs`&nzH!|eVTJ^!e`v{!{5;C{me*{3 zvS6f36pI@4{I=bidxQR*|G>K+9j($-fqkfH5mvQ9&*@UcK&!j)ti5FmYzGdUn>;bk z+I0&Q((!A#o5j0@{Vd#-Ap%6&71!Y^!2KQJOiN->I{zficwqC!QB&CC zj8(_nj~Bqzho4Uz5ecti9F`q>GJZ)xb7ne1YY5**v_pAFX*D_L#jgBFK*1}6V}+r! z&@IM0e*uIg&O{1(o&DsAk|Q1|4LQ2H8g^Ue3_D&FOVAP|dN>r4tY0~tGU|V{l8Mz^ zg@oxIMPNZYpbSG~p=FWHtC)^i^)F+LNh!qdN-L2Xld>eb=M3G~4X4|V+xOr#2L_hD zJYFiF?7A*gahWp41{v7s-`6pvdAf4PV|!mRzCyxx8Bie>-a0^I`{6h1(6iAeLE)80cAD_M+2zLHVj?3IEeO{}+c4j7#+zOyQ8ETCqx znt41eKP}lJ%sEVX-@?^oa!;ap;_ZF!c-L##oJHoZc%$2rs ztmH)ECkaPt%%bs$nEV4^Gpz@zK1jboe3W3eJ7hQh{tS`6yA5 zAc;~^5j8G$%SeV2O;gnk7<2Q(4#P+K-0;a;K0QCImw8%BvseTbbSq3JtWI=5MR zdz_@lHqP-nf^?Mw#M~$i>-p%+`3s@_$eTor(G$YA!?vxzU7wXl2G(D$&EYOrYVY~( z^Ad~JBrHL_eSB$m>hl9LA~^@<#Vv0hyU%v6_VI9AGb_|S z+S_TU`>Q%ILCyNZ8j=4jYxPX{&tAs)C?qDnl@^maD zd>bR)<}zu}E14aLqOOq7L_b_vTiUwXjxVE_aHYJ*jC2fK4QzBmeRRM&dHyC#$ct~}4Z=2Xa+ zh(b?j0R_9&`La$0t56z*;TvLoTFR(q0AT2DJ>7j5|KU`Tjzu`ZoD`FQQ(#E(g65o7 z^O-Yhl%vvLwUp?mu`ly69v@ihjQ4*HDlesdxJdlI8AxRH{E6_BvI$%5nf2((@1A`t z6swkT)w@Q(0aL%KtkqkcCOSU!52|_E66&XD-I>j}q^oT0`aG!TT^SDB(NT+OwH*@B z+fh9Sa(C!TLx(Xwrj%SXLe+_c$N$*Ef|{9IyeDT(i)t&~Jz2MxYDHhKrcQf#NFhiq zlhhZ#co|_#Rm|+FV`x0mM#gQ^a3Q_?t=7``1(Vr**RNO&1v;0#I$6IIikIfk~nq!ZPLkLyi6C0QoZoubj0 z_9hGSD(%NPjO@L+2c0jK9`1dkXq=j&UV6#l!X3ILP@eR-y)6|!%1x7+;sG9cv=tkA zm}K+e*YM6e(Rjfxe9jhUTE=eTWn>5i8A?-a`@h=X3*bSj2^BS~9b;1FT~;~sIG>IE z@?pu<#D=&7@~FNot?z0;Bsu8m*vrmJ_W}g6x>NU!Ls3U@7b(qso7~wV|j2hE-rqos5ke*wOC{ah_I^x5cf+%9Aw_bHUdOaI1Q2)G8~LCWTl zJpC}7CDsklrS&LEGn5rrlai@toN*|#BX%7c7*BP&B{IZe>#p8(B>gv-e)n?dQC;4U zBawiLcmb3Kl*~;`DN(vMVMXN+ko%#B4o25IkOw+aB1`433be_?0uilr^QUIcL*Js{ zbEbh?is-IJTZw8v6*8jmS_T`bIA(|LN(X5Kk)a9+07yyja_XLht|^!5;QzZHRx(_+ l{OPL@?!}I43#{8gQ|~IUO`{L4LImahkpD9|w1oaO`(Nz4f!qK9 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..3055cd4 --- /dev/null +++ b/public/index.html @@ -0,0 +1,111 @@ + + + + + +Web A Skeb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ 🌐️ + Magic + Web A Skeb + Screen +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ H
+ V
+
+ + + +
+ + \ No newline at end of file diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..605d1c7 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,21 @@ +{ + "name": "Web A Skeb", + "short_name": "WebASkeb", + "icons": [ + { + "src": "/img/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/img/icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#991111", + "background_color": "#991111", + "start_url": "/", + "display": "standalone", + "orientation": "any" +} diff --git a/public/styles.css b/public/styles.css new file mode 100644 index 0000000..c7d7f30 --- /dev/null +++ b/public/styles.css @@ -0,0 +1,212 @@ +/** + * Copyright 2018 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@font-face { + font-family: 'montezregular'; + src: url('/third_party/Montez-Regular-webfont.woff') format('woff'); + font-weight: normal; + font-style: normal; + font-display: fallback; +} + +html, +body { + min-width: 280px; + font-family: sans-serif; + color: #333333; + background: #941f1f; + margin: 0; + padding: 0; + /* overflow: hidden; */ + overscroll-behavior: none; + user-select: none; +} + +.casing { + position: fixed; + top: 2px; + bottom: 6px; + left: 6px; + right: 6px; + background: #ff0000; + border: 2px solid #991111; + border-radius: 10px; + display: grid; + grid-template-columns: auto 1fr auto; + grid-template-rows: auto 1fr auto; + grid-template-areas: + 'title title title' + 'screen screen screen' + 'horz-scroll controls vert-scroll'; +} + +@media (orientation: landscape) { + .casing { + grid-template-columns: auto 1fr auto; + grid-template-rows: auto 1fr auto auto; + grid-template-areas: + 'title title title ' + '. screen . ' + 'horz-scroll screen vert-scroll' + 'horz-scroll controls vert-scroll'; + } +} + +h1 { + margin: 0; + padding: 0; + grid-area: title; + color: #eee8aa; + font-size: 8vw; + text-align: center; + text-shadow: -1.2px -1.2px 0.8px #daa520, 1.5px 1.5px 0.8px #660000; +} + +@media screen and (min-width: 450px) { + h1 { + font-size: 36px; + } +} + +.screen { + position: relative; + border-radius: 10px; + border: 2px solid #808080; + background: #c0c0c0; + grid-area: screen; +} + +@media (orientation: portrait) { + .screen { + margin: 0 10px 10px 10px; + } +} + +.horz-knob { + grid-area: horz-scroll; + margin: 4px; +} + +.vert-knob { + grid-area: vert-scroll; + margin: 4px; +} + +.controls { + grid-area: controls; + margin: 4px; + text-align: center; + vertical-align: middle; +} + +button { + background: #e80000; + color: #ffffff; + border-radius: 10px; + border: 1px solid #eee8aa; + outline: 0; + padding: 5px 6px 5px 6px; + margin: 5px; + transition: transform 0.1s ease; +} + +button:hover { + background: #b00000; +} + +button:focus { + transform: scale(1.05); + background: #d00000; +} + +button:active { + transform: scale(0.95); +} + +.title-globe { + font-style: normal; + font-size: 90%; +} + +.title-desc { + font-family: sans-serif; + font-style: italic; + font-size: 80%; +} + +.title-name { + font-weight: bold; + font-family: 'montezregular', cursive; +} + +.active-sketch, +.erased-sketch { + position: absolute; + top: 0.5%; + left: 0.5%; + width: 99%; + height: 99%; + stroke-width: 4; + stroke-linecap: round; + stroke-linejoin: round; +} + +.sketch-stylus { + stroke: #d0d0d0; + vector-effect: non-scaling-stroke; +} + +.sketch-path { + stroke: #555555; + vector-effect: non-scaling-stroke; + fill: none; +} + +.fancy>.active-sketch, +.fancy>.erased-sketch { + filter: url(#pencil-effect); +} + +.fancy>.active-sketch>.sketch-path, +.fancy>.erased-sketch>.sketch-path { + filter: url(#drop-shadow); +} + +.fanciest>.active-sketch, +.fanciest>.erased-sketch { + filter: url(#pencil-effect); +} + +.fanciest>.active-sketch>.sketch-path, +.fanciest>.erased-sketch>.sketch-path { + stroke: url(#rainbow-effect); + filter: url(#drop-shadow); +} + +touch-knob { + width: 75px; + height: 75px; + border: 6px dotted #d3d3d3; + background: #ffffff; + border-radius: 50%; + text-align: center; + user-select: none; + touch-action: none; + will-change: transform; + margin: 0; + overflow: hidden; + contain: strict; +} \ No newline at end of file diff --git a/public/sw.js b/public/sw.js new file mode 100644 index 0000000..10b7701 --- /dev/null +++ b/public/sw.js @@ -0,0 +1,57 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +var cacheName = 'webaskeb-v20190108a'; + +// Cache a very basic selection of resources +self.addEventListener('install', (event) => { + event.waitUntil( + caches.open(cacheName).then((cache) => { + return cache.addAll([ + '/', + '/bundle.js', + '/img/icons/android-chrome-192x192.png', + '/img/icons/android-chrome-512x512.png', + '/img/icons/favicon-16x16.png', + '/img/icons/favicon-32x32.png', + '/favicon.ico', + '/index.html', + '/third_party/Montez-Regular-webfont.woff', + '/styles.css', + ]); + }) + ); +}); + +// Clean out old caches +self.addEventListener('activate', (event) => { + event.waitUntil( + caches.keys().then((existingCacheNames) => { + return Promise.all( + existingCacheNames.map((existingCacheName) => { + if (existingCacheName !== cacheName) { + return caches.delete(existingCacheName); + } + }) + ); + }) + ); +}); + +self.addEventListener('fetch', (event) => { + event.respondWith( + caches.match(event.request).then((response) => { + return response || fetch(event.request); + }) + ); +}); \ No newline at end of file diff --git a/public/third_party/LICENSE b/public/third_party/LICENSE new file mode 100644 index 0000000..045d0ac --- /dev/null +++ b/public/third_party/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2013 Brian J. Bonislawsky and Astigmatic. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/public/third_party/Montez-Regular-webfont.woff b/public/third_party/Montez-Regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..8790c908f32c45e951a71078487bcdf3a78c46f7 GIT binary patch literal 36244 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

hRgsn2tNtp8GN7Uk$G zXPq-nEd4#DVaD!`zSi`6BttzP;aGo{E3$6V`ZasSuAp@N_fKoT#wNejR{nLdIpSCP z^&)wq$EHg7O$T1fro_k=-{CK`@$Z4x>d&;{mv?j&la2DBjK-a#3BeavZMq|_{$H|D zHc7i|mMyG?FUVGTO1>!D;121Or=<)1qF>XKm-%H~^tbhX;;={d$}=(`&&r_ell^i) z&!WTf98dFq${`t%7gnLui)#*``8To6(q>B=)P{%z?y|Jg>RzKh>V1}?YronMktm1P zi1J?M>a$}tzcPvY@@p?X3*$Kux7AAKU#nd!`YIXsJ^0u7{xCk@FGq>lZlaKtV{+Vn z7nm46PfYfrdyhsfc^MS6;W?LRwWE{4!x7?UFyVj-QJ;>0j2bRhYkRY6PaO?nLrB{# z?Nb|)*RZ92t9z0RB0{Pm-PjP3sc*B?MXk&JH{HK#%srF1FOAMY$i+8Clkhvv!DAiz z@8U`PdrDqmrZe&ymcB0EK>C~VEn@cr=!pJjcvSy0oRFLHo_t+y$?uW)qx=b}5_CcS z3|*AJ$X$6;{tmq*|Aa2f1Nm6K|6k8#tI7ZX0000100000)Fha?00000%4$K>00000 P)xG3400CK;GqwN##w1#k literal 0 HcmV?d00001 diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..b888bb8 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,37 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import resolve from 'rollup-plugin-node-resolve'; +import commonjs from 'rollup-plugin-commonjs'; +import { terser } from "rollup-plugin-terser"; + +export default { + input: 'src/main.js', + output: { + file: 'public/bundle.js', + format: 'iife', + sourcemap: true + }, + plugins: [ + resolve(), + commonjs({ + exclude: [ + 'node_modules/simplify-js/**', + 'node_modules/shake.js/**', + ] + }), + terser(), + ] + +} \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..9d61453 --- /dev/null +++ b/src/main.js @@ -0,0 +1,28 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +import { TouchKnob } from './touch-knob.js'; +import { SkebCase } from './skeb-case.js'; +import { ToggleFullscreen } from './toggle-fullscreen.js'; + +window.customElements.define('touch-knob', TouchKnob); +window.customElements.define('skeb-case', SkebCase); +window.customElements.define('toggle-fullscreen', ToggleFullscreen); + +if ('serviceWorker' in navigator) { + window.addEventListener('load', function () { + navigator.serviceWorker + .register('/sw.js') + .then(function (registration) { }); + }); +} \ No newline at end of file diff --git a/src/skeb-case.js b/src/skeb-case.js new file mode 100644 index 0000000..3aba2ee --- /dev/null +++ b/src/skeb-case.js @@ -0,0 +1,222 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'simplify-js'; // imports simplify() +import 'shake.js'; // imports Shake + +class Sketch { + constructor(startingPoint) { + this.path = [startingPoint]; + this.erasedPaths = []; + this._lastAngle = null; + } + + get lastPoint() { + return this.path[this.path.length - 1]; + } + + moveTo(point) { + point = { + x: parseFloat(point.x), + y: parseFloat(point.y) + } + const angle = Math.atan2( + point.x - this.lastPoint.x, + point.y - this.lastPoint.y + ); + + if (angle === this._lastAngle) { + this.path.pop(); + } + + this._lastAngle = angle; + this.path.push(point); + } + + simplifyPath() { + this.path = simplify(this.path, 0.5); + } + + shake() { + if (this.path.length > 1) { + this.erasedPaths.push(this.path); + this.path = [this.lastPoint]; + return true; + } + + return false; + } +} + +export class SkebCase extends HTMLElement { + constructor() { + super(); + this._canDraw = true; + this._lastSketchAngle = null; + + this._onShake = this._onShake.bind(this); + this._optimizeSketch = this._optimizeSketch.bind(this); + this._requestOptimizeSketch = this._requestOptimizeSketch.bind(this); + this._requestUpdateSketch = this._requestUpdateSketch.bind(this); + this._toggleDetail = this._toggleDetail.bind(this); + this._updateSketch = this._updateSketch.bind(this); + } + + connectedCallback() { + this._sketchModel = new Sketch({ x: 10, y: 10 }); + + this._screen = this.querySelector('.screen'); + this._activeSketch = this.querySelector('.active-sketch'); + this._path = this.querySelector('.sketch-path'); + this._stylus = this.querySelector('.sketch-stylus'); + + this._horzKnob = this.querySelector('.horz-knob'); + this._vertKnob = this.querySelector('.vert-knob'); + + this.addEventListener('touch-knob-move', this._requestUpdateSketch, { capture: false, passive: true }); + this.addEventListener('touch-knob-end', this._requestOptimizeSketch, { capture: false, passive: true }); + + this._shakeDetector = new Shake({ threshold: 5, timeout: 200 }); + this._shakeDetector.start(); + window.addEventListener('shake', this._onShake, { capture: false, passive: true }); + + this._shakeButton = this.querySelector('.button-shake'); + this._shakeButton.addEventListener('click', this._onShake, { capture: false, passive: true }); + + this._detailButton = this.querySelector('.button-detail'); + this._detailButton.addEventListener('click', this._toggleDetail, { capture: false, passive: true }); + } + + disconnectedCallback() { + this.removeEventListener('touch-knob-move', this._requestUpdateSketch); + this.removeEventListener('touch-knob-end', this._requestOptimizeSketch); + + window.removeEventListener('shake', this._onShake, { capture: false, passive: true }); + this._shakeButton.removeEventListener('click', this._onShake, { capture: false, passive: true }); + this._shakeDetector.stop(); + + this._detailButton.removeEventListener('click', this._toggleDetail, { capture: false, passive: true }); + } + + _requestUpdateSketch() { + if (this._canDraw === true) { + this._canDraw = false; + window.requestAnimationFrame(this._updateSketch); + } + } + + _requestOptimizeSketch() { + if (this._canDraw === true) { + this._canDraw = false; + window.requestAnimationFrame(this._optimizeSketch); + } + } + + _updateSketch() { + this._sketchModel.moveTo({ + x: this._horzKnob.value, + y: this._vertKnob.value + }); + this._drawSketch(); + this._canDraw = true; + } + + _optimizeSketch() { + this._sketchModel.simplifyPath(); + this._drawSketch(); + this._canDraw = true; + } + + _drawSketch() { + const path = this._sketchModel.path; + const start = path[0]; + let svgPath = `M ${start.x - 2} ${start.y - 2} M ${start.x + 2} ${start.y + 2} M ${start.x} ${start.y}`; + + for (let i = 1; i < path.length; i++) { + const point = path[i]; + svgPath += ` L ${point.x} ${point.y}`; + } + + this._path.setAttribute('d', svgPath); + + const stylus = this._sketchModel.lastPoint; + this._stylus.setAttribute('x1', stylus.x); + this._stylus.setAttribute('x2', stylus.x); + this._stylus.setAttribute('y1', stylus.y); + this._stylus.setAttribute('y2', stylus.y); + } + + _onShake() { + if (this._sketchModel.shake()) { + const newPath = document.createElementNS('http://www.w3.org/2000/svg', 'path'); + const start = this._sketchModel.path[0]; + const initialPath = `M ${start.x - 2} ${start.y - 2} M ${start.x + 2} ${start.y + 2} M ${start.x} ${start.y}`; + + newPath.setAttributeNS(null, 'd', initialPath); + newPath.classList.add('sketch-path'); + + const erasedSketch = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + erasedSketch.classList.add('erased-sketch'); + erasedSketch.setAttributeNS(null, 'preserveAspectRatio', 'none'); + erasedSketch.setAttributeNS(null, 'x', '0'); + erasedSketch.setAttributeNS(null, 'y', '0'); + erasedSketch.setAttributeNS(null, 'viewBox', '0 0 300 300'); + erasedSketch.setAttributeNS(null, 'height', '100%'); + erasedSketch.style.opacity = '1'; + + erasedSketch.appendChild(this._path); + this._path = newPath; + this._activeSketch.insertBefore(this._path, this._stylus); + this._screen.insertBefore(erasedSketch, this._activeSketch); + } + + this._screen.querySelectorAll('.erased-sketch').forEach(erasedSketch => { + let opacity = Number.parseFloat(erasedSketch.style.opacity); + if (opacity <= 0) { + this._screen.removeChild(erasedSketch); + } else { + opacity -= 0.21; + const blur = 1 - opacity; + erasedSketch.style.opacity = opacity; + erasedSketch.style.filter = 'blur(' + blur + 'vw)'; + } + }); + } + + _toggleDetail() { + switch (this._detailButton.value) { + case 'fast': + this._screen.classList.add('fast'); + this._screen.classList.remove('fanciest'); + this._screen.classList.remove('fancy'); + this._detailButton.textContent = '✨ Fancy'; + this._detailButton.value = 'fancy'; + break; + case 'fancy': + this._screen.classList.add('fancy'); + this._screen.classList.remove('fanciest'); + this._screen.classList.remove('fast'); + this._detailButton.textContent = '🌈 Fanciest'; + this._detailButton.value = 'fanciest'; + break; + case 'fanciest': + this._screen.classList.add('fanciest'); + this._screen.classList.remove('fancy'); + this._screen.classList.remove('fast'); + this._detailButton.textContent = '🚀 Fast'; + this._detailButton.value = 'fast'; + break; + } + } +} diff --git a/src/toggle-fullscreen.js b/src/toggle-fullscreen.js new file mode 100644 index 0000000..49bf9bc --- /dev/null +++ b/src/toggle-fullscreen.js @@ -0,0 +1,53 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export class ToggleFullscreen extends HTMLElement { + + constructor() { + super(); + + this._onFullscreenchange = this._onFullscreenchange.bind(this); + this._toggleFullscreen = this._toggleFullscreen.bind(this); + } + + + connectedCallback() { + document.addEventListener('fullscreenchange', this._onFullscreenchange, { capture: false, passive: true }); + + this._fullscreenButton = this.querySelector('.button-fullscreen'); + this._fullscreenButton.addEventListener('click', this._toggleFullscreen, { capture: false, passive: true }); + } + + disconnectedCallback() { + this._fullscreenButton.removeEventListener('click', this._toggleFullscreen); + } + + _onFullscreenchange() { + if (document.fullscreenElement !== null) { + this._fullscreenButton.textContent = '⤵️ Normal screen'; + } else { + this._fullscreenButton.textContent = '⤴️ Fullscreen'; + } + } + + _toggleFullscreen() { + if (!document.fullscreenElement) { + document.documentElement.requestFullscreen(); + } else { + if (document.exitFullscreen) { + document.exitFullscreen(); + } + } + } +} \ No newline at end of file diff --git a/src/touch-knob.js b/src/touch-knob.js new file mode 100644 index 0000000..b775382 --- /dev/null +++ b/src/touch-knob.js @@ -0,0 +1,228 @@ +// Copyright 2019 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export class TouchKnob extends HTMLElement { + constructor() { + super(); + this._angle = 1; + this._canDraw = true; + this._rotations = 0; + this._scale = 10; + this._TWO_PI = 2 * Math.PI; + this.min = 0; + this.max = 298; + + this._drawState = this._drawState.bind(this); + this._onMousedown = this._onMousedown.bind(this); + this._onMousemove = this._onMousemove.bind(this); + this._onMouseup = this._onMouseup.bind(this); + this._onPointerdown = this._onPointerdown.bind(this); + this._onPointermove = this._onPointermove.bind(this); + this._onPointerup = this._onPointerup.bind(this); + this._onTouchend = this._onTouchend.bind(this); + this._onTouchmove = this._onTouchmove.bind(this); + this._onTouchstart = this._onTouchstart.bind(this); + } + + get value() { + return this.hasAttribute('value') ? this.getAttribute('value') : 0; + } + + set value(value) { + this.setAttribute('value', value); + } + + connectedCallback() { + this.style.setProperty('transform', 'rotate(' + this._angle + 'rad)'); + if ('PointerEvent' in window) { + this.addEventListener('pointerdown', this._onPointerdown); + } else { + this.addEventListener('touchstart', this._onTouchstart); + this.addEventListener('mousedown', this._onMousedown); + } + } + + disconnectedCallback() { + this.removeEventListener('pointerdown', this._onPointerdown); + this.removeEventListener('touchstart', this._onTouchstart); + this.removeEventListener('mousedown', this._onMousedown); + } + + _onMousedown(e) { + this._touchX = e.clientX; + this._touchY = e.clientY; + + this._handleStart(); + + document.addEventListener('mousemove', this._onMousemove); + document.addEventListener('mouseup', this._onMouseup); + } + + _onMousemove(e) { + e.preventDefault(); + this._touchX = e.clientX; + this._touchY = e.clientY; + + this._handleMove(); + } + + _onMouseup(e) { + e.preventDefault(); + + document.removeEventListener('mousemove', this._onMousemove); + document.removeEventListener('mouseup', this._onMouseup); + + this._handleEnd(); + } + + _onTouchstart(e) { + e.preventDefault(); + window.oncontextmenu = () => { return false; }; + + this._touchX = e.changedTouches[0].clientX; + this._touchY = e.changedTouches[0].clientY; + + this._handleStart(); + + this.addEventListener('touchmove', this._onTouchmove); + this.addEventListener('touchend', this._onTouchend); + this.addEventListener('touchcancel', this._onTouchend); + } + + _onTouchmove(e) { + e.preventDefault(); + + this._touchX = e.targetTouches[0].clientX; + this._touchY = e.targetTouches[0].clientY; + + this._handleMove(); + } + + _onTouchend(e) { + e.preventDefault(); + window.oncontextmenu = null; + + this.removeEventListener('touchmove', this._onTouchmove); + this.removeEventListener('touchend', this._onTouchend); + this.removeEventListener('touchcancel', this._onTouchend); + + this._handleEnd(); + } + + _onPointerdown(e) { + e.preventDefault(); + window.oncontextmenu = () => { return false; }; + + this._touchX = e.clientX; + this._touchY = e.clientY; + this.setPointerCapture(e.pointerId); + + this._handleStart(); + + this.addEventListener('pointermove', this._onPointermove); + this.addEventListener('pointerup', this._onPointerup); + this.addEventListener('pointercancel', this._onPointerup); + } + + _onPointermove(e) { + e.preventDefault(); + this._touchX = e.clientX; + this._touchY = e.clientY; + + this._handleMove(); + } + + _onPointerup(e) { + e.preventDefault(); + window.oncontextmenu = null; + + this.releasePointerCapture(e.pointerId); + this.removeEventListener('pointermove', this._onPointermove); + this.removeEventListener('pointerup', this._onPointerup); + this.removeEventListener('pointercancel', this._onPointerup); + + this._handleEnd(); + } + + _handleStart() { + this._centerX = this.offsetLeft - this.scrollLeft + this.clientLeft + this.offsetWidth / 2; + this._centerY = this.offsetTop - this.scrollTop + this.clientTop + this.offsetHeight / 2; + + this._initialAngle = this._angle; + this._initialValue = parseFloat(this.value); + this._initialTouchAngle = Math.atan2( + this._touchY - this._centerY, + this._touchX - this._centerX + ); + + this._attemptedAngle = this._angle; + this._attemptedRotations = this._rotations; + this._attemptedValue = this.value; + + const evt = new CustomEvent('touch-knob-start', { bubbles: true }); + this.dispatchEvent(evt); + } + + _handleMove() { + if (this._canDraw === true) { + this._canDraw = false; + window.requestAnimationFrame(this._drawState); + } + + const evt = new CustomEvent('touch-knob-move', { bubbles: true }); + this.dispatchEvent(evt); + } + + _handleEnd() { + const evt = new CustomEvent('touch-knob-end', { bubbles: true }); + this.dispatchEvent(evt); + } + _drawState() { + const previousAttemptedAngle = this._attemptedAngle; + this._attemptedAngle = + this._initialAngle - this._initialTouchAngle + + Math.atan2(this._touchY - this._centerY, this._touchX - this._centerX); + this._attemptedAngle = this._attemptedAngle + - this._TWO_PI * Math.floor((this._attemptedAngle + Math.PI) / this._TWO_PI); + + if ( + previousAttemptedAngle > -1.57 && previousAttemptedAngle < 0 + && this._attemptedAngle >= 0 && this._attemptedAngle <= 1.57 + ) { + this._attemptedRotations++; + } else if ( + previousAttemptedAngle < 1.57 && previousAttemptedAngle > 0 + && this._attemptedAngle <= 0 && this._attemptedAngle >= -1.57 + ) { + this._attemptedRotations--; + } + + if (this._attemptedAngle >= 0) { + this._attemptedValue = + (this._attemptedAngle + this._TWO_PI * this._attemptedRotations) * this._scale; + } else if (this._attemptedAngle < 0) { + this._attemptedValue = + (this._attemptedAngle + this._TWO_PI * (this._attemptedRotations + 1)) * this._scale; + } + + if (this._attemptedValue >= this.min && this._attemptedValue <= this.max) { + this.value = this._attemptedValue; + this._rotations = this._attemptedRotations; + this._angle = this._attemptedAngle; + this.style.setProperty('transform', `rotate(${this._angle}rad)`); + } + + this._canDraw = true; + } +} \ No newline at end of file