jekyll-text-theme 1.5.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -153
  3. data/_data/authors.yml +0 -0
  4. data/_data/licenses.yml +16 -0
  5. data/_data/locale.yml +4 -10
  6. data/_data/navigation.yml +13 -0
  7. data/_data/variables.yml +22 -6
  8. data/_includes/analytics-providers/custom.html +0 -0
  9. data/_includes/analytics-providers/google.html +16 -0
  10. data/_includes/analytics.html +7 -0
  11. data/_includes/article-footer/custom.html +1 -0
  12. data/_includes/article-footer/license.html +24 -0
  13. data/_includes/article-info.html +90 -0
  14. data/_includes/aside/toc.html +1 -0
  15. data/_includes/author-profile.html +50 -0
  16. data/_includes/comments-providers/custom.html +0 -0
  17. data/_includes/comments-providers/disqus.html +22 -0
  18. data/_includes/comments-providers/gitalk.html +32 -0
  19. data/_includes/comments.html +9 -0
  20. data/_includes/follow-me.html +84 -0
  21. data/_includes/footer.html +39 -0
  22. data/_includes/head.html +54 -0
  23. data/_includes/header.html +33 -0
  24. data/_includes/markdown-enhancements.html +32 -0
  25. data/_includes/{utils → markdown-enhancements}/chart.html +1 -3
  26. data/_includes/{utils → markdown-enhancements}/mathjax.html +11 -4
  27. data/_includes/{utils → markdown-enhancements}/mermaid.html +1 -3
  28. data/_includes/pageview-providers/custom.html +0 -0
  29. data/_includes/pageview-providers/custom/home.html +0 -0
  30. data/_includes/pageview-providers/custom/post.html +0 -0
  31. data/_includes/pageview-providers/leancloud/home.html +35 -0
  32. data/_includes/pageview-providers/leancloud/leancloud.js +71 -0
  33. data/_includes/pageview-providers/leancloud/post.html +31 -0
  34. data/_includes/pageview.html +31 -0
  35. data/_includes/scripts/archieve.js +238 -0
  36. data/_includes/scripts/article-list.html +27 -0
  37. data/_includes/scripts/article.js +24 -0
  38. data/_includes/scripts/aside/affix.js +26 -0
  39. data/_includes/scripts/aside/toc.js +37 -0
  40. data/_includes/scripts/common.js +3 -0
  41. data/_includes/scripts/home.js +3 -0
  42. data/_includes/scripts/lib/affix.js +103 -0
  43. data/_includes/scripts/{utils.html → lib/lazyload.js} +55 -92
  44. data/_includes/scripts/lib/scroll.js +13 -0
  45. data/_includes/scripts/lib/throttle.js +28 -0
  46. data/_includes/scripts/lib/toc.js +106 -0
  47. data/_includes/scripts/page.js +3 -0
  48. data/_includes/scripts/sidebar.js +14 -0
  49. data/_includes/scripts/utils.js +38 -0
  50. data/_includes/scripts/variables.html +27 -0
  51. data/_includes/sidebar/toc.html +27 -0
  52. data/_includes/snippets/assign.html +5 -0
  53. data/_includes/snippets/get-nav-url.html +3 -2
  54. data/_includes/snippets/page-title.html +11 -6
  55. data/_includes/snippets/page-url.html +3 -1
  56. data/_includes/snippets/to-boolean.html +7 -0
  57. data/_includes/{icon → svg/icon}/social/behance.svg +0 -0
  58. data/_includes/{icon → svg/icon}/social/douban.svg +0 -0
  59. data/_includes/{icon → svg/icon}/social/facebook.svg +0 -0
  60. data/_includes/{icon → svg/icon}/social/flicker.svg +0 -0
  61. data/_includes/{icon → svg/icon}/social/github.svg +0 -0
  62. data/_includes/{icon → svg/icon}/social/googleplus.svg +0 -0
  63. data/_includes/{icon → svg/icon}/social/linkedin.svg +0 -0
  64. data/_includes/{icon → svg/icon}/social/mail.svg +0 -0
  65. data/_includes/{icon → svg/icon}/social/pinterest.svg +0 -0
  66. data/_includes/{icon → svg/icon}/social/qq.svg +0 -0
  67. data/_includes/{icon → svg/icon}/social/twitter.svg +0 -0
  68. data/_includes/{icon → svg/icon}/social/weibo.svg +0 -0
  69. data/_includes/{icon → svg/icon}/social/weixin.svg +0 -0
  70. data/_includes/{icon → svg/icon}/social/zhihu.svg +0 -0
  71. data/_includes/{logo → svg}/logo.svg +1 -1
  72. data/_includes/tags.html +52 -0
  73. data/_layouts/404.html +12 -0
  74. data/_layouts/archive.html +25 -0
  75. data/_layouts/article.html +78 -0
  76. data/_layouts/base.html +13 -33
  77. data/_layouts/home.html +135 -121
  78. data/_layouts/landing.html +164 -0
  79. data/_layouts/page.html +157 -9
  80. data/_sass/additional/_alert.scss +25 -0
  81. data/_sass/additional/_photo-frame.scss +17 -0
  82. data/_sass/animate/_fade-in-down.scss +1 -1
  83. data/_sass/animate/_fade-in.scss +1 -1
  84. data/_sass/common/_classes.scss +5 -2
  85. data/_sass/common/_reset.scss +32 -22
  86. data/_sass/common/_variables.scss +87 -31
  87. data/_sass/common/classes/_animation.scss +9 -0
  88. data/_sass/common/classes/_clearfix.scss +8 -0
  89. data/_sass/common/classes/_grid.scss +48 -0
  90. data/_sass/common/classes/_horizontal-rules.scss +14 -0
  91. data/_sass/common/classes/_link.scss +18 -145
  92. data/_sass/common/classes/_media.scss +1 -2
  93. data/_sass/common/classes/_overflow.scss +8 -0
  94. data/_sass/common/classes/_pseudo.scss +26 -0
  95. data/_sass/common/classes/_shadow.scss +13 -5
  96. data/_sass/common/classes/_spacing.scss +52 -0
  97. data/_sass/common/components/_button.scss +179 -47
  98. data/_sass/common/components/_card.scss +18 -0
  99. data/_sass/common/components/_menu.scss +43 -0
  100. data/_sass/common/components/_toc.scss +125 -0
  101. data/_sass/components/_article.content.scss +37 -45
  102. data/_sass/components/_article.info.scss +25 -0
  103. data/_sass/components/_author-profile.scss +43 -0
  104. data/_sass/components/_follow-me.scss +16 -19
  105. data/_sass/components/_footer.scss +16 -6
  106. data/_sass/components/_header.scss +26 -18
  107. data/_sass/components/_license.scss +1 -25
  108. data/_sass/components/_main.scss +13 -11
  109. data/_sass/components/_tags.scss +17 -36
  110. data/_sass/layout/{_error-404.scss → _404.scss} +2 -2
  111. data/_sass/layout/_all.scss +72 -63
  112. data/_sass/layout/_article.scss +44 -0
  113. data/_sass/layout/_home.scss +61 -52
  114. data/_sass/layout/_landing.scss +104 -0
  115. data/_sass/layout/_page.scss +155 -0
  116. data/_sass/{colors → skins}/_chocolate.scss +17 -6
  117. data/_sass/skins/_dark.scss +56 -0
  118. data/_sass/{colors → skins}/_default.scss +16 -5
  119. data/_sass/{colors → skins}/_forest.scss +16 -5
  120. data/_sass/{colors → skins}/_ocean.scss +16 -5
  121. data/_sass/{colors → skins}/_orange.scss +20 -9
  122. data/assets/android-chrome-192x192.png +0 -0
  123. data/assets/android-chrome-512x512.png +0 -0
  124. data/assets/apple-touch-icon.png +0 -0
  125. data/assets/browserconfig.xml +9 -0
  126. data/assets/css/main.scss +46 -0
  127. data/assets/favicon-16x16.png +0 -0
  128. data/assets/favicon-32x32.png +0 -0
  129. data/assets/favicon.ico +0 -0
  130. data/assets/images/logo/logo.svg +1 -1
  131. data/assets/mstile-144x144.png +0 -0
  132. data/assets/mstile-150x150.png +0 -0
  133. data/assets/mstile-310x150.png +0 -0
  134. data/assets/mstile-310x310.png +0 -0
  135. data/assets/mstile-70x70.png +0 -0
  136. data/assets/safari-pinned-tab.svg +38 -0
  137. data/assets/site.webmanifest +19 -0
  138. metadata +108 -76
  139. data/_includes/common-head.html +0 -10
  140. data/_includes/components/article-data.html +0 -55
  141. data/_includes/components/follow-me.html +0 -78
  142. data/_includes/components/footer.html +0 -10
  143. data/_includes/components/header.html +0 -42
  144. data/_includes/components/license.html +0 -26
  145. data/_includes/components/tags.html +0 -52
  146. data/_includes/head-icons-rel.html +0 -38
  147. data/_includes/icon/clear.svg +0 -3
  148. data/_includes/icon/link.svg +0 -1
  149. data/_includes/icon/menu.svg +0 -3
  150. data/_includes/icon/next.svg +0 -3
  151. data/_includes/icon/omit.svg +0 -1
  152. data/_includes/icon/previous.svg +0 -3
  153. data/_includes/icon/search.svg +0 -3
  154. data/_includes/scripts/all.html +0 -244
  155. data/_includes/scripts/common.html +0 -30
  156. data/_includes/scripts/data.html +0 -27
  157. data/_includes/scripts/home.html +0 -26
  158. data/_includes/scripts/page-post.html +0 -32
  159. data/_includes/scripts/post.html +0 -183
  160. data/_includes/utils/comment-disqus.html +0 -19
  161. data/_includes/utils/comment-gitalk.html +0 -25
  162. data/_includes/utils/google-analytics.html +0 -11
  163. data/_layouts/all.html +0 -20
  164. data/_layouts/error-404.html +0 -9
  165. data/_layouts/post.html +0 -60
  166. data/_sass/colors/_dark.scss +0 -45
  167. data/_sass/common/classes/_shape.scss +0 -19
  168. data/_sass/common/classes/_space.scss +0 -40
  169. data/_sass/components/_article.content.extra.scss +0 -41
  170. data/_sass/components/_article.data.scss +0 -36
  171. data/_sass/components/_pagination.scss +0 -19
  172. data/_sass/components/_toc.scss +0 -72
  173. data/_sass/layout/_default.scss +0 -19
  174. data/_sass/layout/_post.scss +0 -80
  175. data/assets/css/blog.scss +0 -41
  176. data/assets/images/logo/icon-120x120.png +0 -0
  177. data/assets/images/logo/icon-128x128.png +0 -0
  178. data/assets/images/logo/icon-150x150.png +0 -0
  179. data/assets/images/logo/icon-152x152.png +0 -0
  180. data/assets/images/logo/icon-167x167.png +0 -0
  181. data/assets/images/logo/icon-16x16.png +0 -0
  182. data/assets/images/logo/icon-180x180.png +0 -0
  183. data/assets/images/logo/icon-192x192.png +0 -0
  184. data/assets/images/logo/icon-310x150.png +0 -0
  185. data/assets/images/logo/icon-310x310.png +0 -0
  186. data/assets/images/logo/icon-48x48.png +0 -0
  187. data/assets/images/logo/icon-70x70.png +0 -0
@@ -0,0 +1,71 @@
1
+ (function() {
2
+ function errorHandler(error, callback) {
3
+ if (error) {
4
+ callback && callback(error);
5
+ throw error;
6
+ }
7
+ }
8
+
9
+ function pageview(_AV ,options) {
10
+ var AV = _AV;
11
+ var appId, appKey, appClass;
12
+ appId = options.appId;
13
+ appKey = options.appKey;
14
+ appClass = options.appClass;
15
+ AV.init({
16
+ appId: appId,
17
+ appKey: appKey
18
+ });
19
+ return {
20
+ get: get,
21
+ increase: increase
22
+ };
23
+
24
+ function searchKey(key) {
25
+ var query = new AV.Query(appClass);
26
+ query.equalTo('key', key);
27
+ return query.first();
28
+ }
29
+
30
+ function insert(key, title) {
31
+ var Blog = AV.Object.extend(appClass);
32
+ var blog = new Blog();
33
+ blog.set('title', title);
34
+ blog.set('key', key);
35
+ blog.set('views', 0);
36
+ return blog.save();
37
+ }
38
+
39
+ function increment(result) {
40
+ result.increment('views', 1);
41
+ return result.save(null, {
42
+ fetchWhenSave: true
43
+ });
44
+ }
45
+
46
+ function get(key, callback) {
47
+ searchKey(key).then(function(result) {
48
+ if (result) {
49
+ callback && callback(result.attributes.views);
50
+ }
51
+ }, errorHandler);
52
+ }
53
+
54
+ function increase(key, title, callback) {
55
+ searchKey(key).then(function(result) {
56
+ if (result) {
57
+ increment(result).then(function(result) {
58
+ callback && callback(result.attributes.views);
59
+ });
60
+ } else {
61
+ insert(key, title).then(function(result) {
62
+ increment(result).then(function(result) {
63
+ callback && callback(result.attributes.views);
64
+ });
65
+ }, errorHandler);
66
+ }
67
+ }, errorHandler);
68
+ }
69
+ }
70
+ window.pageview = pageview;
71
+ })();
@@ -0,0 +1,31 @@
1
+ {%- include snippets/get-sources.html -%}
2
+ {%- assign _sources = __return -%}
3
+
4
+ {%- assign _LEANCLOUD_APP_ID = site.pageview.leancloud.app_id -%}
5
+ {%- assign _LEANCLOUD_APP_KEY = site.pageview.leancloud.app_key -%}
6
+ {%- assign _LEANCLOUD_APP_CLASS = site.pageview.leancloud.app_class -%}
7
+
8
+ {%- if page.key and
9
+ _LEANCLOUD_APP_ID and
10
+ _LEANCLOUD_APP_KEY and
11
+ _LEANCLOUD_APP_CLASS -%}
12
+
13
+ <script>
14
+ {%- include pageview-providers/leancloud/leancloud.js -%}
15
+ </script>
16
+ <script>
17
+ window.Lazyload.js(['{{ _sources.jquery }}', '{{ _sources.leancloud_js_sdk}}'], function() {
18
+ var pageview = window.pageview(AV, {
19
+ appId: '{{ _LEANCLOUD_APP_ID }}',
20
+ appKey: '{{ _LEANCLOUD_APP_KEY }}',
21
+ appClass: '{{ _LEANCLOUD_APP_CLASS }}'
22
+ });
23
+ var key = '{{ page.key }}';
24
+ var title = window.decodeUrl('{{ page.title | url_encode }}');
25
+ pageview.increase(key, title, function(view) {
26
+ $("[data-page-key='{{ page.key }}']").text(view);
27
+ });
28
+ });
29
+ </script>
30
+
31
+ {%- endif -%}
@@ -0,0 +1,31 @@
1
+ {%- assign __source = page.pageview -%}
2
+ {%- assign __target = site.data.variables.default.pageview -%}
3
+ {%- include snippets/assign.html -%}
4
+ {%- assign _pageview = __return -%}
5
+
6
+
7
+ {%- if page.layout == "home" -%}
8
+
9
+ {%- if jekyll.environment != "development" -%}
10
+ {%- if site.pageview.provider == 'leancloud' -%}
11
+ {%- include pageview-providers/leancloud/home.html -%}
12
+ {%- elsif site.pageview.provider == 'custom' -%}
13
+ {%- include pageview-providers/custom/home.html -%}
14
+ {%- endif -%}
15
+ {%- endif -%}
16
+
17
+
18
+ {%- elsif page.layout == "article" -%}
19
+ {%- if _pageview -%}
20
+
21
+ {%- if jekyll.environment != "development" and
22
+ jekyll.environment != "beta" -%}
23
+ {%- if site.pageview.provider == 'leancloud' -%}
24
+ {%- include pageview-providers/leancloud/post.html -%}
25
+ {%- elsif site.pageview.provider == 'custom' -%}
26
+ {%- include pageview-providers/custom/post.html -%}
27
+ {%- endif -%}
28
+ {%- endif -%}
29
+
30
+ {%- endif -%}
31
+ {%- endif -%}
@@ -0,0 +1,238 @@
1
+ (function() {
2
+ var SOURCES = window.TEXT_VARIABLES.sources;
3
+ function queryString() {
4
+ // This function is anonymous, is executed immediately and
5
+ // the return value is assigned to QueryString!
6
+ var i = 0, queryObj = {}, pair;
7
+ var queryStr = window.location.search.substring(1);
8
+ var queryArr = queryStr.split('&');
9
+ for (i = 0; i < queryArr.length; i++) {
10
+ pair = queryArr[i].split('=');
11
+ // If first entry with this name
12
+ if (typeof queryObj[pair[0]] === 'undefined') {
13
+ queryObj[pair[0]] = pair[1];
14
+ // If second entry with this name
15
+ } else if (typeof queryObj[pair[0]] === 'string') {
16
+ queryObj[pair[0]] = [queryObj[pair[0]], pair[1]];
17
+ // If third or later entry with this name
18
+ } else {
19
+ queryObj[pair[0]].push(pair[1]);
20
+ }
21
+ }
22
+ return queryObj;
23
+ }
24
+
25
+ function memorize(f) {
26
+ var cache = {};
27
+ return function () {
28
+ var key = Array.prototype.join.call(arguments, ',');
29
+ if (key in cache) return cache[key];
30
+ else return cache[key] = f.apply(this, arguments);
31
+ };
32
+ }
33
+
34
+ function initData(json) {
35
+ var _data = JSON.parse(json), i, j, cur, _tags;
36
+ Object.keys(_data).forEach(function(year) {
37
+ for (i = 0; i < _data[year].length; i++) {
38
+ cur = _data[year][i], _tags = cur.tags;
39
+ cur.title = window.decodeUrl(cur.title);
40
+ cur.url = window.decodeUrl(cur.url);
41
+ if (_tags && _tags.length > 0) {
42
+ for (j = 0; j < _tags.length; j++) {
43
+ _tags[j] = window.decodeUrl(_tags[j]);
44
+ }
45
+ }
46
+ }
47
+ });
48
+ return _data;
49
+ }
50
+
51
+ var setUrlQuery = (function() {
52
+ var baseUrl = window.location.href.split('?')[0];
53
+ return function(query) {
54
+ if (typeof query === 'string') {
55
+ window.history.replaceState(null, '', baseUrl + query);
56
+ } else {
57
+ window.history.replaceState(null, '', baseUrl);
58
+ }
59
+ };
60
+ })();
61
+
62
+ var data = initData('{%- include scripts/article-list.html -%}');
63
+
64
+ var searchByTag = memorize(function(tag) {
65
+ var i, j, cur, _tags, _tag, _data = {};
66
+ Object.keys(data).forEach(function(year) {
67
+ for (i = 0; i < data[year].length; i++) {
68
+ cur = data[year][i], _tags = cur.tags;
69
+ if (_tags && _tags.length > 0) {
70
+ for (j = 0; j < _tags.length; j++) {
71
+ _tag = _tags[j];
72
+ if (_tag === tag) {
73
+ if (!_data[year]) {
74
+ _data[year] = [];
75
+ }
76
+ _data[year].push(cur);
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ }
82
+ });
83
+ return _data;
84
+ });
85
+
86
+ var searchByQuery = function(query) {
87
+ var i, cur, _title, _data = { _: [] };
88
+ Object.keys(data).forEach(function(year) {
89
+ for (i = 0; i < data[year].length; i++) {
90
+ cur = data[year][i], _title = cur.title;
91
+ if (_title.toLowerCase().indexOf(query.toLowerCase()) >= 0) {
92
+ _data._.push(cur);
93
+ }
94
+ }
95
+ });
96
+ return _data;
97
+ };
98
+
99
+ window.Lazyload.js(SOURCES.jquery, function() {
100
+ var $root = $('.js-all');
101
+ var $searchBox = $('.js-search-box');
102
+ var $searchInput = $searchBox.children('input');
103
+ var $searchClear = $searchBox.children('.icon-clear');
104
+ var $tags = $('.js-tags');
105
+ var $articleTags = $('.js-article-tag');
106
+ var $tagShowAll = $('.js-tag-show-all');
107
+ var $result = $('.js-result');
108
+ var $lastFocusButton = null;
109
+
110
+ function addClass(dom, className) {
111
+ dom.hasClass(className) || dom.addClass(className);
112
+ }
113
+ function removeClass(dom, className) {
114
+ dom.hasClass(className) && dom.removeClass(className);
115
+ }
116
+
117
+ var renderHeading = memorize(function (year) {
118
+ return $('<h2 class="year">' + year + '</h2>');
119
+ });
120
+ var renderItem = memorize(function (key, title, date, url) {
121
+ return $('<li><span class="date">' + date + '</span><a class="link" href="' + url + '">' + title + '</a></li>');
122
+ });
123
+ function render(data) {
124
+ var $dom = $('<div></div>'), $section, $ul, i, cur;
125
+ Object.keys(data).sort(function(a, b) {
126
+ return b.localeCompare(a);
127
+ }).forEach(function(year) {
128
+ $section = $('<section></section>'), $ul = $('<ul></ul>');
129
+ (year === '_') || $section.append(renderHeading(year));
130
+ for (i = 0; i < data[year].length; i++) {
131
+ cur = data[year][i];
132
+ $ul.append(renderItem(cur.key, cur.title, cur.date, cur.url, cur.tags));
133
+ }
134
+ $dom.append($section.append($ul));
135
+ });
136
+ return $dom;
137
+ }
138
+
139
+ function searchButtonsByTag(_tag/*raw tag*/) {
140
+ if (!_tag) {
141
+ return $tagShowAll;
142
+ }
143
+ var _buttons = $articleTags.filter('[data-encode="' + _tag + '"]');
144
+ if (_buttons.length === 0) {
145
+ return $tagShowAll;
146
+ }
147
+ return _buttons;
148
+ }
149
+ function buttonFoucs(target) {
150
+ if (target) {
151
+ addClass(target, 'focus');
152
+ $lastFocusButton && !$lastFocusButton.is(target) && removeClass($lastFocusButton, 'focus');
153
+ $lastFocusButton = target;
154
+ }
155
+ }
156
+
157
+ function setIsSearch() {
158
+ addClass($root, 'search');
159
+ }
160
+ function setNotSearch() {
161
+ removeClass($root, 'search');
162
+ }
163
+ function setIsEmpty() {
164
+ removeClass($searchBox, 'not-empty');
165
+ }
166
+ function setNotEmpty() {
167
+ addClass($searchBox, 'not-empty');
168
+ }
169
+ function setSearchBoxVal(val) {
170
+ ($searchInput.val() === val) || $searchInput.val(val);
171
+ }
172
+ function clearSearchBox() {
173
+ setSearchBoxVal(''); queryInput('');
174
+ }
175
+
176
+ function showAll() {
177
+ setNotSearch(); setIsEmpty(); buttonFoucs($tagShowAll); setUrlQuery();
178
+ $result.html(render(data));
179
+ }
180
+ function tagSelect(tag/*decode tag*/, target) {
181
+ var _tag;
182
+ if (tag === '' || tag === undefined) {
183
+ showAll();
184
+ } else {
185
+ $result.html(render(searchByTag(tag)));
186
+ }
187
+ if (target) {
188
+ buttonFoucs(target);
189
+ _tag = target.attr('data-encode');
190
+ if (_tag === '' || typeof _tag !== 'string') {
191
+ setUrlQuery();
192
+ } else {
193
+ setUrlQuery('?tag=' + _tag);
194
+ }
195
+ }
196
+ }
197
+ function queryInput(query) {
198
+ if (query === '' || typeof query !== 'string') {
199
+ showAll();
200
+ } else {
201
+ $result.html(render(searchByQuery(query))); setIsSearch(); setNotEmpty(); setUrlQuery('?q=' + query);
202
+
203
+ }
204
+ }
205
+
206
+ (function() {
207
+ $articleTags.removeClass('inactive');
208
+ var query = queryString(), _tag = query.tag, _q = query.q;
209
+ if (_tag !== undefined) {
210
+ query.tag === undefined || (_tag = query.tag);
211
+ tagSelect(window.decodeUrl(_tag));
212
+ buttonFoucs(searchButtonsByTag(_tag));
213
+ } else if (_q !== undefined) {
214
+ _q = window.decodeUrl(_q);
215
+ queryInput(_q); setSearchBoxVal(_q);
216
+ } else {
217
+ showAll();
218
+ }
219
+ })();
220
+
221
+ $tags.on('click', 'button', function() {
222
+ tagSelect($(this).children('span').text(), $(this));
223
+ });
224
+
225
+ $searchInput.on('input', window.throttle(function() {
226
+ queryInput($(this).val());
227
+ }, 400));
228
+ $searchInput.on('focus', function() {
229
+ addClass($(this), 'focus');
230
+ });
231
+ $searchInput.on('blur', function() {
232
+ removeClass($(this), 'focus');
233
+ });
234
+ $searchClear.on('click', function() {
235
+ clearSearchBox();
236
+ });
237
+ });
238
+ })();
@@ -0,0 +1,27 @@
1
+ {%- assign __locale = site.data.locale.ARTICLE_LIST_DATE_FORMAT -%}
2
+ {%- include snippets/locale-to-string.html -%}
3
+ {%- assign _format = __return -%}
4
+ {%- assign _post_count = site.posts | size -%}
5
+ {%- if _post_count < 1 -%}
6
+ {}
7
+ {%- else -%}
8
+ {
9
+ {%- for _post in site.posts -%}
10
+ {%- assign _currentdate = _post.date | date: '%Y' -%}
11
+ {%- if _currentdate != _date -%}
12
+ {%- unless forloop.first -%}],{%- endunless -%}
13
+ "{{ _currentdate }}":[{
14
+ {%- assign _date = _currentdate -%}
15
+ {%- else -%},{
16
+ {%- endif -%}
17
+ "key":"{{ forloop.index }}","title":"{{ _post.title | url_encode }}","tags":[
18
+ {%- for _tag in _post.tags -%}
19
+ "{{ _tag | url_encode }}" {%- unless forloop.last -%},{%- endunless -%}
20
+ {%- endfor -%}
21
+ {%- assign __path = _post.url -%}
22
+ {%- include snippets/prepend-baseurl.html -%}
23
+ {%- assign _url = __return -%}
24
+ ],"url":"{{ _url | url_encode }}","date":"{{ _post.date | date: _format }}"}
25
+ {%- endfor -%}
26
+ ]}
27
+ {%- endif -%}
@@ -0,0 +1,24 @@
1
+ (function() {
2
+ var SOURCES = window.TEXT_VARIABLES.sources;
3
+ window.Lazyload.js(SOURCES.jquery, function() {
4
+ $(function() {
5
+ var $this ,$scroll;
6
+ var $articleContent = $('.js-article-content');
7
+ var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
8
+ var scroll = hasSidebar ? '.js-page-main' : 'html, body';
9
+ $scroll = $(scroll);
10
+
11
+ $articleContent.find('.highlight').each(function() {
12
+ $this = $(this);
13
+ $this.attr('data-lang', $this.find('code').attr('data-lang'));
14
+ });
15
+ $articleContent.find('h1, h2, h3, h4, h5, h6').each(function() {
16
+ $this = $(this);
17
+ $this.append($('<a class="anchor" aria-hidden="true"></a>').html('<i class="fas fa-anchor"></i>'));
18
+ });
19
+ $articleContent.on('click', '.anchor', function() {
20
+ $scroll.scrollToAnchor('#' + $(this).parent().attr('id'), 400);
21
+ });
22
+ });
23
+ });
24
+ })();
@@ -0,0 +1,26 @@
1
+ (function() {
2
+ var SOURCES = window.TEXT_VARIABLES.sources;
3
+ window.Lazyload.js(SOURCES.jquery, function() {
4
+ var $window = $(window), $pageFooter = $('.js-page-footer');
5
+ var $pageAside = $('.js-page-aside');
6
+ var affix;
7
+ var tocDisabled = false;
8
+ var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
9
+
10
+ setTimeout(function() {
11
+ affix = $pageAside.affix({
12
+ offsetBottom: $pageFooter.outerHeight(),
13
+ scrollTarget: hasSidebar ? '.js-page-main' : null,
14
+ scroller: hasSidebar ? '.js-page-main' : null,
15
+ scroll: hasSidebar ? $('.js-page-main').children() : null,
16
+ disabled: tocDisabled
17
+ });
18
+ }, 1000);
19
+
20
+ $window.on('resize', window.throttle(function() {
21
+ affix && affix.setOptions({
22
+ disabled: tocDisabled
23
+ });
24
+ }, 100));
25
+ });
26
+ })();