yoyoyo 0.0.9 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +25 -110
- data/_includes/footer.html +4 -1
- data/_includes/head.html +48 -23
- data/_includes/header.html +6 -10
- data/_includes/pagination.html +26 -34
- data/_includes/post-card.html +16 -8
- data/_layouts/default.html +25 -27
- data/_layouts/home.html +8 -16
- data/_layouts/post.html +39 -21
- data/_sass/footer.scss +45 -0
- data/_sass/header.scss +55 -26
- data/_sass/highlight.scss +159 -0
- data/_sass/main.scss +282 -5
- data/assets/.DS_Store +0 -0
- data/assets/css/styles.scss +1 -2
- data/assets/icon/.DS_Store +0 -0
- data/assets/icon/android-icon-144x144.png +0 -0
- data/assets/icon/android-icon-192x192.png +0 -0
- data/assets/icon/android-icon-36x36.png +0 -0
- data/assets/icon/android-icon-48x48.png +0 -0
- data/assets/icon/android-icon-72x72.png +0 -0
- data/assets/icon/android-icon-96x96.png +0 -0
- data/assets/icon/apple-icon-114x114.png +0 -0
- data/assets/icon/apple-icon-120x120.png +0 -0
- data/assets/icon/apple-icon-144x144.png +0 -0
- data/assets/icon/apple-icon-152x152.png +0 -0
- data/assets/icon/apple-icon-180x180.png +0 -0
- data/assets/icon/apple-icon-57x57.png +0 -0
- data/assets/icon/apple-icon-60x60.png +0 -0
- data/assets/icon/apple-icon-72x72.png +0 -0
- data/assets/icon/apple-icon-76x76.png +0 -0
- data/assets/icon/apple-icon-precomposed.png +0 -0
- data/assets/icon/apple-icon.png +0 -0
- data/assets/icon/arrow_left.svg +1 -0
- data/assets/icon/arrow_left_dark.svg +1 -0
- data/assets/icon/arrow_right.svg +1 -0
- data/assets/icon/arrow_right_dark.svg +1 -0
- data/assets/icon/favicon-16x16.png +0 -0
- data/assets/icon/favicon-32x32.png +0 -0
- data/assets/icon/favicon-96x96.png +0 -0
- data/assets/icon/logo-dark.svg +9 -0
- data/assets/icon/logo.svg +9 -0
- data/assets/icon/ms-icon-144x144.png +0 -0
- data/assets/icon/ms-icon-150x150.png +0 -0
- data/assets/icon/ms-icon-310x310.png +0 -0
- data/assets/icon/ms-icon-70x70.png +0 -0
- data/assets/images/.DS_Store +0 -0
- data/assets/images/default.jpg +0 -0
- data/assets/js/app.js +16 -4504
- data/assets/js/precache-manifest.11bcfbfe6b7dae85e86faa087e0a5e06.js +6 -0
- data/assets/js/precache-manifest.1915fac201dd24dae9507688967c5188.js +6 -0
- data/assets/js/precache-manifest.2065e6686799b73f209ccb8fd864b1b8.js +6 -0
- data/assets/js/precache-manifest.39102f4dc1b24b71a25b460ac941d00b.js +6 -0
- data/assets/js/precache-manifest.a688172c829679a4a1893fe27d269fe6.js +6 -0
- data/assets/js/precache-manifest.a83e5c3f4f128d9750d50cf5abb68afd.js +6 -0
- data/assets/js/precache-manifest.c327e4d6b681a2a6c7a14644cb451ef5.js +6 -0
- data/assets/js/precache-manifest.f1b04314ba8d2ced03f1d0431a7dd77d.js +6 -0
- data/assets/js/sw.js +1 -0
- data/assets/js/workbox-0eb1d4be.js +1 -0
- data/assets/js/workbox-468c4d03.js +1 -0
- data/assets/js/workbox-d9851aed.js +1 -0
- metadata +59 -101
- data/_sass/_alert.scss +0 -51
- data/_sass/_badge.scss +0 -53
- data/_sass/_breadcrumb.scss +0 -41
- data/_sass/_button-group.scss +0 -163
- data/_sass/_buttons.scss +0 -140
- data/_sass/_card.scss +0 -310
- data/_sass/_carousel.scss +0 -198
- data/_sass/_close.scss +0 -44
- data/_sass/_code.scss +0 -48
- data/_sass/_custom-forms.scss +0 -507
- data/_sass/_dropdown.scss +0 -191
- data/_sass/_forms.scss +0 -334
- data/_sass/_functions.scss +0 -86
- data/_sass/_grid.scss +0 -52
- data/_sass/_images.scss +0 -42
- data/_sass/_input-group.scss +0 -193
- data/_sass/_jumbotron.scss +0 -16
- data/_sass/_list-group.scss +0 -121
- data/_sass/_media.scss +0 -8
- data/_sass/_mixins.scss +0 -41
- data/_sass/_modal.scss +0 -186
- data/_sass/_nav.scss +0 -120
- data/_sass/_navbar.scss +0 -299
- data/_sass/_pagination.scss +0 -78
- data/_sass/_popover.scss +0 -183
- data/_sass/_print.scss +0 -141
- data/_sass/_progress.scss +0 -34
- data/_sass/_reboot.scss +0 -462
- data/_sass/_root.scss +0 -19
- data/_sass/_spinners.scss +0 -53
- data/_sass/_tables.scss +0 -187
- data/_sass/_toasts.scss +0 -43
- data/_sass/_tooltip.scss +0 -115
- data/_sass/_transitions.scss +0 -22
- data/_sass/_type.scss +0 -125
- data/_sass/_utilities.scss +0 -16
- data/_sass/_variables.scss +0 -1091
- data/_sass/body.scss +0 -22
- data/_sass/bootstrap-grid.scss +0 -29
- data/_sass/bootstrap-reboot.scss +0 -12
- data/_sass/bootstrap.scss +0 -44
- data/_sass/mixins/_alert.scss +0 -13
- data/_sass/mixins/_background-variant.scss +0 -21
- data/_sass/mixins/_badge.scss +0 -11
- data/_sass/mixins/_border-radius.scss +0 -35
- data/_sass/mixins/_box-shadow.scss +0 -5
- data/_sass/mixins/_breakpoints.scss +0 -123
- data/_sass/mixins/_buttons.scss +0 -111
- data/_sass/mixins/_caret.scss +0 -62
- data/_sass/mixins/_clearfix.scss +0 -7
- data/_sass/mixins/_float.scss +0 -11
- data/_sass/mixins/_forms.scss +0 -198
- data/_sass/mixins/_gradients.scss +0 -45
- data/_sass/mixins/_grid-framework.scss +0 -66
- data/_sass/mixins/_grid.scss +0 -51
- data/_sass/mixins/_hover.scss +0 -37
- data/_sass/mixins/_image.scss +0 -36
- data/_sass/mixins/_list-group.scss +0 -21
- data/_sass/mixins/_lists.scss +0 -7
- data/_sass/mixins/_nav-divider.scss +0 -10
- data/_sass/mixins/_pagination.scss +0 -22
- data/_sass/mixins/_reset-text.scss +0 -17
- data/_sass/mixins/_resize.scss +0 -6
- data/_sass/mixins/_screen-reader.scss +0 -33
- data/_sass/mixins/_size.scss +0 -6
- data/_sass/mixins/_table-row.scss +0 -39
- data/_sass/mixins/_text-emphasis.scss +0 -14
- data/_sass/mixins/_text-hide.scss +0 -13
- data/_sass/mixins/_text-truncate.scss +0 -8
- data/_sass/mixins/_transition.scss +0 -16
- data/_sass/mixins/_visibility.scss +0 -7
- data/_sass/utilities/_align.scss +0 -8
- data/_sass/utilities/_background.scss +0 -19
- data/_sass/utilities/_borders.scss +0 -63
- data/_sass/utilities/_clearfix.scss +0 -3
- data/_sass/utilities/_display.scss +0 -38
- data/_sass/utilities/_embed.scss +0 -39
- data/_sass/utilities/_flex.scss +0 -51
- data/_sass/utilities/_float.scss +0 -9
- data/_sass/utilities/_overflow.scss +0 -5
- data/_sass/utilities/_position.scss +0 -32
- data/_sass/utilities/_screenreaders.scss +0 -11
- data/_sass/utilities/_shadows.scss +0 -6
- data/_sass/utilities/_sizing.scss +0 -20
- data/_sass/utilities/_spacing.scss +0 -73
- data/_sass/utilities/_text.scss +0 -67
- data/_sass/utilities/_visibility.scss +0 -11
- data/assets/js/app.js.map +0 -1
- data/assets/ts/app.ts +0 -10
data/assets/js/sw.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let r=Promise.resolve();return s[e]||(r=new Promise(async r=>{if("document"in self){const s=document.createElement("script");s.src=e,document.head.appendChild(s),s.onload=r}else importScripts(e),r()})),r.then(()=>{if(!s[e])throw new Error(`Module ${e} didn’t register its module`);return s[e]})},r=(r,s)=>{Promise.all(r.map(e)).then(e=>s(1===e.length?e[0]:e))},s={require:Promise.resolve(r)};self.define=(r,t,i)=>{s[r]||(s[r]=Promise.resolve().then(()=>{let s={};const o={uri:location.origin+r.slice(1)};return Promise.all(t.map(r=>{switch(r){case"exports":return s;case"module":return o;default:return e(r)}})).then(e=>{const r=i(...e);return s.default||(s.default=r),s})}))}}define("./sw.js",["./workbox-0eb1d4be"],(function(e){"use strict";e.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"app.js",revision:"7f9720b5a4a36fbff3ae56dbd9c58102"}],{})}));
|
@@ -0,0 +1 @@
|
|
1
|
+
define("./workbox-0eb1d4be.js",["exports"],(function(e){"use strict";try{self["workbox:core:5.1.4"]&&_()}catch(e){}const t={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},n=e=>[t.prefix,e,t.suffix].filter(e=>e&&e.length>0).join("-"),s=e=>e||n(t.precache),i=e=>new URL(String(e),location.href).href.replace(new RegExp("^"+location.origin),""),c=(e,...t)=>{let n=e;return t.length>0&&(n+=" :: "+JSON.stringify(t)),n};class o extends Error{constructor(e,t){super(c(e,t)),this.name=e,this.details=t}}const r=new Set;const a=(e,t)=>e.filter(e=>t in e),u=async({request:e,mode:t,plugins:n=[]})=>{const s=a(n,"cacheKeyWillBeUsed");let i=e;for(const e of s)i=await e.cacheKeyWillBeUsed.call(e,{mode:t,request:i}),"string"==typeof i&&(i=new Request(i));return i},l=async({cacheName:e,request:t,event:n,matchOptions:s,plugins:i=[]})=>{const c=await self.caches.open(e),o=await u({plugins:i,request:t,mode:"read"});let r=await c.match(o,s);for(const t of i)if("cachedResponseWillBeUsed"in t){const i=t.cachedResponseWillBeUsed;r=await i.call(t,{cacheName:e,event:n,matchOptions:s,cachedResponse:r,request:o})}return r},h=async({cacheName:e,request:t,response:n,event:s,plugins:c=[],matchOptions:h})=>{const f=await u({plugins:c,request:t,mode:"write"});if(!n)throw new o("cache-put-with-no-response",{url:i(f.url)});const w=await(async({request:e,response:t,event:n,plugins:s=[]})=>{let i=t,c=!1;for(const t of s)if("cacheWillUpdate"in t){c=!0;const s=t.cacheWillUpdate;if(i=await s.call(t,{request:e,response:i,event:n}),!i)break}return c||(i=i&&200===i.status?i:void 0),i||null})({event:s,plugins:c,response:n,request:f});if(!w)return;const d=await self.caches.open(e),p=a(c,"cacheDidUpdate"),y=p.length>0?await l({cacheName:e,matchOptions:h,request:f}):null;try{await d.put(f,w)}catch(e){throw"QuotaExceededError"===e.name&&await async function(){for(const e of r)await e()}(),e}for(const t of p)await t.cacheDidUpdate.call(t,{cacheName:e,event:s,oldResponse:y,newResponse:w,request:f})},f=async({request:e,fetchOptions:t,event:n,plugins:s=[]})=>{if("string"==typeof e&&(e=new Request(e)),n instanceof FetchEvent&&n.preloadResponse){const e=await n.preloadResponse;if(e)return e}const i=a(s,"fetchDidFail"),c=i.length>0?e.clone():null;try{for(const t of s)if("requestWillFetch"in t){const s=t.requestWillFetch,i=e.clone();e=await s.call(t,{request:i,event:n})}}catch(e){throw new o("plugin-error-request-will-fetch",{thrownError:e})}const r=e.clone();try{let i;i="navigate"===e.mode?await fetch(e):await fetch(e,t);for(const e of s)"fetchDidSucceed"in e&&(i=await e.fetchDidSucceed.call(e,{event:n,request:r,response:i}));return i}catch(e){for(const t of i)await t.fetchDidFail.call(t,{error:e,event:n,originalRequest:c.clone(),request:r.clone()});throw e}};let w;async function d(e,t){const n=e.clone(),s={headers:new Headers(n.headers),status:n.status,statusText:n.statusText},i=t?t(s):s,c=function(){if(void 0===w){const e=new Response("");if("body"in e)try{new Response(e.body),w=!0}catch(e){w=!1}w=!1}return w}()?n.body:await n.blob();return new Response(c,i)}try{self["workbox:precaching:5.1.4"]&&_()}catch(e){}function p(e){if(!e)throw new o("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){const t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}const{revision:t,url:n}=e;if(!n)throw new o("add-to-cache-list-unexpected-type",{entry:e});if(!t){const e=new URL(n,location.href);return{cacheKey:e.href,url:e.href}}const s=new URL(n,location.href),i=new URL(n,location.href);return s.searchParams.set("__WB_REVISION__",t),{cacheKey:s.href,url:i.href}}class y{constructor(e){this.t=s(e),this.s=new Map,this.i=new Map,this.o=new Map}addToCacheList(e){const t=[];for(const n of e){"string"==typeof n?t.push(n):n&&void 0===n.revision&&t.push(n.url);const{cacheKey:e,url:s}=p(n),i="string"!=typeof n&&n.revision?"reload":"default";if(this.s.has(s)&&this.s.get(s)!==e)throw new o("add-to-cache-list-conflicting-entries",{firstEntry:this.s.get(s),secondEntry:e});if("string"!=typeof n&&n.integrity){if(this.o.has(e)&&this.o.get(e)!==n.integrity)throw new o("add-to-cache-list-conflicting-integrities",{url:s});this.o.set(e,n.integrity)}if(this.s.set(s,e),this.i.set(s,i),t.length>0){const e=`Workbox is precaching URLs without revision info: ${t.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}async install({event:e,plugins:t}={}){const n=[],s=[],i=await self.caches.open(this.t),c=await i.keys(),o=new Set(c.map(e=>e.url));for(const[e,t]of this.s)o.has(t)?s.push(e):n.push({cacheKey:t,url:e});const r=n.map(({cacheKey:n,url:s})=>{const i=this.o.get(n),c=this.i.get(s);return this.u({cacheKey:n,cacheMode:c,event:e,integrity:i,plugins:t,url:s})});await Promise.all(r);return{updatedURLs:n.map(e=>e.url),notUpdatedURLs:s}}async activate(){const e=await self.caches.open(this.t),t=await e.keys(),n=new Set(this.s.values()),s=[];for(const i of t)n.has(i.url)||(await e.delete(i),s.push(i.url));return{deletedURLs:s}}async u({cacheKey:e,url:t,cacheMode:n,event:s,plugins:i,integrity:c}){const r=new Request(t,{integrity:c,cache:n,credentials:"same-origin"});let a,u=await f({event:s,plugins:i,request:r});for(const e of i||[])"cacheWillUpdate"in e&&(a=e);if(!(a?await a.cacheWillUpdate({event:s,request:r,response:u}):u.status<400))throw new o("bad-precaching-response",{url:t,status:u.status});u.redirected&&(u=await d(u)),await h({event:s,plugins:i,response:u,request:e===t?r:new Request(e),cacheName:this.t,matchOptions:{ignoreSearch:!0}})}getURLsToCacheKeys(){return this.s}getCachedURLs(){return[...this.s.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this.s.get(t.href)}async matchPrecache(e){const t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n){return(await self.caches.open(this.t)).match(n)}}createHandler(e=!0){return async({request:t})=>{try{const e=await this.matchPrecache(t);if(e)return e;throw new o("missing-precache-entry",{cacheName:this.t,url:t instanceof Request?t.url:t})}catch(n){if(e)return fetch(t);throw n}}}createHandlerBoundToURL(e,t=!0){if(!this.getCacheKeyForURL(e))throw new o("non-precached-url",{url:e});const n=this.createHandler(t),s=new Request(e);return()=>n({request:s})}}let g;const R=()=>(g||(g=new y),g);const q=(e,t)=>{const n=R().getURLsToCacheKeys();for(const s of function*(e,{ignoreURLParametersMatching:t,directoryIndex:n,cleanURLs:s,urlManipulation:i}={}){const c=new URL(e,location.href);c.hash="",yield c.href;const o=function(e,t=[]){for(const n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}(c,t);if(yield o.href,n&&o.pathname.endsWith("/")){const e=new URL(o.href);e.pathname+=n,yield e.href}if(s){const e=new URL(o.href);e.pathname+=".html",yield e.href}if(i){const e=i({url:c});for(const t of e)yield t.href}}(e,t)){const e=n.get(s);if(e)return e}};let U=!1;function m(e){U||((({ignoreURLParametersMatching:e=[/^utm_/],directoryIndex:t="index.html",cleanURLs:n=!0,urlManipulation:i}={})=>{const c=s();self.addEventListener("fetch",s=>{const o=q(s.request.url,{cleanURLs:n,directoryIndex:t,ignoreURLParametersMatching:e,urlManipulation:i});if(!o)return;let r=self.caches.open(c).then(e=>e.match(o)).then(e=>e||fetch(o));s.respondWith(r)})})(e),U=!0)}const v=[],L={get:()=>v,add(e){v.push(...e)}},x=e=>{const t=R(),n=L.get();e.waitUntil(t.install({event:e,plugins:n}).catch(e=>{throw e}))},K=e=>{const t=R();e.waitUntil(t.activate())};e.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},e.precacheAndRoute=function(e,t){!function(e){R().addToCacheList(e),e.length>0&&(self.addEventListener("install",x),self.addEventListener("activate",K))}(e),m(t)},e.skipWaiting=function(){self.addEventListener("install",()=>self.skipWaiting())}}));
|
@@ -0,0 +1 @@
|
|
1
|
+
define("./workbox-468c4d03.js",["exports"],(function(e){"use strict";try{self["workbox:core:5.1.3"]&&_()}catch(e){}const t={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},n=e=>[t.prefix,e,t.suffix].filter(e=>e&&e.length>0).join("-"),s=e=>e||n(t.precache),i=e=>new URL(String(e),location.href).href.replace(new RegExp("^"+location.origin),""),c=(e,...t)=>{let n=e;return t.length>0&&(n+=" :: "+JSON.stringify(t)),n};class o extends Error{constructor(e,t){super(c(e,t)),this.name=e,this.details=t}}const r=new Set;const a=(e,t)=>e.filter(e=>t in e),u=async({request:e,mode:t,plugins:n=[]})=>{const s=a(n,"cacheKeyWillBeUsed");let i=e;for(const e of s)i=await e.cacheKeyWillBeUsed.call(e,{mode:t,request:i}),"string"==typeof i&&(i=new Request(i));return i},l=async({cacheName:e,request:t,event:n,matchOptions:s,plugins:i=[]})=>{const c=await self.caches.open(e),o=await u({plugins:i,request:t,mode:"read"});let r=await c.match(o,s);for(const t of i)if("cachedResponseWillBeUsed"in t){const i=t.cachedResponseWillBeUsed;r=await i.call(t,{cacheName:e,event:n,matchOptions:s,cachedResponse:r,request:o})}return r},h=async({cacheName:e,request:t,response:n,event:s,plugins:c=[],matchOptions:h})=>{const f=await u({plugins:c,request:t,mode:"write"});if(!n)throw new o("cache-put-with-no-response",{url:i(f.url)});const w=await(async({request:e,response:t,event:n,plugins:s=[]})=>{let i=t,c=!1;for(const t of s)if("cacheWillUpdate"in t){c=!0;const s=t.cacheWillUpdate;if(i=await s.call(t,{request:e,response:i,event:n}),!i)break}return c||(i=i&&200===i.status?i:void 0),i||null})({event:s,plugins:c,response:n,request:f});if(!w)return;const d=await self.caches.open(e),p=a(c,"cacheDidUpdate"),y=p.length>0?await l({cacheName:e,matchOptions:h,request:f}):null;try{await d.put(f,w)}catch(e){throw"QuotaExceededError"===e.name&&await async function(){for(const e of r)await e()}(),e}for(const t of p)await t.cacheDidUpdate.call(t,{cacheName:e,event:s,oldResponse:y,newResponse:w,request:f})},f=async({request:e,fetchOptions:t,event:n,plugins:s=[]})=>{if("string"==typeof e&&(e=new Request(e)),n instanceof FetchEvent&&n.preloadResponse){const e=await n.preloadResponse;if(e)return e}const i=a(s,"fetchDidFail"),c=i.length>0?e.clone():null;try{for(const t of s)if("requestWillFetch"in t){const s=t.requestWillFetch,i=e.clone();e=await s.call(t,{request:i,event:n})}}catch(e){throw new o("plugin-error-request-will-fetch",{thrownError:e})}const r=e.clone();try{let i;i="navigate"===e.mode?await fetch(e):await fetch(e,t);for(const e of s)"fetchDidSucceed"in e&&(i=await e.fetchDidSucceed.call(e,{event:n,request:r,response:i}));return i}catch(e){for(const t of i)await t.fetchDidFail.call(t,{error:e,event:n,originalRequest:c.clone(),request:r.clone()});throw e}};let w;async function d(e,t){const n=e.clone(),s={headers:new Headers(n.headers),status:n.status,statusText:n.statusText},i=t?t(s):s,c=function(){if(void 0===w){const e=new Response("");if("body"in e)try{new Response(e.body),w=!0}catch(e){w=!1}w=!1}return w}()?n.body:await n.blob();return new Response(c,i)}try{self["workbox:precaching:5.1.3"]&&_()}catch(e){}function p(e){if(!e)throw new o("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){const t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}const{revision:t,url:n}=e;if(!n)throw new o("add-to-cache-list-unexpected-type",{entry:e});if(!t){const e=new URL(n,location.href);return{cacheKey:e.href,url:e.href}}const s=new URL(n,location.href),i=new URL(n,location.href);return s.searchParams.set("__WB_REVISION__",t),{cacheKey:s.href,url:i.href}}class y{constructor(e){this.t=s(e),this.s=new Map,this.i=new Map,this.o=new Map}addToCacheList(e){const t=[];for(const n of e){"string"==typeof n?t.push(n):n&&void 0===n.revision&&t.push(n.url);const{cacheKey:e,url:s}=p(n),i="string"!=typeof n&&n.revision?"reload":"default";if(this.s.has(s)&&this.s.get(s)!==e)throw new o("add-to-cache-list-conflicting-entries",{firstEntry:this.s.get(s),secondEntry:e});if("string"!=typeof n&&n.integrity){if(this.o.has(e)&&this.o.get(e)!==n.integrity)throw new o("add-to-cache-list-conflicting-integrities",{url:s});this.o.set(e,n.integrity)}if(this.s.set(s,e),this.i.set(s,i),t.length>0){const e=`Workbox is precaching URLs without revision info: ${t.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}async install({event:e,plugins:t}={}){const n=[],s=[],i=await self.caches.open(this.t),c=await i.keys(),o=new Set(c.map(e=>e.url));for(const[e,t]of this.s)o.has(t)?s.push(e):n.push({cacheKey:t,url:e});const r=n.map(({cacheKey:n,url:s})=>{const i=this.o.get(n),c=this.i.get(s);return this.u({cacheKey:n,cacheMode:c,event:e,integrity:i,plugins:t,url:s})});return await Promise.all(r),{updatedURLs:n.map(e=>e.url),notUpdatedURLs:s}}async activate(){const e=await self.caches.open(this.t),t=await e.keys(),n=new Set(this.s.values()),s=[];for(const i of t)n.has(i.url)||(await e.delete(i),s.push(i.url));return{deletedURLs:s}}async u({cacheKey:e,url:t,cacheMode:n,event:s,plugins:i,integrity:c}){const r=new Request(t,{integrity:c,cache:n,credentials:"same-origin"});let a,u=await f({event:s,plugins:i,request:r});for(const e of i||[])"cacheWillUpdate"in e&&(a=e);if(!(a?await a.cacheWillUpdate({event:s,request:r,response:u}):u.status<400))throw new o("bad-precaching-response",{url:t,status:u.status});u.redirected&&(u=await d(u)),await h({event:s,plugins:i,response:u,request:e===t?r:new Request(e),cacheName:this.t,matchOptions:{ignoreSearch:!0}})}getURLsToCacheKeys(){return this.s}getCachedURLs(){return[...this.s.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this.s.get(t.href)}async matchPrecache(e){const t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n){return(await self.caches.open(this.t)).match(n)}}createHandler(e=!0){return async({request:t})=>{try{const e=await this.matchPrecache(t);if(e)return e;throw new o("missing-precache-entry",{cacheName:this.t,url:t instanceof Request?t.url:t})}catch(n){if(e)return fetch(t);throw n}}}createHandlerBoundToURL(e,t=!0){if(!this.getCacheKeyForURL(e))throw new o("non-precached-url",{url:e});const n=this.createHandler(t),s=new Request(e);return()=>n({request:s})}}let g;const R=()=>(g||(g=new y),g);const q=(e,t)=>{const n=R().getURLsToCacheKeys();for(const s of function*(e,{ignoreURLParametersMatching:t,directoryIndex:n,cleanURLs:s,urlManipulation:i}={}){const c=new URL(e,location.href);c.hash="",yield c.href;const o=function(e,t=[]){for(const n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}(c,t);if(yield o.href,n&&o.pathname.endsWith("/")){const e=new URL(o.href);e.pathname+=n,yield e.href}if(s){const e=new URL(o.href);e.pathname+=".html",yield e.href}if(i){const e=i({url:c});for(const t of e)yield t.href}}(e,t)){const e=n.get(s);if(e)return e}};let U=!1;function m(e){U||((({ignoreURLParametersMatching:e=[/^utm_/],directoryIndex:t="index.html",cleanURLs:n=!0,urlManipulation:i}={})=>{const c=s();self.addEventListener("fetch",s=>{const o=q(s.request.url,{cleanURLs:n,directoryIndex:t,ignoreURLParametersMatching:e,urlManipulation:i});if(!o)return;let r=self.caches.open(c).then(e=>e.match(o)).then(e=>e||fetch(o));s.respondWith(r)})})(e),U=!0)}const v=[],L={get:()=>v,add(e){v.push(...e)}},x=e=>{const t=R(),n=L.get();e.waitUntil(t.install({event:e,plugins:n}).catch(e=>{throw e}))},K=e=>{const t=R();e.waitUntil(t.activate())};e.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},e.precacheAndRoute=function(e,t){!function(e){R().addToCacheList(e),e.length>0&&(self.addEventListener("install",x),self.addEventListener("activate",K))}(e),m(t)},e.skipWaiting=function(){self.addEventListener("install",()=>self.skipWaiting())}}));
|
@@ -0,0 +1 @@
|
|
1
|
+
define("./workbox-d9851aed.js",["exports"],(function(e){"use strict";try{self["workbox:core:5.1.4"]&&_()}catch(e){}const t={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},n=e=>[t.prefix,e,t.suffix].filter(e=>e&&e.length>0).join("-"),s=e=>e||n(t.precache),i=e=>new URL(String(e),location.href).href.replace(new RegExp("^"+location.origin),""),c=(e,...t)=>{let n=e;return t.length>0&&(n+=" :: "+JSON.stringify(t)),n};class o extends Error{constructor(e,t){super(c(e,t)),this.name=e,this.details=t}}const r=new Set;const a=(e,t)=>e.filter(e=>t in e),u=async({request:e,mode:t,plugins:n=[]})=>{const s=a(n,"cacheKeyWillBeUsed");let i=e;for(const e of s)i=await e.cacheKeyWillBeUsed.call(e,{mode:t,request:i}),"string"==typeof i&&(i=new Request(i));return i},l=async({cacheName:e,request:t,event:n,matchOptions:s,plugins:i=[]})=>{const c=await self.caches.open(e),o=await u({plugins:i,request:t,mode:"read"});let r=await c.match(o,s);for(const t of i)if("cachedResponseWillBeUsed"in t){const i=t.cachedResponseWillBeUsed;r=await i.call(t,{cacheName:e,event:n,matchOptions:s,cachedResponse:r,request:o})}return r},h=async({cacheName:e,request:t,response:n,event:s,plugins:c=[],matchOptions:h})=>{const f=await u({plugins:c,request:t,mode:"write"});if(!n)throw new o("cache-put-with-no-response",{url:i(f.url)});const w=await(async({request:e,response:t,event:n,plugins:s=[]})=>{let i=t,c=!1;for(const t of s)if("cacheWillUpdate"in t){c=!0;const s=t.cacheWillUpdate;if(i=await s.call(t,{request:e,response:i,event:n}),!i)break}return c||(i=i&&200===i.status?i:void 0),i||null})({event:s,plugins:c,response:n,request:f});if(!w)return;const d=await self.caches.open(e),p=a(c,"cacheDidUpdate"),y=p.length>0?await l({cacheName:e,matchOptions:h,request:f}):null;try{await d.put(f,w)}catch(e){throw"QuotaExceededError"===e.name&&await async function(){for(const e of r)await e()}(),e}for(const t of p)await t.cacheDidUpdate.call(t,{cacheName:e,event:s,oldResponse:y,newResponse:w,request:f})},f=async({request:e,fetchOptions:t,event:n,plugins:s=[]})=>{if("string"==typeof e&&(e=new Request(e)),n instanceof FetchEvent&&n.preloadResponse){const e=await n.preloadResponse;if(e)return e}const i=a(s,"fetchDidFail"),c=i.length>0?e.clone():null;try{for(const t of s)if("requestWillFetch"in t){const s=t.requestWillFetch,i=e.clone();e=await s.call(t,{request:i,event:n})}}catch(e){throw new o("plugin-error-request-will-fetch",{thrownError:e})}const r=e.clone();try{let i;i="navigate"===e.mode?await fetch(e):await fetch(e,t);for(const e of s)"fetchDidSucceed"in e&&(i=await e.fetchDidSucceed.call(e,{event:n,request:r,response:i}));return i}catch(e){for(const t of i)await t.fetchDidFail.call(t,{error:e,event:n,originalRequest:c.clone(),request:r.clone()});throw e}};let w;async function d(e,t){const n=e.clone(),s={headers:new Headers(n.headers),status:n.status,statusText:n.statusText},i=t?t(s):s,c=function(){if(void 0===w){const e=new Response("");if("body"in e)try{new Response(e.body),w=!0}catch(e){w=!1}w=!1}return w}()?n.body:await n.blob();return new Response(c,i)}try{self["workbox:precaching:5.1.4"]&&_()}catch(e){}function p(e){if(!e)throw new o("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){const t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}const{revision:t,url:n}=e;if(!n)throw new o("add-to-cache-list-unexpected-type",{entry:e});if(!t){const e=new URL(n,location.href);return{cacheKey:e.href,url:e.href}}const s=new URL(n,location.href),i=new URL(n,location.href);return s.searchParams.set("__WB_REVISION__",t),{cacheKey:s.href,url:i.href}}class y{constructor(e){this.t=s(e),this.s=new Map,this.i=new Map,this.o=new Map}addToCacheList(e){const t=[];for(const n of e){"string"==typeof n?t.push(n):n&&void 0===n.revision&&t.push(n.url);const{cacheKey:e,url:s}=p(n),i="string"!=typeof n&&n.revision?"reload":"default";if(this.s.has(s)&&this.s.get(s)!==e)throw new o("add-to-cache-list-conflicting-entries",{firstEntry:this.s.get(s),secondEntry:e});if("string"!=typeof n&&n.integrity){if(this.o.has(e)&&this.o.get(e)!==n.integrity)throw new o("add-to-cache-list-conflicting-integrities",{url:s});this.o.set(e,n.integrity)}if(this.s.set(s,e),this.i.set(s,i),t.length>0){const e=`Workbox is precaching URLs without revision info: ${t.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}async install({event:e,plugins:t}={}){const n=[],s=[],i=await self.caches.open(this.t),c=await i.keys(),o=new Set(c.map(e=>e.url));for(const[e,t]of this.s)o.has(t)?s.push(e):n.push({cacheKey:t,url:e});const r=n.map(({cacheKey:n,url:s})=>{const i=this.o.get(n),c=this.i.get(s);return this.u({cacheKey:n,cacheMode:c,event:e,integrity:i,plugins:t,url:s})});await Promise.all(r);return{updatedURLs:n.map(e=>e.url),notUpdatedURLs:s}}async activate(){const e=await self.caches.open(this.t),t=await e.keys(),n=new Set(this.s.values()),s=[];for(const i of t)n.has(i.url)||(await e.delete(i),s.push(i.url));return{deletedURLs:s}}async u({cacheKey:e,url:t,cacheMode:n,event:s,plugins:i,integrity:c}){const r=new Request(t,{integrity:c,cache:n,credentials:"same-origin"});let a,u=await f({event:s,plugins:i,request:r});for(const e of i||[])"cacheWillUpdate"in e&&(a=e);if(!(a?await a.cacheWillUpdate({event:s,request:r,response:u}):u.status<400))throw new o("bad-precaching-response",{url:t,status:u.status});u.redirected&&(u=await d(u)),await h({event:s,plugins:i,response:u,request:e===t?r:new Request(e),cacheName:this.t,matchOptions:{ignoreSearch:!0}})}getURLsToCacheKeys(){return this.s}getCachedURLs(){return[...this.s.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this.s.get(t.href)}async matchPrecache(e){const t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n){return(await self.caches.open(this.t)).match(n)}}createHandler(e=!0){return async({request:t})=>{try{const e=await this.matchPrecache(t);if(e)return e;throw new o("missing-precache-entry",{cacheName:this.t,url:t instanceof Request?t.url:t})}catch(n){if(e)return fetch(t);throw n}}}createHandlerBoundToURL(e,t=!0){if(!this.getCacheKeyForURL(e))throw new o("non-precached-url",{url:e});const n=this.createHandler(t),s=new Request(e);return()=>n({request:s})}}let g;const R=()=>(g||(g=new y),g);const q=(e,t)=>{const n=R().getURLsToCacheKeys();for(const s of function*(e,{ignoreURLParametersMatching:t,directoryIndex:n,cleanURLs:s,urlManipulation:i}={}){const c=new URL(e,location.href);c.hash="",yield c.href;const o=function(e,t=[]){for(const n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}(c,t);if(yield o.href,n&&o.pathname.endsWith("/")){const e=new URL(o.href);e.pathname+=n,yield e.href}if(s){const e=new URL(o.href);e.pathname+=".html",yield e.href}if(i){const e=i({url:c});for(const t of e)yield t.href}}(e,t)){const e=n.get(s);if(e)return e}};let U=!1;function m(e){U||((({ignoreURLParametersMatching:e=[/^utm_/],directoryIndex:t="index.html",cleanURLs:n=!0,urlManipulation:i}={})=>{const c=s();self.addEventListener("fetch",s=>{const o=q(s.request.url,{cleanURLs:n,directoryIndex:t,ignoreURLParametersMatching:e,urlManipulation:i});if(!o)return;let r=self.caches.open(c).then(e=>e.match(o)).then(e=>e||fetch(o));s.respondWith(r)})})(e),U=!0)}const v=[],L={get:()=>v,add(e){v.push(...e)}},x=e=>{const t=R(),n=L.get();e.waitUntil(t.install({event:e,plugins:n}).catch(e=>{throw e}))},K=e=>{const t=R();e.waitUntil(t.activate())};e.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},e.precacheAndRoute=function(e,t){!function(e){R().addToCacheList(e),e.length>0&&(self.addEventListener("install",x),self.addEventListener("activate",K))}(e),m(t)},e.skipWaiting=function(){self.addEventListener("install",()=>self.skipWaiting())}}));
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yoyoyo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- Henry Zhang
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -86,9 +86,9 @@ dependencies:
|
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
|
-
description:
|
89
|
+
description:
|
90
90
|
email:
|
91
|
-
-
|
91
|
+
- zhanghedev@outlook.com
|
92
92
|
executables: []
|
93
93
|
extensions: []
|
94
94
|
extra_rdoc_files: []
|
@@ -112,109 +112,68 @@ files:
|
|
112
112
|
- _layouts/home.html
|
113
113
|
- _layouts/post.html
|
114
114
|
- _sass/.DS_Store
|
115
|
-
- _sass/
|
116
|
-
- _sass/_badge.scss
|
117
|
-
- _sass/_breadcrumb.scss
|
118
|
-
- _sass/_button-group.scss
|
119
|
-
- _sass/_buttons.scss
|
120
|
-
- _sass/_card.scss
|
121
|
-
- _sass/_carousel.scss
|
122
|
-
- _sass/_close.scss
|
123
|
-
- _sass/_code.scss
|
124
|
-
- _sass/_custom-forms.scss
|
125
|
-
- _sass/_dropdown.scss
|
126
|
-
- _sass/_forms.scss
|
127
|
-
- _sass/_functions.scss
|
128
|
-
- _sass/_grid.scss
|
129
|
-
- _sass/_images.scss
|
130
|
-
- _sass/_input-group.scss
|
131
|
-
- _sass/_jumbotron.scss
|
132
|
-
- _sass/_list-group.scss
|
133
|
-
- _sass/_media.scss
|
134
|
-
- _sass/_mixins.scss
|
135
|
-
- _sass/_modal.scss
|
136
|
-
- _sass/_nav.scss
|
137
|
-
- _sass/_navbar.scss
|
138
|
-
- _sass/_pagination.scss
|
139
|
-
- _sass/_popover.scss
|
140
|
-
- _sass/_print.scss
|
141
|
-
- _sass/_progress.scss
|
142
|
-
- _sass/_reboot.scss
|
143
|
-
- _sass/_root.scss
|
144
|
-
- _sass/_spinners.scss
|
145
|
-
- _sass/_tables.scss
|
146
|
-
- _sass/_toasts.scss
|
147
|
-
- _sass/_tooltip.scss
|
148
|
-
- _sass/_transitions.scss
|
149
|
-
- _sass/_type.scss
|
150
|
-
- _sass/_utilities.scss
|
151
|
-
- _sass/_variables.scss
|
152
|
-
- _sass/body.scss
|
153
|
-
- _sass/bootstrap-grid.scss
|
154
|
-
- _sass/bootstrap-reboot.scss
|
155
|
-
- _sass/bootstrap.scss
|
115
|
+
- _sass/footer.scss
|
156
116
|
- _sass/header.scss
|
117
|
+
- _sass/highlight.scss
|
157
118
|
- _sass/main.scss
|
158
|
-
- _sass/mixins/_alert.scss
|
159
|
-
- _sass/mixins/_background-variant.scss
|
160
|
-
- _sass/mixins/_badge.scss
|
161
|
-
- _sass/mixins/_border-radius.scss
|
162
|
-
- _sass/mixins/_box-shadow.scss
|
163
|
-
- _sass/mixins/_breakpoints.scss
|
164
|
-
- _sass/mixins/_buttons.scss
|
165
|
-
- _sass/mixins/_caret.scss
|
166
|
-
- _sass/mixins/_clearfix.scss
|
167
|
-
- _sass/mixins/_float.scss
|
168
|
-
- _sass/mixins/_forms.scss
|
169
|
-
- _sass/mixins/_gradients.scss
|
170
|
-
- _sass/mixins/_grid-framework.scss
|
171
|
-
- _sass/mixins/_grid.scss
|
172
|
-
- _sass/mixins/_hover.scss
|
173
|
-
- _sass/mixins/_image.scss
|
174
|
-
- _sass/mixins/_list-group.scss
|
175
|
-
- _sass/mixins/_lists.scss
|
176
|
-
- _sass/mixins/_nav-divider.scss
|
177
|
-
- _sass/mixins/_pagination.scss
|
178
|
-
- _sass/mixins/_reset-text.scss
|
179
|
-
- _sass/mixins/_resize.scss
|
180
|
-
- _sass/mixins/_screen-reader.scss
|
181
|
-
- _sass/mixins/_size.scss
|
182
|
-
- _sass/mixins/_table-row.scss
|
183
|
-
- _sass/mixins/_text-emphasis.scss
|
184
|
-
- _sass/mixins/_text-hide.scss
|
185
|
-
- _sass/mixins/_text-truncate.scss
|
186
|
-
- _sass/mixins/_transition.scss
|
187
|
-
- _sass/mixins/_visibility.scss
|
188
119
|
- _sass/post.scss
|
189
|
-
- _sass/utilities/_align.scss
|
190
|
-
- _sass/utilities/_background.scss
|
191
|
-
- _sass/utilities/_borders.scss
|
192
|
-
- _sass/utilities/_clearfix.scss
|
193
|
-
- _sass/utilities/_display.scss
|
194
|
-
- _sass/utilities/_embed.scss
|
195
|
-
- _sass/utilities/_flex.scss
|
196
|
-
- _sass/utilities/_float.scss
|
197
|
-
- _sass/utilities/_overflow.scss
|
198
|
-
- _sass/utilities/_position.scss
|
199
|
-
- _sass/utilities/_screenreaders.scss
|
200
|
-
- _sass/utilities/_shadows.scss
|
201
|
-
- _sass/utilities/_sizing.scss
|
202
|
-
- _sass/utilities/_spacing.scss
|
203
|
-
- _sass/utilities/_text.scss
|
204
|
-
- _sass/utilities/_visibility.scss
|
205
120
|
- assets/.DS_Store
|
206
121
|
- assets/css/styles.scss
|
122
|
+
- assets/icon/.DS_Store
|
123
|
+
- assets/icon/android-icon-144x144.png
|
124
|
+
- assets/icon/android-icon-192x192.png
|
125
|
+
- assets/icon/android-icon-36x36.png
|
126
|
+
- assets/icon/android-icon-48x48.png
|
127
|
+
- assets/icon/android-icon-72x72.png
|
128
|
+
- assets/icon/android-icon-96x96.png
|
129
|
+
- assets/icon/apple-icon-114x114.png
|
130
|
+
- assets/icon/apple-icon-120x120.png
|
131
|
+
- assets/icon/apple-icon-144x144.png
|
132
|
+
- assets/icon/apple-icon-152x152.png
|
133
|
+
- assets/icon/apple-icon-180x180.png
|
134
|
+
- assets/icon/apple-icon-57x57.png
|
135
|
+
- assets/icon/apple-icon-60x60.png
|
136
|
+
- assets/icon/apple-icon-72x72.png
|
137
|
+
- assets/icon/apple-icon-76x76.png
|
138
|
+
- assets/icon/apple-icon-precomposed.png
|
139
|
+
- assets/icon/apple-icon.png
|
140
|
+
- assets/icon/arrow_left.svg
|
141
|
+
- assets/icon/arrow_left_dark.svg
|
142
|
+
- assets/icon/arrow_right.svg
|
143
|
+
- assets/icon/arrow_right_dark.svg
|
144
|
+
- assets/icon/favicon-16x16.png
|
145
|
+
- assets/icon/favicon-32x32.png
|
146
|
+
- assets/icon/favicon-96x96.png
|
147
|
+
- assets/icon/logo-dark.svg
|
148
|
+
- assets/icon/logo.svg
|
149
|
+
- assets/icon/ms-icon-144x144.png
|
150
|
+
- assets/icon/ms-icon-150x150.png
|
151
|
+
- assets/icon/ms-icon-310x310.png
|
152
|
+
- assets/icon/ms-icon-70x70.png
|
153
|
+
- assets/images/.DS_Store
|
154
|
+
- assets/images/default.jpg
|
207
155
|
- assets/images/programming_code.svg
|
208
156
|
- assets/images/wxmp.png
|
209
157
|
- assets/js/app.js
|
210
|
-
- assets/js/
|
211
|
-
- assets/
|
212
|
-
|
158
|
+
- assets/js/precache-manifest.11bcfbfe6b7dae85e86faa087e0a5e06.js
|
159
|
+
- assets/js/precache-manifest.1915fac201dd24dae9507688967c5188.js
|
160
|
+
- assets/js/precache-manifest.2065e6686799b73f209ccb8fd864b1b8.js
|
161
|
+
- assets/js/precache-manifest.39102f4dc1b24b71a25b460ac941d00b.js
|
162
|
+
- assets/js/precache-manifest.a688172c829679a4a1893fe27d269fe6.js
|
163
|
+
- assets/js/precache-manifest.a83e5c3f4f128d9750d50cf5abb68afd.js
|
164
|
+
- assets/js/precache-manifest.c327e4d6b681a2a6c7a14644cb451ef5.js
|
165
|
+
- assets/js/precache-manifest.f1b04314ba8d2ced03f1d0431a7dd77d.js
|
166
|
+
- assets/js/sw.js
|
167
|
+
- assets/js/workbox-0eb1d4be.js
|
168
|
+
- assets/js/workbox-468c4d03.js
|
169
|
+
- assets/js/workbox-d9851aed.js
|
170
|
+
homepage: https://github.com/zh30/yoyoyo
|
213
171
|
licenses:
|
214
172
|
- MIT
|
215
173
|
metadata:
|
216
174
|
plugin_type: theme
|
217
|
-
|
175
|
+
source_code_uri: https://github.com/zh30/yoyoyo
|
176
|
+
post_install_message:
|
218
177
|
rdoc_options: []
|
219
178
|
require_paths:
|
220
179
|
- lib
|
@@ -229,9 +188,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
188
|
- !ruby/object:Gem::Version
|
230
189
|
version: '0'
|
231
190
|
requirements: []
|
232
|
-
|
233
|
-
|
234
|
-
signing_key:
|
191
|
+
rubygems_version: 3.5.4
|
192
|
+
signing_key:
|
235
193
|
specification_version: 4
|
236
|
-
summary:
|
194
|
+
summary: A beautiful, responsive Jekyll theme for programmers.
|
237
195
|
test_files: []
|
data/_sass/_alert.scss
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
//
|
2
|
-
// Base styles
|
3
|
-
//
|
4
|
-
|
5
|
-
.alert {
|
6
|
-
position: relative;
|
7
|
-
padding: $alert-padding-y $alert-padding-x;
|
8
|
-
margin-bottom: $alert-margin-bottom;
|
9
|
-
border: $alert-border-width solid transparent;
|
10
|
-
@include border-radius($alert-border-radius);
|
11
|
-
}
|
12
|
-
|
13
|
-
// Headings for larger alerts
|
14
|
-
.alert-heading {
|
15
|
-
// Specified to prevent conflicts of changing $headings-color
|
16
|
-
color: inherit;
|
17
|
-
}
|
18
|
-
|
19
|
-
// Provide class for links that match alerts
|
20
|
-
.alert-link {
|
21
|
-
font-weight: $alert-link-font-weight;
|
22
|
-
}
|
23
|
-
|
24
|
-
|
25
|
-
// Dismissible alerts
|
26
|
-
//
|
27
|
-
// Expand the right padding and account for the close button's positioning.
|
28
|
-
|
29
|
-
.alert-dismissible {
|
30
|
-
padding-right: $close-font-size + $alert-padding-x * 2;
|
31
|
-
|
32
|
-
// Adjust close link position
|
33
|
-
.close {
|
34
|
-
position: absolute;
|
35
|
-
top: 0;
|
36
|
-
right: 0;
|
37
|
-
padding: $alert-padding-y $alert-padding-x;
|
38
|
-
color: inherit;
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
|
43
|
-
// Alternate styles
|
44
|
-
//
|
45
|
-
// Generate contextual modifier classes for colorizing the alert.
|
46
|
-
|
47
|
-
@each $color, $value in $theme-colors {
|
48
|
-
.alert-#{$color} {
|
49
|
-
@include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));
|
50
|
-
}
|
51
|
-
}
|
data/_sass/_badge.scss
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
// Base class
|
2
|
-
//
|
3
|
-
// Requires one of the contextual, color modifier classes for `color` and
|
4
|
-
// `background-color`.
|
5
|
-
|
6
|
-
.badge {
|
7
|
-
display: inline-block;
|
8
|
-
padding: $badge-padding-y $badge-padding-x;
|
9
|
-
font-size: $badge-font-size;
|
10
|
-
font-weight: $badge-font-weight;
|
11
|
-
line-height: 1;
|
12
|
-
text-align: center;
|
13
|
-
white-space: nowrap;
|
14
|
-
vertical-align: baseline;
|
15
|
-
@include border-radius($badge-border-radius);
|
16
|
-
|
17
|
-
@at-root a#{&} {
|
18
|
-
@include hover-focus {
|
19
|
-
text-decoration: none;
|
20
|
-
}
|
21
|
-
}
|
22
|
-
|
23
|
-
// Empty badges collapse automatically
|
24
|
-
&:empty {
|
25
|
-
display: none;
|
26
|
-
}
|
27
|
-
}
|
28
|
-
|
29
|
-
// Quick fix for badges in buttons
|
30
|
-
.btn .badge {
|
31
|
-
position: relative;
|
32
|
-
top: -1px;
|
33
|
-
}
|
34
|
-
|
35
|
-
// Pill badges
|
36
|
-
//
|
37
|
-
// Make them extra rounded with a modifier to replace v3's badges.
|
38
|
-
|
39
|
-
.badge-pill {
|
40
|
-
padding-right: $badge-pill-padding-x;
|
41
|
-
padding-left: $badge-pill-padding-x;
|
42
|
-
@include border-radius($badge-pill-border-radius);
|
43
|
-
}
|
44
|
-
|
45
|
-
// Colors
|
46
|
-
//
|
47
|
-
// Contextual variations (linked badges get darker on :hover).
|
48
|
-
|
49
|
-
@each $color, $value in $theme-colors {
|
50
|
-
.badge-#{$color} {
|
51
|
-
@include badge-variant($value);
|
52
|
-
}
|
53
|
-
}
|
data/_sass/_breadcrumb.scss
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
.breadcrumb {
|
2
|
-
display: flex;
|
3
|
-
flex-wrap: wrap;
|
4
|
-
padding: $breadcrumb-padding-y $breadcrumb-padding-x;
|
5
|
-
margin-bottom: $breadcrumb-margin-bottom;
|
6
|
-
list-style: none;
|
7
|
-
background-color: $breadcrumb-bg;
|
8
|
-
@include border-radius($breadcrumb-border-radius);
|
9
|
-
}
|
10
|
-
|
11
|
-
.breadcrumb-item {
|
12
|
-
// The separator between breadcrumbs (by default, a forward-slash: "/")
|
13
|
-
+ .breadcrumb-item {
|
14
|
-
padding-left: $breadcrumb-item-padding;
|
15
|
-
|
16
|
-
&::before {
|
17
|
-
display: inline-block; // Suppress underlining of the separator in modern browsers
|
18
|
-
padding-right: $breadcrumb-item-padding;
|
19
|
-
color: $breadcrumb-divider-color;
|
20
|
-
content: $breadcrumb-divider;
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
// IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
|
25
|
-
// without `<ul>`s. The `::before` pseudo-element generates an element
|
26
|
-
// *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
|
27
|
-
//
|
28
|
-
// To trick IE into suppressing the underline, we give the pseudo-element an
|
29
|
-
// underline and then immediately remove it.
|
30
|
-
+ .breadcrumb-item:hover::before {
|
31
|
-
text-decoration: underline;
|
32
|
-
}
|
33
|
-
// stylelint-disable-next-line no-duplicate-selectors
|
34
|
-
+ .breadcrumb-item:hover::before {
|
35
|
-
text-decoration: none;
|
36
|
-
}
|
37
|
-
|
38
|
-
&.active {
|
39
|
-
color: $breadcrumb-active-color;
|
40
|
-
}
|
41
|
-
}
|
data/_sass/_button-group.scss
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
// stylelint-disable selector-no-qualifying-type
|
2
|
-
|
3
|
-
// Make the div behave like a button
|
4
|
-
.btn-group,
|
5
|
-
.btn-group-vertical {
|
6
|
-
position: relative;
|
7
|
-
display: inline-flex;
|
8
|
-
vertical-align: middle; // match .btn alignment given font-size hack above
|
9
|
-
|
10
|
-
> .btn {
|
11
|
-
position: relative;
|
12
|
-
flex: 1 1 auto;
|
13
|
-
|
14
|
-
// Bring the hover, focused, and "active" buttons to the front to overlay
|
15
|
-
// the borders properly
|
16
|
-
@include hover {
|
17
|
-
z-index: 1;
|
18
|
-
}
|
19
|
-
&:focus,
|
20
|
-
&:active,
|
21
|
-
&.active {
|
22
|
-
z-index: 1;
|
23
|
-
}
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
// Optional: Group multiple button groups together for a toolbar
|
28
|
-
.btn-toolbar {
|
29
|
-
display: flex;
|
30
|
-
flex-wrap: wrap;
|
31
|
-
justify-content: flex-start;
|
32
|
-
|
33
|
-
.input-group {
|
34
|
-
width: auto;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
|
38
|
-
.btn-group {
|
39
|
-
// Prevent double borders when buttons are next to each other
|
40
|
-
> .btn:not(:first-child),
|
41
|
-
> .btn-group:not(:first-child) {
|
42
|
-
margin-left: -$btn-border-width;
|
43
|
-
}
|
44
|
-
|
45
|
-
// Reset rounded corners
|
46
|
-
> .btn:not(:last-child):not(.dropdown-toggle),
|
47
|
-
> .btn-group:not(:last-child) > .btn {
|
48
|
-
@include border-right-radius(0);
|
49
|
-
}
|
50
|
-
|
51
|
-
> .btn:not(:first-child),
|
52
|
-
> .btn-group:not(:first-child) > .btn {
|
53
|
-
@include border-left-radius(0);
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
// Sizing
|
58
|
-
//
|
59
|
-
// Remix the default button sizing classes into new ones for easier manipulation.
|
60
|
-
|
61
|
-
.btn-group-sm > .btn { @extend .btn-sm; }
|
62
|
-
.btn-group-lg > .btn { @extend .btn-lg; }
|
63
|
-
|
64
|
-
|
65
|
-
//
|
66
|
-
// Split button dropdowns
|
67
|
-
//
|
68
|
-
|
69
|
-
.dropdown-toggle-split {
|
70
|
-
padding-right: $btn-padding-x * .75;
|
71
|
-
padding-left: $btn-padding-x * .75;
|
72
|
-
|
73
|
-
&::after,
|
74
|
-
.dropup &::after,
|
75
|
-
.dropright &::after {
|
76
|
-
margin-left: 0;
|
77
|
-
}
|
78
|
-
|
79
|
-
.dropleft &::before {
|
80
|
-
margin-right: 0;
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
.btn-sm + .dropdown-toggle-split {
|
85
|
-
padding-right: $btn-padding-x-sm * .75;
|
86
|
-
padding-left: $btn-padding-x-sm * .75;
|
87
|
-
}
|
88
|
-
|
89
|
-
.btn-lg + .dropdown-toggle-split {
|
90
|
-
padding-right: $btn-padding-x-lg * .75;
|
91
|
-
padding-left: $btn-padding-x-lg * .75;
|
92
|
-
}
|
93
|
-
|
94
|
-
|
95
|
-
// The clickable button for toggling the menu
|
96
|
-
// Set the same inset shadow as the :active state
|
97
|
-
.btn-group.show .dropdown-toggle {
|
98
|
-
@include box-shadow($btn-active-box-shadow);
|
99
|
-
|
100
|
-
// Show no shadow for `.btn-link` since it has no other button styles.
|
101
|
-
&.btn-link {
|
102
|
-
@include box-shadow(none);
|
103
|
-
}
|
104
|
-
}
|
105
|
-
|
106
|
-
|
107
|
-
//
|
108
|
-
// Vertical button groups
|
109
|
-
//
|
110
|
-
|
111
|
-
.btn-group-vertical {
|
112
|
-
flex-direction: column;
|
113
|
-
align-items: flex-start;
|
114
|
-
justify-content: center;
|
115
|
-
|
116
|
-
> .btn,
|
117
|
-
> .btn-group {
|
118
|
-
width: 100%;
|
119
|
-
}
|
120
|
-
|
121
|
-
> .btn:not(:first-child),
|
122
|
-
> .btn-group:not(:first-child) {
|
123
|
-
margin-top: -$btn-border-width;
|
124
|
-
}
|
125
|
-
|
126
|
-
// Reset rounded corners
|
127
|
-
> .btn:not(:last-child):not(.dropdown-toggle),
|
128
|
-
> .btn-group:not(:last-child) > .btn {
|
129
|
-
@include border-bottom-radius(0);
|
130
|
-
}
|
131
|
-
|
132
|
-
> .btn:not(:first-child),
|
133
|
-
> .btn-group:not(:first-child) > .btn {
|
134
|
-
@include border-top-radius(0);
|
135
|
-
}
|
136
|
-
}
|
137
|
-
|
138
|
-
|
139
|
-
// Checkbox and radio options
|
140
|
-
//
|
141
|
-
// In order to support the browser's form validation feedback, powered by the
|
142
|
-
// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
|
143
|
-
// `display: none;` or `visibility: hidden;` as that also hides the popover.
|
144
|
-
// Simply visually hiding the inputs via `opacity` would leave them clickable in
|
145
|
-
// certain cases which is prevented by using `clip` and `pointer-events`.
|
146
|
-
// This way, we ensure a DOM element is visible to position the popover from.
|
147
|
-
//
|
148
|
-
// See https://github.com/twbs/bootstrap/pull/12794 and
|
149
|
-
// https://github.com/twbs/bootstrap/pull/14559 for more information.
|
150
|
-
|
151
|
-
.btn-group-toggle {
|
152
|
-
> .btn,
|
153
|
-
> .btn-group > .btn {
|
154
|
-
margin-bottom: 0; // Override default `<label>` value
|
155
|
-
|
156
|
-
input[type="radio"],
|
157
|
-
input[type="checkbox"] {
|
158
|
-
position: absolute;
|
159
|
-
clip: rect(0, 0, 0, 0);
|
160
|
-
pointer-events: none;
|
161
|
-
}
|
162
|
-
}
|
163
|
-
}
|