j1-template 2020.0.0 → 2020.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +22 -18
  3. data/_includes/themes/j1/layouts/content_generator_collection.html +15 -12
  4. data/_includes/themes/j1/layouts/content_generator_page.html +16 -17
  5. data/_includes/themes/j1/layouts/content_generator_post.html +19 -24
  6. data/_includes/themes/j1/modules/navigator/generator.html +62 -40
  7. data/assets/data/menu.html +6 -5
  8. data/assets/data/mmenu.html +455 -0
  9. data/assets/data/{sidebar.html → mmenu_sidebar.html} +24 -18
  10. data/assets/data/mmenu_toc.html +45 -0
  11. data/assets/data/quicklinks.html +9 -4
  12. data/assets/data/ssm.html +227 -0
  13. data/assets/error_pages/HTTP204.html +3 -3
  14. data/assets/themes/j1/core/css/bootstrap.css +116 -93
  15. data/assets/themes/j1/core/css/bootstrap.min.css +4 -4
  16. data/assets/themes/j1/core/css/globals.css +1 -1
  17. data/assets/themes/j1/core/css/theme_extensions.css +150 -23
  18. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  19. data/assets/themes/j1/core/css/uno.css +150 -23
  20. data/assets/themes/j1/core/css/uno.min.css +1 -1
  21. data/assets/themes/j1/core/css/vendor.css +130 -104
  22. data/assets/themes/j1/core/css/vendor.min.css +4 -4
  23. data/assets/themes/j1/core/js/template.js +296 -24
  24. data/assets/themes/j1/core/js/template.js.map +1 -1
  25. data/assets/themes/j1/core/js/template.min.js +1 -1
  26. data/lib/j1/version.rb +1 -1
  27. data/lib/j1_app/j1_auth_manager/auth_manager.rb +21 -17
  28. data/lib/j1_app/j1_auth_manager/config.rb +13 -9
  29. data/lib/j1_app/j1_site_manager/static_site.rb +1 -1
  30. data/lib/starter_web/Gemfile +2 -2
  31. data/lib/starter_web/_config.yml +12 -139
  32. data/lib/starter_web/_data/layouts/default.yml +5 -5
  33. data/lib/starter_web/_data/modules/authentication.yml +4 -4
  34. data/lib/starter_web/_data/modules/cookie_consent.yml +10 -10
  35. data/lib/starter_web/_data/modules/defaults/navigator.yml +25 -24
  36. data/lib/starter_web/_data/modules/defaults/ssm.yml +50 -0
  37. data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
  38. data/lib/starter_web/_data/modules/navigator.yml +161 -97
  39. data/lib/starter_web/_data/modules/navigator.yml.new +232 -0
  40. data/lib/starter_web/_data/modules/ssm.yml +133 -0
  41. data/lib/starter_web/_data/modules/toccer.yml +2 -1
  42. data/lib/starter_web/_data/private.yml +66 -98
  43. data/lib/starter_web/_data/resources.yml +76 -10
  44. data/lib/starter_web/apps/public/{cc → cc/cc.yml} +0 -0
  45. data/lib/starter_web/apps/public/cc/index.adoc +107 -0
  46. data/lib/starter_web/assets/images/modules/icons/j1/{j1..ico → j1.ico} +0 -0
  47. data/lib/starter_web/assets/themes/j1/adapter/js/algolia.js +321 -0
  48. data/lib/starter_web/assets/themes/j1/adapter/js/back2top.js +2 -2
  49. data/lib/starter_web/assets/themes/j1/adapter/js/cookie_consent.js +38 -28
  50. data/lib/starter_web/assets/themes/j1/adapter/js/gallery_customizer.js +7 -7
  51. data/lib/starter_web/assets/themes/j1/adapter/js/j1.js +55 -30
  52. data/lib/starter_web/assets/themes/j1/adapter/js/logger.js +2 -2
  53. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js +439 -0
  54. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js.new +432 -0
  55. data/lib/starter_web/assets/themes/j1/adapter/js/navigator.js +29 -47
  56. data/lib/starter_web/assets/themes/j1/adapter/js/ssm.js +496 -0
  57. data/lib/starter_web/assets/themes/j1/adapter/js/themer.js +2 -1
  58. data/lib/starter_web/assets/themes/j1/adapter/js/toccer.js +40 -36
  59. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.css +384 -0
  60. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.min.css +384 -0
  61. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.css +95 -0
  62. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.min.css +95 -0
  63. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.js +11 -0
  64. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.min.js +11 -0
  65. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.js +118 -0
  66. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.min.js +118 -0
  67. data/lib/starter_web/collections/posts/public/{jekyll → featured}/_posts/2018-05-01-confusion-about-base-url.adoc +0 -0
  68. data/lib/starter_web/package.json +1 -1
  69. data/lib/starter_web/pages/public/learn/floating_sidebar.adoc +199 -0
  70. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
  71. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +2 -2
  72. data/lib/starter_web/pages/public/learn/whats_up.adoc +12 -11
  73. data/lib/starter_web/pages/public/legal/en/500_support.adoc +1 -1
  74. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/200_rotate.asciidoc +1 -1
  75. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -3
  76. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +3 -3
  77. data/lib/starter_web/pages/public/site_search.adoc +196 -0
  78. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  79. data/lib/starter_web/utilsrv/package.json +1 -1
  80. metadata +27 -6
@@ -0,0 +1,496 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/ssm.js
10
+ # Liquid template to adapt SSM Core functions
11
+ #
12
+ # Product/Info:
13
+ # https://jekyll.one
14
+ #
15
+ # Copyright (C) 2020 Juergen Adams
16
+ #
17
+ # J1 Template is licensed under the MIT License.
18
+ # For details, see https://jekyll.one
19
+ # -----------------------------------------------------------------------------
20
+ # Test data:
21
+ # {{ liquid_var | debug }}
22
+ # -----------------------------------------------------------------------------
23
+ {% endcomment %}
24
+
25
+ {% comment %} Liquid var initialization
26
+ -------------------------------------------------------------------------------- {% endcomment %}
27
+
28
+ {% comment %} Set config files
29
+ -------------------------------------------------------------------------------- {% endcomment %}
30
+ {% assign site_config = site %}
31
+ {% assign template_config = site.data.template_settings %}
32
+ {% assign modules = site.data.modules %}
33
+
34
+ {% comment %} Set config data
35
+ -------------------------------------------------------------------------------- {% endcomment %}
36
+ {% assign ssm_settings = modules.ssm.settings %}
37
+ {% assign ssm_defaults = modules.defaults.ssm.defaults %}
38
+
39
+ {% comment %} Set config options
40
+ -------------------------------------------------------------------------------- {% endcomment %}
41
+ {% assign ssm_options = ssm_defaults | merge: ssm_settings %}
42
+
43
+ /*
44
+ # -----------------------------------------------------------------------------
45
+ # ~/assets/themes/j1/adapter/js/ssm.js
46
+ # JS Adapter for J1 SSM (Sticky Side Menu)
47
+ #
48
+ # Product/Info:
49
+ # {{site.data.template_settings.theme_author_url}}
50
+ #
51
+ # Copyright (C) 2020 Juergen Adams
52
+ #
53
+ # J1 Template is licensed under the MIT License.
54
+ # For details, see {{site.data.template_settings.theme_author_url}}
55
+ # -----------------------------------------------------------------------------
56
+ # Adapter generated: {{site.time}}
57
+ # -----------------------------------------------------------------------------
58
+ */
59
+ 'use strict';
60
+
61
+ j1.adapter['ssm'] = (function (j1, window) {
62
+
63
+ // ---------------------------------------------------------------------------
64
+ // globals
65
+ // ---------------------------------------------------------------------------
66
+ var environment = '{{environment}}';
67
+ var dclFinished = false;
68
+ var moduleOptions = {};
69
+ var cookie_names = j1.getCookieNames();
70
+ var user_state;
71
+ var user_session;
72
+ var user_data;
73
+ var sect1Nodes;
74
+ var sect12Nodes;
75
+ var _this;
76
+ var logger;
77
+ var logText;
78
+
79
+ // ---------------------------------------------------------------------------
80
+ // helper functions
81
+ // ---------------------------------------------------------------------------
82
+
83
+
84
+ // ---------------------------------------------------------------------------
85
+ // main object
86
+ // ---------------------------------------------------------------------------
87
+ return {
88
+
89
+ // -------------------------------------------------------------------------
90
+ // module initializer
91
+ // -------------------------------------------------------------------------
92
+ init: function (options) {
93
+
94
+ // create seetings object from frontmatterOptions
95
+ var frontmatterOptions = options != null ? $.extend({}, options) : {};
96
+
97
+ // initialize state flag
98
+ j1.adapter.ssm.state = 'pending';
99
+
100
+ // -----------------------------------------------------------------------
101
+ // defaults
102
+ // -----------------------------------------------------------------------
103
+ var settings = $.extend({
104
+ module_name: 'j1.adapter.ssm',
105
+ generated: '{{site.time}}'
106
+ }, options);
107
+
108
+ // -----------------------------------------------------------------------
109
+ // globals
110
+ // -----------------------------------------------------------------------
111
+ _this = j1.adapter.ssm;
112
+ logger = log4javascript.getLogger('j1.adapter.ssm');
113
+ sect12Nodes = $("[class$='sect1'],[class$='sect2'");
114
+ sect1Nodes = $("[class$='sect1']");
115
+
116
+ // -----------------------------------------------------------------------
117
+ // options loader
118
+ // -----------------------------------------------------------------------
119
+ var ssmMenuOptions = $.extend({}, {{nav_ssm_options | replace: '=>', ':' }});
120
+ var ssmOptions = $.extend({}, {{ssm_options | replace: 'nil', 'null' | replace: '=>', ':' }});
121
+ var xhr_data_path;
122
+ var menu_id;
123
+
124
+ // Load (individual) frontmatter options (currently NOT used)
125
+ //
126
+ if (options != null) { var frontmatterOptions = $.extend({}, options) }
127
+
128
+ if (typeof frontmatterOptions !== 'undefined') {
129
+ moduleOptions = j1.mergeData(ssmOptions, frontmatterOptions);
130
+ }
131
+
132
+ // save config settings into the mmenu object for global access
133
+ //
134
+ j1.adapter.ssm['moduleOptions'] = moduleOptions;
135
+
136
+ _this.setState('started');
137
+ logger.info('state: ' + _this.getState());
138
+ logger.info('module is being initialized');
139
+
140
+ // jadams, 2020-06-24: Set max_count to 100 what cause to wait 2.5s
141
+ // for J1 Navigator to finish (init)
142
+ //
143
+ var interval_count = 0;
144
+ var max_count = 100;
145
+
146
+ var dependencies_met_navigator = setInterval(function() {
147
+ interval_count += 1;
148
+ if ( j1.adapter.navigator.getState() == 'finished' ) {
149
+ logger.info('dependencies of module navigator met for: mmenu');
150
+ logger.info('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
151
+ j1.core.ssm.init (moduleOptions);
152
+ _this.ssmLoader(moduleOptions);
153
+ clearInterval(dependencies_met_navigator);
154
+ }
155
+ if (interval_count > max_count) {
156
+ logger.warn('dependency check failed for module: navigator');
157
+ logger.warn('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
158
+ clearInterval(dependencies_met_navigator);
159
+ //j1.adapter.ssm.ssmLoader(ssmMenuOptions);
160
+ }
161
+ }, 25);
162
+
163
+ }, // END init
164
+
165
+ // -------------------------------------------------------------------------
166
+ // SSM Loader
167
+ // -------------------------------------------------------------------------
168
+ ssmLoader: function (ssmOptions) {
169
+ var menu_id;
170
+ var xhr_data_path;
171
+
172
+ _this.setState('loading');
173
+ logger.info('status: ' + _this.getState());
174
+ logger.info('load HTML data for ssm');
175
+
176
+ {% assign id_list = "" %}
177
+
178
+ $.when (
179
+ {% assign menu_id = ssm_options.xhr_container_id %}
180
+ {% assign xhr_data_path = ssm_options.xhr_data_path %}
181
+ j1.xhrData (
182
+ 'j1.adapter.ssm', {
183
+ xhr_container_id: "{{menu_id}}",
184
+ xhr_data_path: "{{xhr_data_path}}" },
185
+ 'data_loaded')
186
+ ).done (function (ssm) {
187
+ // ---------------------------------------------------------------------
188
+ // Initialize MMenu Navs and Drawers
189
+ // ---------------------------------------------------------------------
190
+ var dependencies_met_mmenu_initialized = setInterval (function () {
191
+ if (ssm) {
192
+ if (j1.getState() === 'finished') {
193
+ logger.info('load HTML data (AJAX): finished');
194
+ _this.setState('processing');
195
+ logger.info('status: ' + _this.getState());
196
+ logger.info('initialize ssm menu');
197
+ if ( ssmOptions.mode === 'icon') {
198
+ logger.info('icon mode detected');
199
+ }
200
+ _this.scrollSpy(ssmOptions);
201
+ _this.buttonInitializer(ssmOptions);
202
+ clearInterval(dependencies_met_mmenu_initialized);
203
+ }
204
+ } else {
205
+ logger.error('initialize ssm failed, HTML data NOT loaded');
206
+ }
207
+ }); // END dependencies_met_mmenu_loaded
208
+ }); // END done
209
+ }, // END dataLoader
210
+
211
+ // -------------------------------------------------------------------------
212
+ // Button Initializer
213
+ // -------------------------------------------------------------------------
214
+ buttonInitializer: function (ssmOptions) {
215
+ var eventHandler;
216
+
217
+ {% for item in ssm_options.items %} {% if item.enabled %}
218
+
219
+ {% comment %} Identify the menu (item) type
220
+ -------------------------------------------------------------------------- {% endcomment %}
221
+ {% if item.sublevel %}
222
+ {% assign menu_type = 'sublevel_menu' %}
223
+ {% else %}
224
+ {% assign menu_type = 'top_level_item' %}
225
+ {% endif %}
226
+
227
+ {% if menu_type == 'top_level_item' %}
228
+ {% assign button_id = item.id %}
229
+
230
+ // Create an eventhandler instance if id exists: {{button_id}}
231
+ if ($('#{{button_id}}').length) {
232
+ eventHandler = "{{item.event_handler}}"
233
+
234
+ // check if eventhandler configured is a SINGLE word
235
+ if (eventHandler.split(" ").length == 1) {
236
+ logger.info('register pre-configured eventhandler {{item.event_handler}} on id: {{button_id}}');
237
+ $('#{{button_id}}').each(function(e) {
238
+ var $this = $(this);
239
+ $this.on('click', function(e) {
240
+ j1.adapter.ssm.{{item.event_handler}}(sect1Nodes);
241
+ });
242
+ });
243
+ } else {
244
+ logger.info('register custom eventhandler on id: {{button_id}}');
245
+ }
246
+
247
+ } // END items (buttons)
248
+ {% endif %} // menu_type 'top_level_item'
249
+ {% endif %} // ENDIF button_id enabled
250
+ {% endfor %} // ENDFOR items
251
+ }, // END buttonInitializer
252
+
253
+ // -------------------------------------------------------------------------
254
+ // Eventhandler
255
+
256
+ // -------------------------------------------------------------------------
257
+ // open mobile menu
258
+ // -------------------------------------------------------------------------
259
+ open_mmenu: function (id) {
260
+ logger.info('eventhandler fired on id: ' + id );
261
+ }, // END open_mmenu
262
+
263
+ // -------------------------------------------------------------------------
264
+ // scroll to previous section
265
+ // -------------------------------------------------------------------------
266
+ scroll_previous_section: function (nodes) {
267
+ var previous_header_id;
268
+ var currentNode;
269
+ var prev_node;
270
+
271
+ var index = 0;
272
+ var maxNode = $(nodes).length - 1;
273
+ var $toc = $("#sidebar");
274
+ var current_header_id = $toc.find(".is-active-link").attr('href');
275
+
276
+ // logger.info('eventhandler fired on id: ' + id );
277
+
278
+ nodes.each(function() {
279
+ currentNode = $(this).find(current_header_id);
280
+ if (currentNode.length) {
281
+ if (index > maxNode) {
282
+ return false
283
+ } else {
284
+ prev_node = (index > 0) ? nodes[index-1] : nodes[index];
285
+ previous_header_id = $(prev_node).find(":header").first()[0].id;
286
+ $('a[href*="' + current_header_id + '"]').removeClass('is-active-link');
287
+ $('a[href*="' + previous_header_id + '"]').addClass('is-active-link');
288
+ var dest = $('body').scrollTop() + $('#' + previous_header_id).offset().top - 100;
289
+ $('html, body').animate({
290
+ scrollTop: dest
291
+ }, 500);
292
+ return false;
293
+ }
294
+ }
295
+ (index < maxNode) ? index++ : index;
296
+ // (index = 0) ? index : index++;
297
+ });
298
+ }, // END scroll_previous_section
299
+
300
+ // -------------------------------------------------------------------------
301
+ // scroll to next section
302
+ // -------------------------------------------------------------------------
303
+ scroll_next_section: function (nodes) {
304
+ var next_header_id;
305
+ var currentNode;
306
+ var nextNode;
307
+
308
+ var index = 0;
309
+ var maxNode = $(nodes).length -1;
310
+ var $toc = $("#sidebar");
311
+ var current_header_id = $toc.find(".is-active-link").attr('href');
312
+
313
+ // logger.info('eventhandler fired on id: ' + id );
314
+
315
+ nodes.each(function() {
316
+ // currentNode = $(this).find(current_header_id);
317
+ currentNode = $(this).find(current_header_id);
318
+ if (currentNode.length) {
319
+ if (index == maxNode) {
320
+ return false
321
+ } else {
322
+ nextNode = nodes[index+1];
323
+ next_header_id = $(nextNode).closest().find(":header").first();
324
+ next_header_id = $(nextNode).find(":header").first()[0].id;
325
+
326
+ $('a[href*="' + current_header_id + '"]').removeClass('is-active-link');
327
+ $('a[href*="' + next_header_id + '"]').addClass('is-active-link');
328
+
329
+ var dest = $('body').scrollTop() + $('#' + next_header_id).offset().top - 100;
330
+ $('html, body').animate({
331
+ scrollTop: dest
332
+ }, 500);
333
+ return false;
334
+ }
335
+ }
336
+ (index < maxNode) ? index++ : index;
337
+ });
338
+ }, // END scroll_next_section
339
+
340
+ // -------------------------------------------------------------------------
341
+ // scroll to top
342
+ // -------------------------------------------------------------------------
343
+ scroll_to_top: function () {
344
+ var dest = 0;
345
+
346
+ // logger.info('eventhandler fired on id: ' + id );
347
+
348
+ $('html, body').animate({
349
+ scrollTop: dest
350
+ }, 500);
351
+ }, // END scroll_top
352
+
353
+ // -------------------------------------------------------------------------
354
+ // scroll to bottom
355
+ // -------------------------------------------------------------------------
356
+ scroll_to_bottom: function () {
357
+ var $page = $(document);
358
+ var $footer = $('#j1_footer');
359
+ var f = $footer.length ? $footer.outerHeight() : 0;
360
+ var pageHeight = $page.height() - f - 400;
361
+ var pageHeightOuter = $page.outerHeight()
362
+
363
+ // logger.info('eventhandler fired on id: ' + id );
364
+
365
+ $('html, body').animate({
366
+ scrollTop: pageHeight
367
+ }, 500);
368
+ }, // END scroll_bottom
369
+
370
+ // -------------------------------------------------------------------------
371
+ // scroll to comments (Disqus)
372
+ // -------------------------------------------------------------------------
373
+ scroll_to_comments: function () {
374
+ // logger.info('eventhandler fired on id: ' + id );
375
+ }, // END scroll_comments
376
+
377
+ // -------------------------------------------------------------------------
378
+ // create generic alert
379
+ // -------------------------------------------------------------------------
380
+ alert_me: function (id) {
381
+ // logger.info('eventhandler fired on id: ' + id );
382
+ alert ("Hello world!");
383
+ }, // END alert_me
384
+ // -------------------------------------------------------------------------
385
+ // messageHandler
386
+ // Manage messages (paylods) send from other J1 modules
387
+ // -------------------------------------------------------------------------
388
+ messageHandler: function (sender, message) {
389
+ // var json_message = JSON.stringify(message, undefined, 2); // multiline
390
+ var json_message = JSON.stringify(message);
391
+
392
+ logText = 'received message from ' + sender + ': ' + json_message;
393
+ logger.debug(logText);
394
+
395
+ // -----------------------------------------------------------------------
396
+ // Process commands|actions
397
+ // -----------------------------------------------------------------------
398
+ if (message.type === 'command' && message.action === 'module_initialized') {
399
+ //
400
+ // Place handling of command|action here
401
+ //
402
+ logger.info(message.text);
403
+ }
404
+ if (message.type === 'command' && message.action === 'status') {
405
+ logger.info('messageHandler: received - ' + message.action);
406
+ }
407
+
408
+ //
409
+ // Place handling of other command|action here
410
+ //
411
+
412
+ return true;
413
+ }, // END messageHandler
414
+
415
+ // -------------------------------------------------------------------------
416
+ // setState
417
+ // Set the current (processing) state of the module
418
+ // -------------------------------------------------------------------------
419
+ setState: function (stat) {
420
+ j1.adapter.ssm.state = stat;
421
+ }, // END setState
422
+
423
+ // -------------------------------------------------------------------------
424
+ // getState
425
+ // Returns the current (processing) state of the module
426
+ // -------------------------------------------------------------------------
427
+ getState: function () {
428
+ return j1.adapter.ssm.state;
429
+ }, // END state
430
+
431
+ // -------------------------------------------------------------------------
432
+ // Manage (top) position and sizes (@media breakpoints) of the
433
+ // SSM container depending on the size of the page header (attic)
434
+ // -------------------------------------------------------------------------
435
+ scrollSpy: function (options) {
436
+ logger = log4javascript.getLogger('j1.adapter.ssm.scrollSpy');
437
+
438
+ $(window).scroll(function(event){
439
+ var $navbar = $('nav.navbar');
440
+ var $pagehead = $('.attic');
441
+ var $main_content = $('.js-toc-content');
442
+ var $adblock = $('#adblock');
443
+ var $footer = $('#j1_footer');
444
+ var $ssmContainer = $('#ssm-container');
445
+ var $page = $(document);
446
+
447
+ var offset = 0;
448
+ var pageOffset = -120;
449
+ var scrollPos = $(document).scrollTop();
450
+ var pageHeight = $page.height()
451
+ var pageHeightOuter = $page.outerHeight()
452
+
453
+ // var m = parseInt(pagehead.css('margin-bottom'), 10);
454
+ var m = $main_content.offset().top;
455
+ var s = $ssmContainer.length ? $ssmContainer.height() : 0;
456
+ var f = $footer.length ? $footer.outerHeight() : 0;
457
+ var n = $navbar.length ? $navbar.height() : 0;
458
+ // var h = $pagehead.length ? $pagehead.outerHeight() : 0;
459
+ var a = $adblock.length ? $adblock.outerHeight() : 0;
460
+
461
+ // var o = n + h + a + offset;
462
+ // var o = n + m + offset;
463
+ var o = n + offset;
464
+
465
+ // space above the (fixed) ssm container
466
+ var showSsmPos = m + pageOffset;
467
+
468
+ // space below the (fixed) ssm container
469
+ var hideSsmPos = pageHeight - s - f + pageOffset;
470
+
471
+ // set the top position of ssm container for navbar modes
472
+ // e.g. "sticky" (navbar-fixed)
473
+ if($navbar.hasClass('navbar-fixed')){
474
+ $('#ssm-container').css('top', o);
475
+ } else {
476
+ $('#ssm-container').css('top', m);
477
+ }
478
+
479
+ // show|hide ssm container on scroll position in page
480
+ //
481
+ ( scrollPos >= showSsmPos ) && ( scrollPos <= hideSsmPos )
482
+ ? $ssmContainer.css('display','block')
483
+ : $ssmContainer.css('display','none');
484
+
485
+ logger.debug('content pos detected as: ' + m + 'px');
486
+ logger.debug('scroll pos detected as: ' + scrollPos + 'px');
487
+ }); // END setTop on scroll
488
+
489
+ } // END scrollSpy
490
+
491
+ }; // END return
492
+ })(j1, window);
493
+
494
+ {% endcapture %}
495
+ {{ cache | strip_empty_lines }}
496
+ {% assign cache = nil %}