jekyll-theme-panda 0.1.1

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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +79 -0
  4. data/_config.yml +72 -0
  5. data/_includes/about/en.md +1 -0
  6. data/_includes/about/zh.md +0 -0
  7. data/_includes/footer.html +80 -0
  8. data/_includes/head.html +81 -0
  9. data/_includes/header.html +158 -0
  10. data/_includes/policy/en.md +1 -0
  11. data/_includes/policy/zh.md +9 -0
  12. data/_includes/search.html +5 -0
  13. data/_includes/toc.html +112 -0
  14. data/_layouts/default.html +9 -0
  15. data/_layouts/forarchive.html +91 -0
  16. data/_layouts/home.html +115 -0
  17. data/_layouts/post.html +117 -0
  18. data/_sass/common.scss +4480 -0
  19. data/_sass/header.scss +622 -0
  20. data/_sass/post.scss +362 -0
  21. data/_sass/syntax.scss +191 -0
  22. data/assets/css/bootstrap.min.css +6 -0
  23. data/assets/css/font-awesome.min.css +4 -0
  24. data/assets/css/styles.scss +6 -0
  25. data/assets/fonts/FontAwesome.otf +0 -0
  26. data/assets/fonts/amarillo/AmarilloUSAF.svg +181 -0
  27. data/assets/fonts/amarillo/AmarilloUSAF.ttf +0 -0
  28. data/assets/fonts/amarillo/AmarilloUSAF.woff +0 -0
  29. data/assets/fonts/amarillo/amarillo-font.css +18 -0
  30. data/assets/fonts/amarillo/amarurgt.eot +0 -0
  31. data/assets/fonts/amarillo/amarurgt.woff2 +0 -0
  32. data/assets/fonts/fontawesome-webfont.eot +0 -0
  33. data/assets/fonts/fontawesome-webfont.svg +2671 -0
  34. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  35. data/assets/fonts/fontawesome-webfont.woff +0 -0
  36. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
  37. data/assets/img/banner.gif +0 -0
  38. data/assets/img/logo_Nest.png +0 -0
  39. data/assets/img/switcher.png +0 -0
  40. data/assets/js/archive.min.js +5 -0
  41. data/assets/js/imagesLoaded-3.1.8.js +9434 -0
  42. data/assets/js/imagesLoaded-4.1.4.js +497 -0
  43. data/assets/js/jquery-3.5.1.min.js +2 -0
  44. data/assets/js/mermaid.min.js +31 -0
  45. data/assets/js/script.js +216 -0
  46. data/assets/js/slick.min.js +1 -0
  47. metadata +116 -0
@@ -0,0 +1,497 @@
1
+ /*!
2
+ * imagesLoaded PACKAGED v4.1.4
3
+ * JavaScript is all like "You images are done yet or what?"
4
+ * MIT License
5
+ */
6
+
7
+ /**
8
+ * EvEmitter v1.1.0
9
+ * Lil' event emitter
10
+ * MIT License
11
+ */
12
+
13
+ /* jshint unused: true, undef: true, strict: true */
14
+
15
+ ( function( global, factory ) {
16
+ // universal module definition
17
+ /* jshint strict: false */ /* globals define, module, window */
18
+ if ( typeof define == 'function' && define.amd ) {
19
+ // AMD - RequireJS
20
+ define( 'ev-emitter/ev-emitter',factory );
21
+ } else if ( typeof module == 'object' && module.exports ) {
22
+ // CommonJS - Browserify, Webpack
23
+ module.exports = factory();
24
+ } else {
25
+ // Browser globals
26
+ global.EvEmitter = factory();
27
+ }
28
+
29
+ }( typeof window != 'undefined' ? window : this, function() {
30
+
31
+
32
+
33
+ function EvEmitter() {}
34
+
35
+ var proto = EvEmitter.prototype;
36
+
37
+ proto.on = function( eventName, listener ) {
38
+ if ( !eventName || !listener ) {
39
+ return;
40
+ }
41
+ // set events hash
42
+ var events = this._events = this._events || {};
43
+ // set listeners array
44
+ var listeners = events[ eventName ] = events[ eventName ] || [];
45
+ // only add once
46
+ if ( listeners.indexOf( listener ) == -1 ) {
47
+ listeners.push( listener );
48
+ }
49
+
50
+ return this;
51
+ };
52
+
53
+ proto.once = function( eventName, listener ) {
54
+ if ( !eventName || !listener ) {
55
+ return;
56
+ }
57
+ // add event
58
+ this.on( eventName, listener );
59
+ // set once flag
60
+ // set onceEvents hash
61
+ var onceEvents = this._onceEvents = this._onceEvents || {};
62
+ // set onceListeners object
63
+ var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
64
+ // set flag
65
+ onceListeners[ listener ] = true;
66
+
67
+ return this;
68
+ };
69
+
70
+ proto.off = function( eventName, listener ) {
71
+ var listeners = this._events && this._events[ eventName ];
72
+ if ( !listeners || !listeners.length ) {
73
+ return;
74
+ }
75
+ var index = listeners.indexOf( listener );
76
+ if ( index != -1 ) {
77
+ listeners.splice( index, 1 );
78
+ }
79
+
80
+ return this;
81
+ };
82
+
83
+ proto.emitEvent = function( eventName, args ) {
84
+ var listeners = this._events && this._events[ eventName ];
85
+ if ( !listeners || !listeners.length ) {
86
+ return;
87
+ }
88
+ // copy over to avoid interference if .off() in listener
89
+ listeners = listeners.slice(0);
90
+ args = args || [];
91
+ // once stuff
92
+ var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
93
+
94
+ for ( var i=0; i < listeners.length; i++ ) {
95
+ var listener = listeners[i]
96
+ var isOnce = onceListeners && onceListeners[ listener ];
97
+ if ( isOnce ) {
98
+ // remove listener
99
+ // remove before trigger to prevent recursion
100
+ this.off( eventName, listener );
101
+ // unset once flag
102
+ delete onceListeners[ listener ];
103
+ }
104
+ // trigger listener
105
+ listener.apply( this, args );
106
+ }
107
+
108
+ return this;
109
+ };
110
+
111
+ proto.allOff = function() {
112
+ delete this._events;
113
+ delete this._onceEvents;
114
+ };
115
+
116
+ return EvEmitter;
117
+
118
+ }));
119
+
120
+ /*!
121
+ * imagesLoaded v4.1.4
122
+ * JavaScript is all like "You images are done yet or what?"
123
+ * MIT License
124
+ */
125
+
126
+ ( function( window, factory ) { 'use strict';
127
+ // universal module definition
128
+
129
+ /*global define: false, module: false, require: false */
130
+
131
+ if ( typeof define == 'function' && define.amd ) {
132
+ // AMD
133
+ define( [
134
+ 'ev-emitter/ev-emitter'
135
+ ], function( EvEmitter ) {
136
+ return factory( window, EvEmitter );
137
+ });
138
+ } else if ( typeof module == 'object' && module.exports ) {
139
+ // CommonJS
140
+ module.exports = factory(
141
+ window,
142
+ require('ev-emitter')
143
+ );
144
+ } else {
145
+ // browser global
146
+ window.imagesLoaded = factory(
147
+ window,
148
+ window.EvEmitter
149
+ );
150
+ }
151
+
152
+ })( typeof window !== 'undefined' ? window : this,
153
+
154
+ // -------------------------- factory -------------------------- //
155
+
156
+ function factory( window, EvEmitter ) {
157
+
158
+
159
+
160
+ var $ = window.jQuery;
161
+ var console = window.console;
162
+
163
+ // -------------------------- helpers -------------------------- //
164
+
165
+ // extend objects
166
+ function extend( a, b ) {
167
+ for ( var prop in b ) {
168
+ a[ prop ] = b[ prop ];
169
+ }
170
+ return a;
171
+ }
172
+
173
+ var arraySlice = Array.prototype.slice;
174
+
175
+ // turn element or nodeList into an array
176
+ function makeArray( obj ) {
177
+ if ( Array.isArray( obj ) ) {
178
+ // use object if already an array
179
+ return obj;
180
+ }
181
+
182
+ var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';
183
+ if ( isArrayLike ) {
184
+ // convert nodeList to array
185
+ return arraySlice.call( obj );
186
+ }
187
+
188
+ // array of single index
189
+ return [ obj ];
190
+ }
191
+
192
+ // -------------------------- imagesLoaded -------------------------- //
193
+
194
+ /**
195
+ * @param {Array, Element, NodeList, String} elem
196
+ * @param {Object or Function} options - if function, use as callback
197
+ * @param {Function} onAlways - callback function
198
+ */
199
+ function ImagesLoaded( elem, options, onAlways ) {
200
+ // coerce ImagesLoaded() without new, to be new ImagesLoaded()
201
+ if ( !( this instanceof ImagesLoaded ) ) {
202
+ return new ImagesLoaded( elem, options, onAlways );
203
+ }
204
+ // use elem as selector string
205
+ var queryElem = elem;
206
+ if ( typeof elem == 'string' ) {
207
+ queryElem = document.querySelectorAll( elem );
208
+ }
209
+ // bail if bad element
210
+ if ( !queryElem ) {
211
+ console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );
212
+ return;
213
+ }
214
+
215
+ this.elements = makeArray( queryElem );
216
+ this.options = extend( {}, this.options );
217
+ // shift arguments if no options set
218
+ if ( typeof options == 'function' ) {
219
+ onAlways = options;
220
+ } else {
221
+ extend( this.options, options );
222
+ }
223
+
224
+ if ( onAlways ) {
225
+ this.on( 'always', onAlways );
226
+ }
227
+
228
+ this.getImages();
229
+
230
+ if ( $ ) {
231
+ // add jQuery Deferred object
232
+ this.jqDeferred = new $.Deferred();
233
+ }
234
+
235
+ // HACK check async to allow time to bind listeners
236
+ setTimeout( this.check.bind( this ) );
237
+ }
238
+
239
+ ImagesLoaded.prototype = Object.create( EvEmitter.prototype );
240
+
241
+ ImagesLoaded.prototype.options = {};
242
+
243
+ ImagesLoaded.prototype.getImages = function() {
244
+ this.images = [];
245
+
246
+ // filter & find items if we have an item selector
247
+ this.elements.forEach( this.addElementImages, this );
248
+ };
249
+
250
+ /**
251
+ * @param {Node} element
252
+ */
253
+ ImagesLoaded.prototype.addElementImages = function( elem ) {
254
+ // filter siblings
255
+ if ( elem.nodeName == 'IMG' ) {
256
+ this.addImage( elem );
257
+ }
258
+ // get background image on element
259
+ if ( this.options.background === true ) {
260
+ this.addElementBackgroundImages( elem );
261
+ }
262
+
263
+ // find children
264
+ // no non-element nodes, #143
265
+ var nodeType = elem.nodeType;
266
+ if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
267
+ return;
268
+ }
269
+ var childImgs = elem.querySelectorAll('img');
270
+ // concat childElems to filterFound array
271
+ for ( var i=0; i < childImgs.length; i++ ) {
272
+ var img = childImgs[i];
273
+ this.addImage( img );
274
+ }
275
+
276
+ // get child background images
277
+ if ( typeof this.options.background == 'string' ) {
278
+ var children = elem.querySelectorAll( this.options.background );
279
+ for ( i=0; i < children.length; i++ ) {
280
+ var child = children[i];
281
+ this.addElementBackgroundImages( child );
282
+ }
283
+ }
284
+ };
285
+
286
+ var elementNodeTypes = {
287
+ 1: true,
288
+ 9: true,
289
+ 11: true
290
+ };
291
+
292
+ ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
293
+ var style = getComputedStyle( elem );
294
+ if ( !style ) {
295
+ // Firefox returns null if in a hidden iframe https://bugzil.la/548397
296
+ return;
297
+ }
298
+ // get url inside url("...")
299
+ var reURL = /url\((['"])?(.*?)\1\)/gi;
300
+ var matches = reURL.exec( style.backgroundImage );
301
+ while ( matches !== null ) {
302
+ var url = matches && matches[2];
303
+ if ( url ) {
304
+ this.addBackground( url, elem );
305
+ }
306
+ matches = reURL.exec( style.backgroundImage );
307
+ }
308
+ };
309
+
310
+ /**
311
+ * @param {Image} img
312
+ */
313
+ ImagesLoaded.prototype.addImage = function( img ) {
314
+ var loadingImage = new LoadingImage( img );
315
+ this.images.push( loadingImage );
316
+ };
317
+
318
+ ImagesLoaded.prototype.addBackground = function( url, elem ) {
319
+ var background = new Background( url, elem );
320
+ this.images.push( background );
321
+ };
322
+
323
+ ImagesLoaded.prototype.check = function() {
324
+ var _this = this;
325
+ this.progressedCount = 0;
326
+ this.hasAnyBroken = false;
327
+ // complete if no images
328
+ if ( !this.images.length ) {
329
+ this.complete();
330
+ return;
331
+ }
332
+
333
+ function onProgress( image, elem, message ) {
334
+ // HACK - Chrome triggers event before object properties have changed. #83
335
+ setTimeout( function() {
336
+ _this.progress( image, elem, message );
337
+ });
338
+ }
339
+
340
+ this.images.forEach( function( loadingImage ) {
341
+ loadingImage.once( 'progress', onProgress );
342
+ loadingImage.check();
343
+ });
344
+ };
345
+
346
+ ImagesLoaded.prototype.progress = function( image, elem, message ) {
347
+ this.progressedCount++;
348
+ this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
349
+ // progress event
350
+ this.emitEvent( 'progress', [ this, image, elem ] );
351
+ if ( this.jqDeferred && this.jqDeferred.notify ) {
352
+ this.jqDeferred.notify( this, image );
353
+ }
354
+ // check if completed
355
+ if ( this.progressedCount == this.images.length ) {
356
+ this.complete();
357
+ }
358
+
359
+ if ( this.options.debug && console ) {
360
+ console.log( 'progress: ' + message, image, elem );
361
+ }
362
+ };
363
+
364
+ ImagesLoaded.prototype.complete = function() {
365
+ var eventName = this.hasAnyBroken ? 'fail' : 'done';
366
+ this.isComplete = true;
367
+ this.emitEvent( eventName, [ this ] );
368
+ this.emitEvent( 'always', [ this ] );
369
+ if ( this.jqDeferred ) {
370
+ var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
371
+ this.jqDeferred[ jqMethod ]( this );
372
+ }
373
+ };
374
+
375
+ // -------------------------- -------------------------- //
376
+
377
+ function LoadingImage( img ) {
378
+ this.img = img;
379
+ }
380
+
381
+ LoadingImage.prototype = Object.create( EvEmitter.prototype );
382
+
383
+ LoadingImage.prototype.check = function() {
384
+ // If complete is true and browser supports natural sizes,
385
+ // try to check for image status manually.
386
+ var isComplete = this.getIsImageComplete();
387
+ if ( isComplete ) {
388
+ // report based on naturalWidth
389
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
390
+ return;
391
+ }
392
+
393
+ // If none of the checks above matched, simulate loading on detached element.
394
+ this.proxyImage = new Image();
395
+ this.proxyImage.addEventListener( 'load', this );
396
+ this.proxyImage.addEventListener( 'error', this );
397
+ // bind to image as well for Firefox. #191
398
+ this.img.addEventListener( 'load', this );
399
+ this.img.addEventListener( 'error', this );
400
+ this.proxyImage.src = this.img.src;
401
+ };
402
+
403
+ LoadingImage.prototype.getIsImageComplete = function() {
404
+ // check for non-zero, non-undefined naturalWidth
405
+ // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671
406
+ return this.img.complete && this.img.naturalWidth;
407
+ };
408
+
409
+ LoadingImage.prototype.confirm = function( isLoaded, message ) {
410
+ this.isLoaded = isLoaded;
411
+ this.emitEvent( 'progress', [ this, this.img, message ] );
412
+ };
413
+
414
+ // ----- events ----- //
415
+
416
+ // trigger specified handler for event type
417
+ LoadingImage.prototype.handleEvent = function( event ) {
418
+ var method = 'on' + event.type;
419
+ if ( this[ method ] ) {
420
+ this[ method ]( event );
421
+ }
422
+ };
423
+
424
+ LoadingImage.prototype.onload = function() {
425
+ this.confirm( true, 'onload' );
426
+ this.unbindEvents();
427
+ };
428
+
429
+ LoadingImage.prototype.onerror = function() {
430
+ this.confirm( false, 'onerror' );
431
+ this.unbindEvents();
432
+ };
433
+
434
+ LoadingImage.prototype.unbindEvents = function() {
435
+ this.proxyImage.removeEventListener( 'load', this );
436
+ this.proxyImage.removeEventListener( 'error', this );
437
+ this.img.removeEventListener( 'load', this );
438
+ this.img.removeEventListener( 'error', this );
439
+ };
440
+
441
+ // -------------------------- Background -------------------------- //
442
+
443
+ function Background( url, element ) {
444
+ this.url = url;
445
+ this.element = element;
446
+ this.img = new Image();
447
+ }
448
+
449
+ // inherit LoadingImage prototype
450
+ Background.prototype = Object.create( LoadingImage.prototype );
451
+
452
+ Background.prototype.check = function() {
453
+ this.img.addEventListener( 'load', this );
454
+ this.img.addEventListener( 'error', this );
455
+ this.img.src = this.url;
456
+ // check if image is already complete
457
+ var isComplete = this.getIsImageComplete();
458
+ if ( isComplete ) {
459
+ this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
460
+ this.unbindEvents();
461
+ }
462
+ };
463
+
464
+ Background.prototype.unbindEvents = function() {
465
+ this.img.removeEventListener( 'load', this );
466
+ this.img.removeEventListener( 'error', this );
467
+ };
468
+
469
+ Background.prototype.confirm = function( isLoaded, message ) {
470
+ this.isLoaded = isLoaded;
471
+ this.emitEvent( 'progress', [ this, this.element, message ] );
472
+ };
473
+
474
+ // -------------------------- jQuery -------------------------- //
475
+
476
+ ImagesLoaded.makeJQueryPlugin = function( jQuery ) {
477
+ jQuery = jQuery || window.jQuery;
478
+ if ( !jQuery ) {
479
+ return;
480
+ }
481
+ // set local variable
482
+ $ = jQuery;
483
+ // $().imagesLoaded()
484
+ $.fn.imagesLoaded = function( options, callback ) {
485
+ var instance = new ImagesLoaded( this, options, callback );
486
+ return instance.jqDeferred.promise( $(this) );
487
+ };
488
+ };
489
+ // try making plugin
490
+ ImagesLoaded.makeJQueryPlugin();
491
+
492
+ // -------------------------- -------------------------- //
493
+
494
+ return ImagesLoaded;
495
+
496
+ });
497
+