jekyll-theme-isabelline 0.1.20 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8348df02c7bc0ddaa74d788e2ec0476ebb535feec2c5f9f23002adf0c2b0d9a1
4
- data.tar.gz: 164bd6ec7ce4a6eb2f2daa6e191eaeb506c27818d403be4465f0dc42fcc4890f
3
+ metadata.gz: 3e2e7dd1653a5f7ce624d83b84515962ec583817b8fb7a68812bf6ecd09dec5c
4
+ data.tar.gz: 9c1e5ac6ab4ea5566c81047f83237a7d51e8759c4308e38db21c6f377349fd1c
5
5
  SHA512:
6
- metadata.gz: 78a025097bf3ca0a9cd47ad31a7ee2557401790f565196c90384201929b105ac34ab898c7ac548695ad526ce4c8f1dfa043eb20841289a661259556eaf22e764
7
- data.tar.gz: acd1699e2c20a678782f2ca3d512fd83ae35264ff85c12cbfb91eff30ab4da4b8a4f9296ac98d53a55a0d4ced9b26e404969c9a5e9b29f69e85b4949c9895619
6
+ metadata.gz: 81e07b530504bce8bdd10817bcb9718270637a053fd2263ccbf7fbefd136c18e4836cc59e791db12a8cbc11044507c285368bbf51d5ff24b3f4b404023cbd3a0
7
+ data.tar.gz: 470e2850d46cb6618bd88ece1a1c1b58547ee65ead00215a4276ddc8acf2c1770f5d19a2247006c005258c567ccc38df07f3fd229727cdea88bb8c05b9ce5324
data/README.md CHANGED
@@ -17,7 +17,7 @@ Add this line to site's `Gemfile`:
17
17
  ```ruby
18
18
  gem "jekyll-theme-isabelline", "~> 0.1.0"
19
19
  ```
20
- And add this line to your Jekyll site:
20
+ And add this line to your Jekyll site `_config.yaml`:
21
21
 
22
22
  ```yaml
23
23
  theme: jekyll-theme-isabelline
@@ -28,4 +28,5 @@
28
28
 
29
29
  <div id="snackbar">Loading...</div>
30
30
  <!-- <script src='/assets/js/slides.js'></script> -->
31
- <script src='{{ "/assets/js/clipboard.js" | relative_url }}'></script>
31
+ <script src='{{ "/assets/js/clipboard.js" | relative_url }}'></script>
32
+ <script src='{{ "/assets/js/gallery.js" | relative_url }}'></script>
@@ -1,8 +1,81 @@
1
- {% assign images = (include.images | split: "|") %}
2
- {% assign thumbnails = (include.thumbnails | split: "|") %}
1
+ {% assign gallery_name = include.name | default: "gallery" %}
3
2
 
4
- <div class="gallery">
5
- {% for image in images %}
6
- <a href="{{ include.dir }}/{{ image }}"><img src="{{ include.dir }}/{{ image }}" /></a>
7
- {% endfor %}
3
+ {% assign gallery_prefix = page.id | prepend: "/assets" | append: "/" | append: gallery_name %}
4
+
5
+
6
+ {% assign valid_image_extensions = ".jpg,.jpeg,.png,.gif" | split: "," %}
7
+ {% assign valid_image_sizes = "-300,-700" | split: "," %}
8
+
9
+ {% assign sorted_static_files = site.static_files | map: "path" | sort | join: "|" | append: gallery_prefix | append: "/dummy-700.jpg" | split: "|" %}
10
+
11
+ {% assign img_sizes = "(max-width: 500px) 300px, 700px" %}
12
+
13
+ {% assign prev_same_image_path = "-" %}
14
+
15
+ <div class="gallery" id="gallery-{{ gallery_name }}">
16
+ {% assign image_index = 0 %}
17
+ {% assign gallery_nav = "" %}
18
+ {% assign image_srcset = "" %}
19
+ <div class="images">
20
+ {% for image_path in sorted_static_files %}
21
+ {% assign image_ext = image_path | split: "." | last | prepend: "." %}
22
+ {% if valid_image_extensions contains image_ext %}
23
+
24
+ {% if image_path contains gallery_prefix %}
25
+
26
+ {% assign same_image_path = "" %}
27
+ {% assign srcset = "" %}
28
+
29
+ {% for dash_size in valid_image_sizes %}
30
+ {% if image_path contains dash_size %}
31
+ {% assign same_image_path = image_path | split: dash_size | first %}
32
+
33
+ {% assign size = dash_size | remove: "-" %}
34
+ {% assign srcset = image_path | prepend: site.baseurl | append: " " | append: size | append: "w" %}
35
+ <!-- <li>srcset1={{ srcset }}</li> -->
36
+ {% endif %}
37
+ <!-- <li>srcset2={{ srcset }}</li> -->
38
+ {% endfor %}
39
+
40
+
41
+ {% if same_image_path == blank %}
42
+ {% assign src = image_path %}
43
+ {% endif %}
44
+
45
+ {% if srcset != blank %}
46
+ <!-- <li>srcset3={{ srcset }}</li> -->
47
+ <!-- <li>prev_same_image_path={{ prev_same_image_path }}</li> -->
48
+ <!-- <li>same_image_path={{ same_image_path }}</li> -->
49
+ {% if same_image_path == prev_same_image_path && true %}
50
+ {% if image_srcset != blank %}
51
+ {% assign image_srcset = image_srcset | append: "," %}
52
+ {% endif %}
53
+ {% assign image_srcset = image_srcset | append: srcset %}
54
+ {% else %}
55
+ {% if prev_same_image_path == "-" %}
56
+ {% assign prev_same_image_path = same_image_path %}
57
+ {% assign image_srcset = srcset %}
58
+ {% else %}
59
+ {% assign image_index = image_index | plus: 1 %}
60
+ <img id="{{ gallery_name}}-{{ image_index }}" srcset="{{ image_srcset }}" sizes="{{ img_sizes }}" src="{{ site.baseurl }}{{ src }}" />
61
+ {% assign prev_same_image_path = same_image_path %}
62
+ {% assign image_srcset = "" %}
63
+
64
+ {% endif %}
65
+ {% endif %}
66
+ {% endif %}
67
+ {% endif %}
68
+ {% endif %}
69
+ {% endfor %}
70
+ </div>
71
+ <nav>
72
+ <!-- <div class="preview">
73
+ <div class="vg"></div>
74
+ <div class="hg"></div>
75
+ </div>
76
+ --> <div class="play">
77
+ <input type="checkbox" checked="false" id="{{ gallery_name }}-play" />
78
+ <label for="{{ gallery_name }}-play"></label>
79
+ </div>
80
+ </nav>
8
81
  </div>
@@ -17,7 +17,7 @@
17
17
  <ul class="index">
18
18
  {% for post in pinned_posts %}
19
19
  <li>
20
- <a href="{{ post.url | relative_url }}">{{ post.title }}</a>
20
+ <a href="{{ post.url | relative_url }}">{{ post.title | markdownify }}</a>
21
21
  <span class="posted">{{ post.date | date: "%b %-d, %Y" }}</span>
22
22
  {% if jekyll.environment == "local" %}
23
23
  {% if post.collection == 'private' %}
@@ -47,7 +47,7 @@
47
47
  {% endif %}
48
48
 
49
49
  <li>
50
- <a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a>
50
+ <a href="{{ site.baseurl }}{{ post.url }}">{{ post.title | markdownify }}</a>
51
51
  <span class="posted">{{ post.date | date: "%b %-d" }}</span>
52
52
  {% if jekyll.environment == "local" %}
53
53
  {% if post.collection == 'private' %}
data/_sass/_config.scss CHANGED
@@ -44,7 +44,8 @@ $body-serif: "Noto Serif", "Bree Serif",$serif;
44
44
  $header-color: darken($body-background-color,90%);
45
45
  $header-link-color: darken($body-background-color,70%);
46
46
 
47
- $image-caption-serif: "Fira Sans Extra Condensed", "Neucha", $sans-serif;
47
+ $image-caption-serif: "Noto Serif", "Bree Serif",$serif;
48
+ // $image-caption-serif: "Fira Sans Extra Condensed", "Neucha", $sans-serif;
48
49
  $image-caption-color: $body-color;
49
50
 
50
51
  $main-link-color: darken($body-background-color,80%);
@@ -159,15 +159,6 @@ header {
159
159
  }
160
160
  }
161
161
 
162
- // div.column {
163
- // width: 30%;
164
- // float: left;
165
- // padding: .5rem;
166
- // margin: .5rem;
167
- // border: 1px solid #ccc;
168
- // }
169
-
170
- // link styling
171
162
  a {
172
163
  color: darken($link-color,15%);
173
164
  &:hover, &:active, &:visited {
@@ -204,13 +195,13 @@ main {
204
195
  }
205
196
 
206
197
  img {
207
- border-radius: 4px;
198
+ border-radius: 6px;
208
199
  // width: 100%;
209
200
  }
210
201
  }
211
202
 
212
203
  p img {
213
- border-radius: 4px;
204
+ border-radius: 6px;
214
205
  width: 100%;
215
206
  }
216
207
 
@@ -241,10 +232,123 @@ main {
241
232
  margin-bottom: 1em;
242
233
 
243
234
  img {
244
- // width: 45%;
235
+ width: 100%;
236
+
237
+ // height: 200px;
238
+ // float: left;
239
+ }
240
+
241
+ div.images {
242
+ position: relative;
243
+ height: 500px;
244
+ overflow: hidden;
245
+
246
+ will-change: height;
247
+ transition: 300ms ease;
248
+
249
+ img.transition {
250
+ will-change: left;
251
+ transition: 300ms ease;
252
+ }
253
+
254
+ img.left { left: -100% !important; }
255
+ img.right { left: 100% !important; }
256
+ img.center { left: 0 !important; }
257
+
258
+ img.thumbnail {
259
+ margin: 10px;
260
+ float: left;
261
+ position: static;
262
+ }
263
+
264
+ img {
265
+ cursor: pointer;
266
+ border-radius: 6px;
267
+
268
+ position: absolute;
269
+ top: 0;
270
+ left: 100%;
271
+ }
245
272
 
246
- height: 200px;
247
- float: left;
273
+ img:first-child {
274
+ left: 0;
275
+ }
276
+ }
277
+
278
+ nav {
279
+ width: 100%;
280
+ text-align: center;
281
+ i {
282
+ cursor: pointer;
283
+ margin: .5rem;
284
+ display: inline-block;
285
+ width: 1rem;
286
+ height: 1rem;
287
+ border-radius: .5rem;
288
+ transition: 300ms ease;
289
+ will-change: background-color;
290
+
291
+ background-color: hsl($hue,10,80);
292
+ &.selected {
293
+ background-color: hsl($hue,50,40);
294
+ }
295
+ }
296
+
297
+ // slightly modified version of
298
+ // https://css-tricks.com/making-pure-css-playpause-button/
299
+ .play {
300
+ float: left;
301
+
302
+ label {
303
+ margin: .5rem;
304
+ display: inline-block;
305
+ box-sizing: border-box;
306
+ width: 0;
307
+ height: 1rem;
308
+ cursor: pointer;
309
+ border-color: transparent transparent transparent hsl($hue,50,40); // same color as i.selected
310
+
311
+ transition: 300ms all ease;
312
+ will-change: border-width;
313
+
314
+ // paused state
315
+ border-style: double;
316
+ border-width: 0 0 0 1rem;
317
+ }
318
+ input[type='checkbox'] {
319
+ display: none;
320
+ &:checked + label {
321
+ border-style: solid;
322
+ border-width: .5rem 0 .5rem 1rem;
323
+ }
324
+ }
325
+ }
326
+
327
+ .preview {
328
+ position: relative;
329
+ cursor: pointer;
330
+ float: right;
331
+ margin: .5rem;
332
+ width: 14px;
333
+ height: 14px;
334
+ background-color: hsl($hue,50,40);
335
+ .vg, .hg {
336
+ border: 1px solid $body-background-color;
337
+ position: absolute;
338
+ }
339
+ .vg {
340
+ top: -1px;
341
+ left:4px;
342
+ width: 4px;
343
+ height: 100%;
344
+ }
345
+ .hg {
346
+ left: -1px;
347
+ top:4px;
348
+ height: 4px;
349
+ width: 100%;
350
+ }
351
+ }
248
352
  }
249
353
  }
250
354
 
data/assets/.DS_Store CHANGED
Binary file
@@ -0,0 +1,234 @@
1
+ (function () {
2
+
3
+ // "hydrate" div.gallery with play/pause and nav behaviors
4
+ var process_gallery = function (g) {
5
+ var
6
+ // milliseconds to wait before switch to next slide
7
+ NEXT_SLIDE_TIMEOUT = 5000;
8
+
9
+ var
10
+ // will be resized to the height of currently selected image
11
+ images_container = g.querySelector('.images'),
12
+
13
+ // images in this gallery
14
+ images = g.querySelectorAll('.images img'),
15
+
16
+ // container for nav buttons
17
+ gallery_nav = g.querySelector('nav'),
18
+
19
+ // show all images
20
+ // computed below
21
+ preview_nav,
22
+
23
+ // clickable buttons, one per image
24
+ // computed below
25
+ navs = [],
26
+
27
+ // index of the currently selected image
28
+ selected_index = 0,
29
+
30
+ // play control consists of a label and a checkbox
31
+ // defer computing because nav innerHTML gets clobbered
32
+ play_checkbox,
33
+
34
+ // handle to setInterval
35
+ play_interval,
36
+
37
+ play_suspended = false;
38
+
39
+ /*
40
+ +--------+--------+--------+
41
+ | image1 | image2 | image3 |
42
+ | |selected| |
43
+ +--------+--------+--------+
44
+ */
45
+
46
+ var suspended = function () {
47
+ return play_suspended || document.hidden || document.msHidden || document.webkitHidden;
48
+ }
49
+
50
+ var adjust_height = function (index) {
51
+ images_container.style.height = images[index].offsetHeight + 'px';
52
+ }
53
+
54
+ /*
55
+ +----------------------------------------+
56
+ | +----------+ +----------+ +----------+ |
57
+ | | | | | | | |
58
+ | | | | | | | |
59
+ | | | | | | | |
60
+ | | | | | | | |
61
+ | | | | | | | |
62
+ | +----------+ +----------+ +----------+ |
63
+ | |
64
+ | +----------+ +----------+ +----------+ |
65
+ | | | | | | | |
66
+ | | | | | | | |
67
+ | | | | | | | |
68
+ | | | | | | | |
69
+ | | | | | | | |
70
+ | +----------+ +----------+ +----------+ |
71
+ | |
72
+ | +----------+ +----------+ +----------+ |
73
+ | | | | | | | |
74
+ | | | | | | | |
75
+ | | | | | | | |
76
+ | | | | | | | |
77
+ | | | | | | | |
78
+ | +----------+ +----------+ +----------+ |
79
+ | |
80
+ | +----------+ +----------+ |
81
+ | | | | | |
82
+ | | | | | |
83
+ | | | | | |
84
+ | | | | | |
85
+ | | | | | |
86
+ | +----------+ +----------+ |
87
+ +----------------------------------------+
88
+ */
89
+
90
+
91
+ var show_preview = function () {
92
+ var thumb_size = (images_container.offsetWidth - 6*10) / 3;
93
+ for (var i=0; i<images.length; ++i) {
94
+ var image = images[i];
95
+ if (image.offsetHeight > image.offsetWidth) {
96
+ console.log('showing tall preview', thumb_size, image.offsetWidth, 'x', image.offsetHeight)
97
+ image.style.width = thumb_size + 'px';
98
+ } else {
99
+ console.log('showing wide preview', thumb_size, image.offsetWidth, 'x', image.offsetHeight)
100
+ image.style.height = thumb_size + 'px';
101
+ }
102
+ image.classList.add('thumbnail');
103
+ }
104
+ }
105
+
106
+ // show image at index
107
+ // update nav controls accordingly
108
+ var select_image = function (index) {
109
+ if (selected_index === index) return;
110
+
111
+ var slide = function () {
112
+ images[selected_index].classList.remove('transition');
113
+ images[index].classList.remove('transition');
114
+
115
+ navs[selected_index].classList.remove('selected');
116
+
117
+ selected_index = index;
118
+ }
119
+
120
+ if (suspended()) return;
121
+ images[selected_index].addEventListener('transitionend', slide, {once: true});
122
+
123
+ navs[index].classList.add('selected');
124
+
125
+ if (index < selected_index) {
126
+ setTimeout(function () {
127
+ images[index].classList.remove('right');
128
+ images[index].classList.add('left');
129
+
130
+ adjust_height(index);
131
+
132
+ setTimeout(function () {
133
+ images[index].classList.add('transition');
134
+ images[selected_index].classList.add('transition');
135
+ images[index].classList.remove('left');
136
+ images[index].classList.add('center');
137
+ images[selected_index].classList.add('right');
138
+ images[selected_index].classList.remove('center');
139
+ },1)
140
+ },1)
141
+
142
+ } else {
143
+ setTimeout(function () {
144
+ images[index].classList.remove('left');
145
+ images[index].classList.add('right');
146
+
147
+ adjust_height(index);
148
+
149
+ setTimeout(function () {
150
+ images[index].classList.add('transition');
151
+ images[selected_index].classList.add('transition');
152
+ images[index].classList.remove('right');
153
+ images[index].classList.add('center');
154
+ images[selected_index].classList.add('left');
155
+ images[selected_index].classList.remove('center');
156
+ },1);
157
+ },1);
158
+
159
+ }
160
+ }
161
+
162
+ // show next image
163
+ var next_image = function () {
164
+ if (suspended()) return;
165
+ if (selected_index >= images.length-1) {
166
+ select_image(0);
167
+ } else {
168
+ select_image(selected_index+1);
169
+ }
170
+ }
171
+
172
+ // handler for nav buttons
173
+ // selects an image corresponding to the clicked nav button
174
+ var nav_to_image = function () {
175
+ select_image(Array.from(navs).indexOf(this));
176
+ }
177
+
178
+ // play/pause slideshow
179
+ var toggle_play = function () {
180
+ if (play_checkbox.checked===true) {
181
+ clearInterval(play_interval);
182
+ } else {
183
+ play_interval = setInterval(next_image, NEXT_SLIDE_TIMEOUT);
184
+ }
185
+ }
186
+
187
+ // build nav bullets
188
+ var navHtml = '';
189
+ for (var i=0; i<images.length; ++i) {
190
+ var image = images[i]
191
+ image.addEventListener('click', next_image)
192
+ navHtml += '<i class="' + (i===0? 'selected' : '') + '" data-target="' + image.id + '"></i>'
193
+ }
194
+ gallery_nav.innerHTML += navHtml;
195
+
196
+ // attach nav bullet listeners
197
+ navs = gallery_nav.querySelectorAll('i');
198
+ for (var i=0; i<navs.length; ++i) {
199
+ var nav = navs[i];
200
+ nav.addEventListener('click', nav_to_image)
201
+ }
202
+
203
+ // play button
204
+ play_checkbox = g.querySelector('.play input[type=checkbox]');
205
+ play_checkbox.addEventListener('change', toggle_play);
206
+
207
+ // g.querySelector('.preview').addEventListener('click', function () {
208
+ // show_preview();
209
+ // });
210
+
211
+ window.addEventListener('resize', function () {
212
+ adjust_height(selected_index);
213
+ });
214
+
215
+ // resize image container when initial image loads
216
+ if (images[selected_index].complete) {
217
+ adjust_height(selected_index);
218
+ } else {
219
+ images[selected_index].addEventListener('load', function () {
220
+ adjust_height(selected_index);
221
+ });
222
+ images[selected_index].addEventListener('error', function() {
223
+ console.warn('error loading image', arguments, images[selected_index].src, images[selected_index])
224
+ });
225
+ }
226
+ }
227
+
228
+ var galleries = document.getElementsByClassName('gallery');
229
+
230
+ for (var i=0; i<galleries.length; ++i) {
231
+ var g = galleries[i];
232
+ process_gallery(g);
233
+ }
234
+ })();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-isabelline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rouslan Zenetl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-01 00:00:00.000000000 Z
11
+ date: 2021-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -79,11 +79,15 @@ files:
79
79
  - _sass/_syntax.scss
80
80
  - assets/.DS_Store
81
81
  - assets/blog/example/Quarter_Horse_Buckskin.jpg
82
+ - assets/blog/example/gallery/1/lanius_isabellinus1.jpg
82
83
  - assets/blog/example/gallery/Lanius_isabellinus1.jpg
83
84
  - assets/blog/example/gallery/dusan-smetana-ah7KHxYg6Ow-unsplash.jpg
84
85
  - assets/blog/example/gallery/jay-ruzesky-h13Y8vyIXNU-unsplash.jpg
85
86
  - assets/blog/example/gallery/maurits-bausenhart-OkYjLpB2gzA-unsplash.jpg
86
87
  - assets/blog/example/gallery/sneaky-elbow-h00rqvO5A-M-unsplash.jpg
88
+ - assets/blog/example/gallery2/Quarter_Horse_Buckskin.jpg
89
+ - assets/blog/example/gallery2/dusan-smetana-ah7KHxYg6Ow-unsplash.jpg
90
+ - assets/blog/example/gallery2/jay-ruzesky-h13Y8vyIXNU-unsplash.jpg
87
91
  - assets/blog/getting-started/undraw_browsing_online_sr8c.svg
88
92
  - assets/css/style.scss
89
93
  - assets/favicon/README.md
@@ -113,10 +117,11 @@ files:
113
117
  - assets/fonts/Noto Serif/ga6Iaw1J5X9T9RW6j9bNfFoWaDq8fMVxMw.woff2
114
118
  - assets/fonts/Noto Serif/ga6Iaw1J5X9T9RW6j9bNfFsWaDq8fMVxMw.woff2
115
119
  - assets/js/clipboard.js
120
+ - assets/js/gallery.js
116
121
  - assets/js/slides.js
117
122
  - assets/js/snackbar.js
118
123
  - index.html
119
- homepage: https://github.com/rzen/jekyll-theme-isabelline
124
+ homepage: https://git.rzen.dev/rzen/jekyll-theme-isabelline
120
125
  licenses:
121
126
  - MIT
122
127
  metadata:
@@ -136,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
141
  - !ruby/object:Gem::Version
137
142
  version: '0'
138
143
  requirements: []
139
- rubygems_version: 3.1.3
144
+ rubygems_version: 3.2.2
140
145
  signing_key:
141
146
  specification_version: 4
142
147
  summary: Simple clean mobile-friendly theme for long form note taking. Works for blogging