jekyll-text-theme 2.2.3 → 2.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -1
  3. data/README.md +2 -2
  4. data/_data/variables.yml +2 -0
  5. data/_includes/comments-providers/valine.html +33 -0
  6. data/_includes/comments.html +2 -0
  7. data/_includes/scripts/components/lightbox.js +49 -0
  8. data/_includes/scripts/components/search/search.js +30 -45
  9. data/_includes/scripts/components/sidebar.js +2 -5
  10. data/_includes/scripts/lib/affix.js +1 -1
  11. data/_includes/scripts/lib/gallery.js +89 -0
  12. data/_includes/scripts/lib/modal.js +62 -0
  13. data/_includes/scripts/lib/swiper.js +65 -34
  14. data/_includes/scripts/lib/toc.js +1 -1
  15. data/_includes/scripts/utils/imagesLoad.js +28 -0
  16. data/_includes/scripts/{utils.js → utils/utils.js} +8 -3
  17. data/_includes/scripts/variables.html +2 -1
  18. data/_includes/search.html +2 -4
  19. data/_layouts/base.html +4 -2
  20. data/_layouts/page.html +20 -7
  21. data/_sass/common/_reset.scss +5 -10
  22. data/_sass/common/_variables.scss +10 -10
  23. data/_sass/common/classes/_overflow.scss +22 -4
  24. data/_sass/common/components/_button.scss +20 -1
  25. data/_sass/common/components/_card.scss +1 -0
  26. data/_sass/common/components/_gallery.scss +21 -0
  27. data/_sass/common/components/_item.scss +1 -1
  28. data/_sass/common/components/_modal.scss +39 -0
  29. data/_sass/common/components/_swiper.scss +7 -4
  30. data/_sass/common/components/_toc.scss +47 -50
  31. data/_sass/components/_article-content.scss +1 -1
  32. data/_sass/components/_header.scss +1 -1
  33. data/_sass/components/_lightbox.scss +7 -0
  34. data/_sass/components/_search.scss +52 -26
  35. data/_sass/layout/_base.scss +0 -4
  36. data/_sass/layout/_page.scss +17 -54
  37. data/_sass/skins/_chocolate.scss +4 -1
  38. data/_sass/skins/_dark.scss +4 -1
  39. data/_sass/skins/_default.scss +4 -1
  40. data/_sass/skins/_forest.scss +4 -1
  41. data/_sass/skins/_ocean.scss +9 -6
  42. data/_sass/skins/_orange.scss +4 -1
  43. data/assets/css/main.scss +3 -0
  44. metadata +11 -4
  45. data/_includes/comments-providers/custom.html +0 -0
@@ -3,39 +3,31 @@
3
3
  window.Lazyload.js(SOURCES.jquery, function() {
4
4
  function swiper(options) {
5
5
  var $window = $(window), $root = this, $swiperWrapper, $swiperButtonPrev, $swiperButtonNext,
6
- initialSlide, width, height, animation,
7
- rootWidth, rootHeight, count, curIndex, translateX, CRITICAL_ANGLE = Math.PI / 4;
6
+ initialSlide, animation,
7
+ rootWidth, count, curIndex, translateX, CRITICAL_ANGLE = Math.PI / 3;
8
8
 
9
9
  function setOptions(options) {
10
10
  var _options = options || {};
11
11
  initialSlide = _options.initialSlide || 0;
12
12
  animation = _options.animation === undefined && true;
13
- width = _options.width === undefined ||
14
- typeof _options.width === 'string' ? _options.width :
15
- typeof _options.width === 'number' ? _options.width + 'px' : undefined;
16
- height = _options.height === undefined ||
17
- typeof _options.height === 'string' ? _options.height :
18
- typeof _options.height === 'number' ? _options.height + 'px' : undefined;
19
- init();
20
13
  }
21
14
 
22
15
  function init() {
23
16
  $swiperWrapper = $root.find('.swiper__wrapper');
24
17
  $swiperButtonPrev = $root.find('.swiper__button--prev');
25
18
  $swiperButtonNext = $root.find('.swiper__button--next');
26
- count = $swiperWrapper.children('.swiper__slide').length;
27
- curIndex = initialSlide || 0;
28
- translateX = getTranslateXFromCurIndex();
29
- var _cssObj = {};
30
- width === undefined || (_cssObj.width = width);
31
- height === undefined || (_cssObj.height = height);
32
- $root.css(_cssObj);
33
19
  animation && $swiperWrapper.addClass('swiper__wrapper--animation');
20
+ calc(true);
34
21
  }
35
22
 
36
23
  function preCalc() {
37
24
  rootWidth = $root.width();
38
- rootHeight = $root.height();
25
+ count = $swiperWrapper.children('.swiper__slide').length;
26
+ if (count < 2) {
27
+ $swiperButtonPrev.addClass('d-none');
28
+ $swiperButtonNext.addClass('d-none');
29
+ }
30
+ curIndex = initialSlide || 0;
39
31
  translateX = getTranslateXFromCurIndex();
40
32
  }
41
33
 
@@ -49,13 +41,17 @@
49
41
  $swiperWrapper.removeClass('swiper__wrapper--animation');
50
42
  }
51
43
  $swiperWrapper.css('transform', 'translate(' + translateX + 'px, 0)');
52
- if (curIndex <= 0) {
53
- $swiperButtonPrev.addClass('disabled');
54
- } else if (curIndex < count - 1) {
55
- $swiperButtonPrev.removeClass('disabled');
56
- $swiperButtonNext.removeClass('disabled');
57
- } else {
58
- $swiperButtonNext.addClass('disabled');
44
+ if (count > 1) {
45
+ if (curIndex <= 0) {
46
+ $swiperButtonPrev.addClass('disabled');
47
+ } else {
48
+ $swiperButtonPrev.removeClass('disabled');
49
+ }
50
+ if (curIndex >= count - 1) {
51
+ $swiperButtonNext.addClass('disabled');
52
+ } else {
53
+ $swiperButtonNext.removeClass('disabled');
54
+ }
59
55
  }
60
56
  };
61
57
  })();
@@ -88,12 +84,14 @@
88
84
  }
89
85
 
90
86
  setOptions(options);
91
- calc(true);
87
+ init();
92
88
 
93
- $swiperButtonPrev.on('click', function() {
89
+ $swiperButtonPrev.on('click', function(e) {
90
+ e.stopPropagation();
94
91
  move('prev');
95
92
  });
96
- $swiperButtonNext.on('click', function() {
93
+ $swiperButtonNext.on('click', function(e) {
94
+ e.stopPropagation();
97
95
  move('next');
98
96
  });
99
97
  $window.on('resize', function() {
@@ -103,14 +101,14 @@
103
101
 
104
102
  (function() {
105
103
  var pageX, pageY, velocityX, preTranslateX = translateX, timeStamp, touching;
106
- $swiperWrapper.on('touchstart', function(e) {
104
+ function handleTouchstart(e) {
107
105
  var point = e.touches ? e.touches[0] : e;
108
106
  pageX = point.pageX;
109
107
  pageY = point.pageY;
110
108
  velocityX = 0;
111
109
  preTranslateX = translateX;
112
- });
113
- $swiperWrapper.on('touchmove', function(e) {
110
+ }
111
+ function handleTouchmove(e) {
114
112
  var point = e.touches ? e.touches[0] : e;
115
113
  var deltaX = point.pageX - pageX;
116
114
  var deltaY = point.pageY - pageY;
@@ -123,8 +121,8 @@
123
121
  }
124
122
  pageX = point.pageX;
125
123
  pageY = point.pageY;
126
- });
127
- $swiperWrapper.on('touchend', function() {
124
+ }
125
+ function handleTouchend() {
128
126
  touching = false;
129
127
  var deltaX = translateX - preTranslateX;
130
128
  var distance = deltaX + velocityX * rootWidth;
@@ -133,7 +131,31 @@
133
131
  } else {
134
132
  move('cur');
135
133
  }
136
- });
134
+ }
135
+ $swiperWrapper.on('touchstart', handleTouchstart);
136
+ $swiperWrapper.on('touchmove', handleTouchmove);
137
+ $swiperWrapper.on('touchend', handleTouchend);
138
+ $swiperWrapper.on('touchcancel', handleTouchend);
139
+
140
+ (function() {
141
+ var pressing = false, moved = false;
142
+ $swiperWrapper.on('mousedown', function(e) {
143
+ pressing = true; handleTouchstart(e);
144
+ });
145
+ $swiperWrapper.on('mousemove', function(e) {
146
+ pressing && (e.preventDefault(), moved = true, handleTouchmove(e));
147
+ });
148
+ $swiperWrapper.on('mouseup', function(e) {
149
+ pressing && (pressing = false, handleTouchend(e));
150
+ });
151
+ $swiperWrapper.on('mouseleave', function(e) {
152
+ pressing && (pressing = false, handleTouchend(e));
153
+ });
154
+ $swiperWrapper.on('click', function(e) {
155
+ moved && (e.stopPropagation(), moved = false);
156
+ });
157
+ })();
158
+
137
159
  $root.on('touchmove', function(e) {
138
160
  if (e.cancelable & touching) {
139
161
  e.preventDefault();
@@ -142,7 +164,16 @@
142
164
  })();
143
165
 
144
166
  return {
145
- setOptions: setOptions
167
+ setOptions: setOptions,
168
+ previous: function(){
169
+ move('prev');
170
+ },
171
+ next: function(){
172
+ move('next');
173
+ },
174
+ refresh: function() {
175
+ calc(true, { animation: false });
176
+ }
146
177
  };
147
178
  }
148
179
  $.fn.swiper = swiper;
@@ -2,7 +2,7 @@
2
2
  var SOURCES = window.TEXT_VARIABLES.sources;
3
3
  window.Lazyload.js(SOURCES.jquery, function() {
4
4
  function toc(options) {
5
- var $root = this, $window = $(window), $scrollTarget, $scroller, $tocUl = $('<ul class="toc"></ul>'), $tocLi, $headings, $activeLast, $activeCur,
5
+ var $root = this, $window = $(window), $scrollTarget, $scroller, $tocUl = $('<ul class="toc toc--ellipsis"></ul>'), $tocLi, $headings, $activeLast, $activeCur,
6
6
  selectors = 'h1,h2,h3', container = 'body', scrollTarget = window, scroller = 'html, body', disabled = false,
7
7
  headingsPos, scrolling = false, hasRendered = false, hasInit = false;
8
8
 
@@ -0,0 +1,28 @@
1
+ (function() {
2
+ window.imagesLoad = function(images) {
3
+ images = images || document.getElementsByTagName('img');
4
+ var imagesCount = images.length, loadedCount = 0, image;
5
+ var i, j, loaded = false, cbs = [];
6
+ imagesCount < 1 && (loaded = true);
7
+ for (i = 0; i < imagesCount; i++) {
8
+ image = images[i];
9
+ image.complete ? handleImageLoad() : image.addEventListener('load', handleImageLoad);
10
+ }
11
+ function handleImageLoad() {
12
+ loadedCount++;
13
+ if (loadedCount === imagesCount) {
14
+ loaded = true;
15
+ if (cbs.length > 0) {
16
+ for (j = 0; j < cbs.length; j++) {
17
+ cbs[j]();
18
+ }
19
+ }
20
+ }
21
+ }
22
+ return {
23
+ then: function(cb) {
24
+ cb && (loaded ? cb() : (cbs.push(cb)));
25
+ }
26
+ };
27
+ };
28
+ })();
@@ -10,7 +10,6 @@
10
10
  return str ? decodeURIComponent(str.replace(/\+/g, '%20')) : '';
11
11
  };
12
12
 
13
-
14
13
  window.hasEvent = function(event) {
15
14
  return 'on'.concat(event) in window.document;
16
15
  };
@@ -19,13 +18,19 @@
19
18
  return node === document.documentElement || node === document.body || node === window;
20
19
  };
21
20
 
21
+ window.isFormElement = function(node) {
22
+ var tagName = node.tagName;
23
+ return tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA';
24
+ };
25
+
22
26
  window.pageLoad = (function () {
23
27
  var loaded = false, cbs = [];
24
28
  window.addEventListener('load', function () {
25
- var i, cb; loaded = true;
29
+ var i;
30
+ loaded = true;
26
31
  if (cbs.length > 0) {
27
32
  for (i = 0; i < cbs.length; i++) {
28
- cb = cbs[i]; cb();
33
+ cbs[i]();
29
34
  }
30
35
  }
31
36
  });
@@ -7,7 +7,7 @@
7
7
  <script>
8
8
  (function() {
9
9
  var TEXT_VARIABLES = {
10
- version: '2.2.3',
10
+ version: '2.2.4',
11
11
  sources: {
12
12
  font_awesome: '{{ _sources.font_awesome }}',
13
13
  jquery: '{{ _sources.jquery }}',
@@ -17,6 +17,7 @@
17
17
  js: '{{ _sources.gitalk.js }}',
18
18
  css: '{{ _sources.gitalk.css }}'
19
19
  },
20
+ valine: '{{ _sources.valine }}',
20
21
  mathjax: '{{ _sources.mathjax }}',
21
22
  mermaid: '{{ _sources.mermaid }}'
22
23
  },
@@ -14,11 +14,9 @@
14
14
  <a><i class="fas fa-times"></i></a>
15
15
  </div>
16
16
  </div>
17
- <button class="button button--secondary button--pill search__cancel js-search-toggle">
17
+ <button class="button button--theme-dark button--pill search__cancel js-search-toggle">
18
18
  {{ _locale_cancel }}</button>
19
19
  </div>
20
20
  <div class="search-result js-search-result"></div>
21
21
  </div>
22
- </div>
23
-
24
- <script>{%- include scripts/components/search/search.js -%}</script>
22
+ </div>
@@ -8,7 +8,7 @@ layout: none
8
8
  {%- include analytics.html -%}
9
9
  {%- include head.html -%}
10
10
  <script>
11
- {%- include scripts/utils.js -%}
11
+ {%- include scripts/utils/utils.js -%}
12
12
  {%- include scripts/lib/throttle.js -%}
13
13
  {%- include scripts/lib/lazyload.js -%}
14
14
  </script>
@@ -18,6 +18,8 @@ layout: none
18
18
  <div class="root" data-is-touch="false">
19
19
  {{ content }}
20
20
  </div>
21
- <script>{%- include scripts/common.js -%}</script>
21
+ <script>
22
+ {%- include scripts/common.js -%}
23
+ </script>
22
24
  </body>
23
25
  </html>
@@ -13,6 +13,10 @@ layout: base
13
13
  target=layout.footer source0=page.footer -%}
14
14
  {%- assign _footer = __return -%}
15
15
 
16
+ {%- include snippets/assign.html
17
+ target=layout.lightbox source0=page.lightbox -%}
18
+ {%- assign _lightbox = __return -%}
19
+
16
20
  {%- include snippets/assign.html
17
21
  target = site.data.variables.default.page.full_width
18
22
  source0=layout.full_width source1=page.full_width -%}
@@ -227,8 +231,12 @@ layout: base
227
231
  </div> {%- comment -%} end grid {%- endcomment -%}
228
232
  </div> {%- comment -%} end page__viewport {%- endcomment -%}
229
233
  {%- endif -%}
234
+
235
+ {%- if _lightbox == true -%}
236
+ <div class="modal d-print-none js-page-gallery-modal"><div class="gallery"></div></div>
237
+ {%- endif -%}
230
238
  {%- if _header != false -%}
231
- <div class="page__search-panel d-print-none"">{%- include search.html -%}</div>
239
+ <div class="modal modal--overflow page__search-modal d-print-none js-page-search-modal">{%- include search.html -%}</div>
232
240
  {%- endif -%}
233
241
  </div>
234
242
 
@@ -237,25 +245,30 @@ layout: base
237
245
  {%- include scripts/lib/scroll-to.js -%}
238
246
  {%- include scripts/lib/affix.js -%}
239
247
  {%- include scripts/lib/toc.js -%}
248
+ {%- include scripts/lib/modal.js -%}
249
+ {%- if _lightbox == true -%}
250
+ {%- include scripts/lib/gallery.js -%}
251
+ {%- include scripts/components/lightbox.js -%}
252
+ {%- endif -%}
240
253
  {%- include scripts/page.js -%}
241
254
  </script>
242
255
 
243
256
  {%- if page.sidebar -%}
244
- <script>
245
- {%- include scripts/components/sidebar.js -%}
246
- </script>
257
+ <script>{%- include scripts/components/sidebar.js -%}</script>
247
258
  {%- endif -%}
248
259
 
249
260
  {%- if page.aside -%}
250
261
  <script>
251
262
  /* toc must before affix, since affix need to konw toc' height. */
252
- {%- if page.aside.toc -%}
253
- {%- include scripts/aside/toc.js -%}
254
- {%- endif -%}
263
+ {%- if page.aside.toc -%}{%- include scripts/aside/toc.js -%}{%- endif -%}
255
264
  {%- include scripts/aside/affix.js -%}
256
265
  </script>
257
266
  {%- endif -%}
258
267
 
268
+ {%- if _header != false -%}
269
+ <script>{%- include scripts/components/search/search.js -%}</script>
270
+ {%- endif -%}
271
+
259
272
 
260
273
  {%- include markdown-enhancements.html -%}
261
274
  {%- include pageview.html -%}
@@ -23,7 +23,6 @@
23
23
  **/
24
24
 
25
25
  html {
26
- height: 100%;
27
26
  font-size: map-get($base, font-size-root);
28
27
  -webkit-text-size-adjust: 100%; /* 1 */
29
28
  @media print {
@@ -34,15 +33,6 @@ html {
34
33
  body {
35
34
  padding: 0;
36
35
  margin: 0;
37
- }
38
-
39
- @include block-elements() {
40
- padding: 0;
41
- margin: map-get($spacers, 2) 0;
42
- }
43
-
44
- body {
45
- height: 100%;
46
36
  font: map-get($base, font-weight) #{map-get($base, font-size)}/#{map-get($base, line-height)} map-get($base, font-family);
47
37
  ::-moz-selection {
48
38
  background: $select-color;
@@ -55,6 +45,11 @@ body {
55
45
  }
56
46
  }
57
47
 
48
+ @include block-elements() {
49
+ padding: 0;
50
+ margin: map-get($spacers, 2) 0;
51
+ }
52
+
58
53
  input, textarea, select, button {
59
54
  font: map-get($base, font-weight) #{map-get($base, font-size)}/#{map-get($base, line-height)} map-get($base, font-family);
60
55
  color: $text-color;
@@ -8,8 +8,8 @@ $base: (
8
8
  font-size-xl: 1.5rem,
9
9
  font-size-lg: 1.25rem,
10
10
  font-size: 1rem,
11
- font-size-sm: .875rem,
12
- font-size-xs: .75rem,
11
+ font-size-sm: .85rem,
12
+ font-size-xs: .7rem,
13
13
 
14
14
  font-size-h1-xl: 3.5rem,
15
15
  font-size-h2-xl: 2.5rem,
@@ -39,12 +39,12 @@ $base: (
39
39
  font-size-h5-sm: 1rem,
40
40
  font-size-h6-sm: 1rem,
41
41
 
42
- font-size-h1-xs: 1rem,
43
- font-size-h2-xs: .9rem,
44
- font-size-h3-xs: .85rem,
45
- font-size-h4-xs: .8rem,
46
- font-size-h5-xs: .75rem,
47
- font-size-h6-xs: .75rem,
42
+ font-size-h1-xs: 1.05rem,
43
+ font-size-h2-xs: 1rem,
44
+ font-size-h3-xs: .95rem,
45
+ font-size-h4-xs: .9rem,
46
+ font-size-h5-xs: .85rem,
47
+ font-size-h6-xs: .85rem,
48
48
 
49
49
  font-weight: 400,
50
50
  font-weight-bold: 700,
@@ -71,11 +71,11 @@ $spacers: (
71
71
  5: map-get($base, spacer) * 3
72
72
  );
73
73
 
74
- $z-index: (
74
+ $z-indexes: (
75
75
  actions: 996,
76
76
  mask: 997,
77
77
  sidebar: 998,
78
- search: 999
78
+ modal: 999
79
79
  );
80
80
 
81
81
  $layout: (
@@ -1,8 +1,26 @@
1
- @mixin overflow($overflow: auto) {
1
+ @mixin overflow($overflow: auto, $direction: default) {
2
+ @if $direction == default {
3
+ overflow: $overflow;
4
+ } @else if $direction == "x" {
5
+ @if $overflow == auto {
6
+ overflow: hidden;
7
+ }
8
+ overflow-x: $overflow;
9
+ } @else if $direction == "y" {
10
+ @if $overflow == auto {
11
+ overflow: hidden;
12
+ }
13
+ overflow-y: $overflow;
14
+ }
2
15
  @if $overflow == auto {
3
- overflow: auto;
4
16
  -webkit-overflow-scrolling: touch;
5
- } @else {
6
- overflow: $overflow;
7
17
  }
18
+ }
19
+
20
+ .of-auto {
21
+ @include overflow(auto);
22
+ }
23
+
24
+ .of-hidden {
25
+ @include overflow(hidden);
8
26
  }