From e146e2536b31765313c7ac8f17b7596df54ee952 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Wed, 8 Aug 2018 14:08:39 +0200 Subject: content update --- .jekyll-metadata | Bin 30832 -> 31109 bytes assets/cache-polyfill.js | 102 ++++++++++++++++++++++++++++++ assets/site.css | 160 +++++++++++++++++++++++++++++++++++++++++++++++ assets/sw.js | 16 +++++ 4 files changed, 278 insertions(+) create mode 100644 assets/cache-polyfill.js create mode 100644 assets/site.css diff --git a/.jekyll-metadata b/.jekyll-metadata index 3b487d2..558b6e7 100644 Binary files a/.jekyll-metadata and b/.jekyll-metadata differ diff --git a/assets/cache-polyfill.js b/assets/cache-polyfill.js new file mode 100644 index 0000000..7db3ec0 --- /dev/null +++ b/assets/cache-polyfill.js @@ -0,0 +1,102 @@ +/** + * Copyright 2015 Google Inc. All rights reserved. + * + * 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. + * + */ + +(function () { + var nativeAddAll = Cache.prototype.addAll; + var userAgent = navigator.userAgent.match(/(Firefox|Chrome)\/(\d+\.)/); + + // Has nice behavior of `var` which everyone hates + if (userAgent) { + var agent = userAgent[1]; + var version = parseInt(userAgent[2]); + } + + if ( + nativeAddAll && (!userAgent || + (agent === 'Firefox' && version >= 46) || + (agent === 'Chrome' && version >= 50) + ) + ) { + return; + } + + Cache.prototype.addAll = function addAll(requests) { + var cache = this; + + // Since DOMExceptions are not constructable: + function NetworkError(message) { + this.name = 'NetworkError'; + this.code = 19; + this.message = message; + } + + NetworkError.prototype = Object.create(Error.prototype); + + return Promise.resolve().then(function () { + if (arguments.length < 1) throw new TypeError(); + + // Simulate sequence<(Request or USVString)> binding: + var sequence = []; + + requests = requests.map(function (request) { + if (request instanceof Request) { + return request; + } else { + return String(request); // may throw TypeError + } + }); + + return Promise.all( + requests.map(function (request) { + if (typeof request === 'string') { + request = new Request(request); + } + + var scheme = new URL(request.url).protocol; + + if (scheme !== 'http:' && scheme !== 'https:') { + throw new NetworkError("Invalid scheme"); + } + + return fetch(request.clone()); + }) + ); + }).then(function (responses) { + // If some of the responses has not OK-eish status, + // then whole operation should reject + if (responses.some(function (response) { + return !response.ok; + })) { + throw new NetworkError('Incorrect response status'); + } + + // TODO: check that requests don't overwrite one another + // (don't think this is possible to polyfill due to opaque responses) + return Promise.all( + responses.map(function (response, i) { + return cache.put(requests[i], response); + }) + ); + }).then(function () { + return undefined; + }); + }; + + Cache.prototype.add = function add(request) { + return this.addAll([request]); + }; +}()); diff --git a/assets/site.css b/assets/site.css new file mode 100644 index 0000000..1fde938 --- /dev/null +++ b/assets/site.css @@ -0,0 +1,160 @@ +* { + box-sizing: border-box; +} + +body { + font-family: 'Times New Roman', Times, serif; + font-size: 16px; + line-height: 1.8; + color: #000; + margin: 0; + padding: 0 0 50px 0; +} + +article, +main, +footer, +nav, +header { + max-width: 700px; + margin: 0 auto; +} + +header { + margin-top: 30px; +} + +header a, +nav ul li a { + text-decoration: none; +} + +header a { + font-size: 150%; + font-weight: 700; + color: #000; +} + +nav ul { + margin-top: 10px; + padding: 0; +} + +nav ul li { + display: inline-block; +} + +nav ul li a { + color: #444; + font-size: 85%; + margin-right: 10px; +} + +h1 { + font-size: 200%; +} + +h2 { + font-size: 160%; +} + +h3 { + font-size: 140%; +} + +h4 { + font-size: 120%; +} + +article img { + max-width: 100%; + display: block; +} + +time { + display: block; + font-size: 85%; + color: #444; +} + +main ul { + margin-top: 30px; + padding: 0 20px; + list-style-type: square; +} + +main ul li { + margin-bottom: 10px; +} + +main ul div { + font-size: 116%; +} + +blockquote { + margin: 40px 0 40px 20px; + border-left: 5px solid #eee; + padding: 5px 0 10px 20px; +} + +table { + border: 2px solid #f1f1f1; + width: 100%; + border-collapse: collapse; + border-spacing: 0; +} + +table th, +table td { + border: 2px solid #f1f1f1; + text-align: left; + padding: 5px 10px; +} + +.highlighter-rouge { + padding: 0 15px; + font-size: 80%; + border: 2px solid #f1f1f1; + overflow: auto; +} + +.highlighter-rouge table, +.highlighter-rouge table td { + border: 0 !important; +} + +::selection { + background: #ff0; + color: #000; +} + +::-moz-selection { + background: #ff0; + color: #000; +} + +@media only screen and (max-width:768px) { + body { + padding: 0 20px; + } + footer, + header, + nav { + text-align: center; + } + .responsive-table { + width: 100%; + overflow: scroll; + } +} + +@media print { + @page { + margin: 2cm; + } + header, + nav, + .comments { + display: none; + } +} diff --git a/assets/sw.js b/assets/sw.js index e69de29..8f285e9 100644 --- a/assets/sw.js +++ b/assets/sw.js @@ -0,0 +1,16 @@ +importScripts('/assets/cache-polyfill.js'); + + +self.addEventListener('install', function (e) { + e.waitUntil( + caches.open('airhorner').then(function (cache) { + return cache.addAll([ + '/', + '/index.html', + '/index.html?homescreen=1', + '/?homescreen=1', + '/assets/site.css', + ]); + }) + ); +}); -- cgit v1.2.3