yoyoyo 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +25 -110
  3. data/_includes/footer.html +4 -1
  4. data/_includes/head.html +48 -23
  5. data/_includes/header.html +6 -10
  6. data/_includes/pagination.html +26 -34
  7. data/_includes/post-card.html +16 -8
  8. data/_layouts/default.html +25 -27
  9. data/_layouts/home.html +8 -16
  10. data/_layouts/post.html +39 -21
  11. data/_sass/footer.scss +45 -0
  12. data/_sass/header.scss +55 -26
  13. data/_sass/highlight.scss +159 -0
  14. data/_sass/main.scss +282 -5
  15. data/assets/.DS_Store +0 -0
  16. data/assets/css/styles.scss +1 -2
  17. data/assets/icon/.DS_Store +0 -0
  18. data/assets/icon/android-icon-144x144.png +0 -0
  19. data/assets/icon/android-icon-192x192.png +0 -0
  20. data/assets/icon/android-icon-36x36.png +0 -0
  21. data/assets/icon/android-icon-48x48.png +0 -0
  22. data/assets/icon/android-icon-72x72.png +0 -0
  23. data/assets/icon/android-icon-96x96.png +0 -0
  24. data/assets/icon/apple-icon-114x114.png +0 -0
  25. data/assets/icon/apple-icon-120x120.png +0 -0
  26. data/assets/icon/apple-icon-144x144.png +0 -0
  27. data/assets/icon/apple-icon-152x152.png +0 -0
  28. data/assets/icon/apple-icon-180x180.png +0 -0
  29. data/assets/icon/apple-icon-57x57.png +0 -0
  30. data/assets/icon/apple-icon-60x60.png +0 -0
  31. data/assets/icon/apple-icon-72x72.png +0 -0
  32. data/assets/icon/apple-icon-76x76.png +0 -0
  33. data/assets/icon/apple-icon-precomposed.png +0 -0
  34. data/assets/icon/apple-icon.png +0 -0
  35. data/assets/icon/arrow_left.svg +1 -0
  36. data/assets/icon/arrow_left_dark.svg +1 -0
  37. data/assets/icon/arrow_right.svg +1 -0
  38. data/assets/icon/arrow_right_dark.svg +1 -0
  39. data/assets/icon/favicon-16x16.png +0 -0
  40. data/assets/icon/favicon-32x32.png +0 -0
  41. data/assets/icon/favicon-96x96.png +0 -0
  42. data/assets/icon/logo-dark.svg +9 -0
  43. data/assets/icon/logo.svg +9 -0
  44. data/assets/icon/ms-icon-144x144.png +0 -0
  45. data/assets/icon/ms-icon-150x150.png +0 -0
  46. data/assets/icon/ms-icon-310x310.png +0 -0
  47. data/assets/icon/ms-icon-70x70.png +0 -0
  48. data/assets/images/.DS_Store +0 -0
  49. data/assets/images/default.jpg +0 -0
  50. data/assets/js/app.js +16 -4504
  51. data/assets/js/precache-manifest.11bcfbfe6b7dae85e86faa087e0a5e06.js +6 -0
  52. data/assets/js/precache-manifest.1915fac201dd24dae9507688967c5188.js +6 -0
  53. data/assets/js/precache-manifest.2065e6686799b73f209ccb8fd864b1b8.js +6 -0
  54. data/assets/js/precache-manifest.39102f4dc1b24b71a25b460ac941d00b.js +6 -0
  55. data/assets/js/precache-manifest.a688172c829679a4a1893fe27d269fe6.js +6 -0
  56. data/assets/js/precache-manifest.a83e5c3f4f128d9750d50cf5abb68afd.js +6 -0
  57. data/assets/js/precache-manifest.c327e4d6b681a2a6c7a14644cb451ef5.js +6 -0
  58. data/assets/js/precache-manifest.f1b04314ba8d2ced03f1d0431a7dd77d.js +6 -0
  59. data/assets/js/sw.js +1 -0
  60. data/assets/js/workbox-0eb1d4be.js +1 -0
  61. data/assets/js/workbox-468c4d03.js +1 -0
  62. data/assets/js/workbox-d9851aed.js +1 -0
  63. metadata +59 -101
  64. data/_sass/_alert.scss +0 -51
  65. data/_sass/_badge.scss +0 -53
  66. data/_sass/_breadcrumb.scss +0 -41
  67. data/_sass/_button-group.scss +0 -163
  68. data/_sass/_buttons.scss +0 -140
  69. data/_sass/_card.scss +0 -310
  70. data/_sass/_carousel.scss +0 -198
  71. data/_sass/_close.scss +0 -44
  72. data/_sass/_code.scss +0 -48
  73. data/_sass/_custom-forms.scss +0 -507
  74. data/_sass/_dropdown.scss +0 -191
  75. data/_sass/_forms.scss +0 -334
  76. data/_sass/_functions.scss +0 -86
  77. data/_sass/_grid.scss +0 -52
  78. data/_sass/_images.scss +0 -42
  79. data/_sass/_input-group.scss +0 -193
  80. data/_sass/_jumbotron.scss +0 -16
  81. data/_sass/_list-group.scss +0 -121
  82. data/_sass/_media.scss +0 -8
  83. data/_sass/_mixins.scss +0 -41
  84. data/_sass/_modal.scss +0 -186
  85. data/_sass/_nav.scss +0 -120
  86. data/_sass/_navbar.scss +0 -299
  87. data/_sass/_pagination.scss +0 -78
  88. data/_sass/_popover.scss +0 -183
  89. data/_sass/_print.scss +0 -141
  90. data/_sass/_progress.scss +0 -34
  91. data/_sass/_reboot.scss +0 -462
  92. data/_sass/_root.scss +0 -19
  93. data/_sass/_spinners.scss +0 -53
  94. data/_sass/_tables.scss +0 -187
  95. data/_sass/_toasts.scss +0 -43
  96. data/_sass/_tooltip.scss +0 -115
  97. data/_sass/_transitions.scss +0 -22
  98. data/_sass/_type.scss +0 -125
  99. data/_sass/_utilities.scss +0 -16
  100. data/_sass/_variables.scss +0 -1091
  101. data/_sass/body.scss +0 -22
  102. data/_sass/bootstrap-grid.scss +0 -29
  103. data/_sass/bootstrap-reboot.scss +0 -12
  104. data/_sass/bootstrap.scss +0 -44
  105. data/_sass/mixins/_alert.scss +0 -13
  106. data/_sass/mixins/_background-variant.scss +0 -21
  107. data/_sass/mixins/_badge.scss +0 -11
  108. data/_sass/mixins/_border-radius.scss +0 -35
  109. data/_sass/mixins/_box-shadow.scss +0 -5
  110. data/_sass/mixins/_breakpoints.scss +0 -123
  111. data/_sass/mixins/_buttons.scss +0 -111
  112. data/_sass/mixins/_caret.scss +0 -62
  113. data/_sass/mixins/_clearfix.scss +0 -7
  114. data/_sass/mixins/_float.scss +0 -11
  115. data/_sass/mixins/_forms.scss +0 -198
  116. data/_sass/mixins/_gradients.scss +0 -45
  117. data/_sass/mixins/_grid-framework.scss +0 -66
  118. data/_sass/mixins/_grid.scss +0 -51
  119. data/_sass/mixins/_hover.scss +0 -37
  120. data/_sass/mixins/_image.scss +0 -36
  121. data/_sass/mixins/_list-group.scss +0 -21
  122. data/_sass/mixins/_lists.scss +0 -7
  123. data/_sass/mixins/_nav-divider.scss +0 -10
  124. data/_sass/mixins/_pagination.scss +0 -22
  125. data/_sass/mixins/_reset-text.scss +0 -17
  126. data/_sass/mixins/_resize.scss +0 -6
  127. data/_sass/mixins/_screen-reader.scss +0 -33
  128. data/_sass/mixins/_size.scss +0 -6
  129. data/_sass/mixins/_table-row.scss +0 -39
  130. data/_sass/mixins/_text-emphasis.scss +0 -14
  131. data/_sass/mixins/_text-hide.scss +0 -13
  132. data/_sass/mixins/_text-truncate.scss +0 -8
  133. data/_sass/mixins/_transition.scss +0 -16
  134. data/_sass/mixins/_visibility.scss +0 -7
  135. data/_sass/utilities/_align.scss +0 -8
  136. data/_sass/utilities/_background.scss +0 -19
  137. data/_sass/utilities/_borders.scss +0 -63
  138. data/_sass/utilities/_clearfix.scss +0 -3
  139. data/_sass/utilities/_display.scss +0 -38
  140. data/_sass/utilities/_embed.scss +0 -39
  141. data/_sass/utilities/_flex.scss +0 -51
  142. data/_sass/utilities/_float.scss +0 -9
  143. data/_sass/utilities/_overflow.scss +0 -5
  144. data/_sass/utilities/_position.scss +0 -32
  145. data/_sass/utilities/_screenreaders.scss +0 -11
  146. data/_sass/utilities/_shadows.scss +0 -6
  147. data/_sass/utilities/_sizing.scss +0 -20
  148. data/_sass/utilities/_spacing.scss +0 -73
  149. data/_sass/utilities/_text.scss +0 -67
  150. data/_sass/utilities/_visibility.scss +0 -11
  151. data/assets/js/app.js.map +0 -1
  152. data/assets/ts/app.ts +0 -10
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "ff5b8c77411cc08ef4f2",
4
+ "url": "app.js"
5
+ }
6
+ ]);
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "8d872fd8f9ceefd05087",
4
+ "url": "app.js"
5
+ }
6
+ ]);
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "aaa054fd558d6b89fdfc",
4
+ "url": "app.js"
5
+ }
6
+ ]);
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "e5ffa231c62f7d38b202",
4
+ "url": "app.js"
5
+ }
6
+ ]);
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "697a968fcd51ed99a16f",
4
+ "url": "app.js"
5
+ }
6
+ ]);
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "d6b00b392e8d84f04a02",
4
+ "url": "app.js"
5
+ }
6
+ ]);
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "09d5b65603604367ad0f",
4
+ "url": "app.js"
5
+ }
6
+ ]);
@@ -0,0 +1,6 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "d92b12ed5b040a2c6e93",
4
+ "url": "app.js"
5
+ }
6
+ ]);
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.9
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
- - Hertz Zhang
8
- autorequire:
7
+ - Henry Zhang
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-08 00:00:00.000000000 Z
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
- - zhanghelook@outlook.com
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/_alert.scss
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/app.js.map
211
- - assets/ts/app.ts
212
- homepage: https://github.com/hertzZhang/yoyoyo
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
- post_install_message:
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
- rubyforge_project:
233
- rubygems_version: 2.5.2.3
234
- signing_key:
191
+ rubygems_version: 3.5.4
192
+ signing_key:
235
193
  specification_version: 4
236
- summary: 一个漂亮的、自适应的、适合程序员的 Jekyll 主题。
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
- }
@@ -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
- }
@@ -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
- }