j1-template 2024.2.0 → 2024.2.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/gemini-ui.html +2 -2
  3. data/assets/themes/j1/adapter/js/advertising.js +2 -10
  4. data/assets/themes/j1/adapter/js/analytics.js +1 -5
  5. data/assets/themes/j1/adapter/js/bmd.js +195 -195
  6. data/assets/themes/j1/adapter/js/carousel.js +786 -786
  7. data/assets/themes/j1/adapter/js/clipboard.js +1 -0
  8. data/assets/themes/j1/adapter/js/comments.js +1 -0
  9. data/assets/themes/j1/adapter/js/cookieConsent.js +460 -466
  10. data/assets/themes/j1/adapter/js/customModule.js +5 -4
  11. data/assets/themes/j1/adapter/js/docsearch.js +1 -0
  12. data/assets/themes/j1/adapter/js/dropdowns.js +1 -0
  13. data/assets/themes/j1/adapter/js/fab.js +1 -0
  14. data/assets/themes/j1/adapter/js/gallery.js +495 -494
  15. data/assets/themes/j1/adapter/js/gemini.js +154 -128
  16. data/assets/themes/j1/adapter/js/iconPicker.js +257 -255
  17. data/assets/themes/j1/adapter/js/iconPickerPage.js +279 -279
  18. data/assets/themes/j1/adapter/js/iframer.js +3 -2
  19. data/assets/themes/j1/adapter/js/j1.js +3285 -3285
  20. data/assets/themes/j1/adapter/js/lazyLoader.js +241 -241
  21. data/assets/themes/j1/adapter/js/lightbox.js +242 -241
  22. data/assets/themes/j1/adapter/js/logger.js +1 -0
  23. data/assets/themes/j1/adapter/js/lunr.js +6 -10
  24. data/assets/themes/j1/adapter/js/masonry.js +427 -426
  25. data/assets/themes/j1/adapter/js/masterslider.js +526 -526
  26. data/assets/themes/j1/adapter/js/mmenu.js +1 -0
  27. data/assets/themes/j1/adapter/js/navigator.js +2 -2
  28. data/assets/themes/j1/adapter/js/particles.js +1 -0
  29. data/assets/themes/j1/adapter/js/rangeSlider.js +1 -0
  30. data/assets/themes/j1/adapter/js/rouge.js +288 -287
  31. data/assets/themes/j1/adapter/js/rtable.js +309 -309
  32. data/assets/themes/j1/adapter/js/slick.js +487 -487
  33. data/assets/themes/j1/adapter/js/slimSelect.js +3 -5
  34. data/assets/themes/j1/adapter/js/themeToggler.js +281 -280
  35. data/assets/themes/j1/adapter/js/themes.js +0 -1
  36. data/assets/themes/j1/adapter/js/toccer.js +1 -0
  37. data/assets/themes/j1/adapter/js/translator.js +1 -0
  38. data/assets/themes/j1/adapter/js/waves.js +1 -0
  39. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +23 -17
  40. data/assets/themes/j1/modules/js-cookies/js/js.cookie.js +147 -0
  41. data/assets/themes/j1/modules/js-cookies/js/js.cookie.min.js +2 -0
  42. data/lib/j1/version.rb +1 -1
  43. data/lib/starter_web/README.md +5 -5
  44. data/lib/starter_web/_config.yml +1 -1
  45. data/lib/starter_web/_data/modules/defaults/themes.yml +171 -171
  46. data/lib/starter_web/_data/resources.yml +26 -0
  47. data/lib/starter_web/_data/templates/feed.xml +1 -1
  48. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  49. data/lib/starter_web/package.json +1 -1
  50. data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +500 -500
  51. metadata +4 -2
@@ -1,526 +1,526 @@
1
- ---
2
- regenerate: true
3
- ---
4
-
5
- {% capture cache %}
6
-
7
- {% comment %}
8
- # -----------------------------------------------------------------------------
9
- # ~/assets/themes/j1/adapter/js/masterslider.js
10
- # Liquid template to adapt Averta MasterSlider Lite
11
- #
12
- # Product/Info:
13
- # https://jekyll.one
14
- # Copyright (C) 2023, 2024 Juergen Adams
15
- #
16
- # J1 Template is licensed under the MIT License.
17
- # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
18
- # -----------------------------------------------------------------------------
19
- # Test data:
20
- # {{ liquid_var | debug }}
21
- # -----------------------------------------------------------------------------
22
- {% endcomment %}
23
-
24
- {% comment %} Liquid var initialization
25
- -------------------------------------------------------------------------------- {% endcomment %}
26
-
27
- {% comment %} Set config files
28
- -------------------------------------------------------------------------------- {% endcomment %}
29
- {% assign environment = site.environment %}
30
- {% assign template_config = site.data.j1_config %}
31
- {% assign modules = site.data.modules %}
32
-
33
- {% comment %} Set config data
34
- -------------------------------------------------------------------------------- {% endcomment %}
35
- {% assign master_slider_defaults = modules.defaults.masterslider.defaults %}
36
- {% assign master_slider_settings = modules.masterslider.settings %}
37
-
38
- {% comment %} Set config options
39
- -------------------------------------------------------------------------------- {% endcomment %}
40
- {% assign master_slider_options = master_slider_defaults | merge: master_slider_settings %}
41
- {% assign lightbox_enabled = master_slider_options.enable_lightbox %}
42
- {% assign slider_manager = master_slider_options.slider_manager %}
43
- {% assign save_slider_config = master_slider_options.save_slider_config %}
44
- {% assign module_version = master_slider_options.module_version %}
45
-
46
- {% comment %} Detect prod mode
47
- -------------------------------------------------------------------------------- {% endcomment %}
48
- {% assign production = false %}
49
- {% if environment == 'prod' or environment == 'production' %}
50
- {% assign production = true %}
51
- {% endif %}
52
-
53
- /*
54
- # -----------------------------------------------------------------------------
55
- # ~/assets/themes/j1/adapter/js/masterslider.js
56
- # J1 Adapter for Averta MasterSlider Lite v2.85.13 (Feb 2022)
57
- #
58
- # Product/Info:
59
- # https://jekyll.one
60
- #
61
- # Copyright (C) 2023, 2024 Juergen Adams
62
- #
63
- # J1 Template is licensed under the MIT License.
64
- # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
65
- # -----------------------------------------------------------------------------
66
- # Adapter generated: {{site.time}}
67
- # -----------------------------------------------------------------------------
68
- */
69
-
70
- // -----------------------------------------------------------------------------
71
- // ESLint shimming
72
- // -----------------------------------------------------------------------------
73
- /* eslint indent: "off" */
74
- // -----------------------------------------------------------------------------
75
- 'use strict';
76
- j1.adapter.masterslider = ((j1, window) => {
77
-
78
- {% comment %} Set global variables
79
- ------------------------------------------------------------------------------ {% endcomment %}
80
- var environment = '{{environment}}';
81
- var moduleVersion = '{{module_version}}';
82
- var sliderManager = j1.stringToBoolean('{{slider_manager}}');
83
- var lightboxEnabled = j1.stringToBoolean('{{lightbox_enabled}}');
84
- var saveSliderConfig = j1.stringToBoolean('{{save_slider_config}}');
85
- var newline = '\n';
86
- var state = 'not_started';
87
-
88
- var masterSliderDefaults;
89
- var masterSliderSettings;
90
- var masterSliderOptions;
91
-
92
- var _this;
93
- var logger;
94
- var logText;
95
-
96
- // date|time
97
- var startTime;
98
- var endTime;
99
- var startTimeModule;
100
- var endTimeModule;
101
- var timeSeconds;
102
-
103
- // ---------------------------------------------------------------------------
104
- // helper functions
105
- // ---------------------------------------------------------------------------
106
-
107
- // ---------------------------------------------------------------------------
108
- // main
109
- // ---------------------------------------------------------------------------
110
- return {
111
-
112
- // -------------------------------------------------------------------------
113
- // adapter initializer
114
- // -------------------------------------------------------------------------
115
- init: (options) => {
116
- var msSliderManager;
117
-
118
- if (sliderManager) {
119
- msSliderManager = document.createElement('script');
120
- msSliderManager.id = 'ms-slider-manager';
121
- msSliderManager.innerHTML = '';
122
- }
123
-
124
- // used for later access
125
- j1.masterslider = {};
126
- j1.masterslider.instances = j1.masterslider.instances || [];
127
-
128
- // -----------------------------------------------------------------------
129
- // default module settings
130
- // -----------------------------------------------------------------------
131
- var settings = $.extend({
132
- module_name: 'j1.adapter.masterslider',
133
- generated: '{{site.time}}'
134
- }, options);
135
-
136
- // Load module DEFAULTS|CONFIG
137
- masterSliderDefaults = $.extend({}, {{master_slider_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
138
- masterSliderSettings = $.extend({}, {{master_slider_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
139
- masterSliderOptions = $.extend({}, masterSliderDefaults, masterSliderSettings);
140
-
141
- // -----------------------------------------------------------------------
142
- // global variable settings
143
- // -----------------------------------------------------------------------
144
- _this = j1.adapter.masterslider;
145
- logger = log4javascript.getLogger('j1.adapter.masterslider');
146
-
147
- // initialize state flag
148
- //
149
- _this.setState('started');
150
- // console.debug('module state: ' + _this.getState());
151
-
152
- // load HTML portion for sliders configured
153
- // console.debug('loading HTML portion for all sliders configured');
154
- _this.loadSliderHTML(masterSliderOptions, masterSliderOptions.sliders);
155
- // create an 'MasterSlider' instance for all sliders configured
156
- // console.debug('create an \'MasterSlider\' instance for all MS sliders configured');
157
- _this.createSliderInstances(masterSliderOptions.sliders, msSliderManager);
158
-
159
- // -----------------------------------------------------------------------
160
- // module initializer
161
- // -----------------------------------------------------------------------
162
- var dependency_met_page_ready = setInterval(() => {
163
- var pageState = $('#content').css("display");
164
- var pageVisible = (pageState === 'block') ? true : false;
165
- var j1CoreFinished = (j1.getState() === 'finished') ? true : false;
166
- var dataLoaded = (_this.getState() === 'data_loaded') ? true : false;
167
- var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
168
-
169
- if (pageVisible && j1CoreFinished && dataLoaded && atticFinished) {
170
- startTimeModule = Date.now();
171
-
172
- _this.setState('started');
173
- logger.debug('\n' + 'set module state to: ' + _this.getState());
174
- logger.info('\n' + 'initializing module: started');
175
-
176
- logger.debug('\n' + 'ms module version detected: ' + moduleVersion);
177
- logger.debug('\n' + 'module is being initialized');
178
-
179
- _this.initSliders(masterSliderOptions, masterSliderOptions.sliders, msSliderManager, saveSliderConfig);
180
-
181
- clearInterval(dependency_met_page_ready);
182
- } // END pageVisible|dataLoaded
183
- }, 10); // END dependency_met_page_ready
184
-
185
- // make sure the 'content' section is visible BEFORE setting-up sliders
186
- var dependencies_met_module_finished = setInterval (() => {
187
- var slidersInitialized = (_this.getState() === 'sliders_initialized') ? true: false;
188
-
189
- if (slidersInitialized) {
190
-
191
- // TODO: Check why a timeout is required to load the Slider Manager
192
- setTimeout(() => {
193
- if (sliderManager) document.body.appendChild(msSliderManager);
194
-
195
- _this.setState('finished');
196
- logger.debug('\n' + 'state: ' + _this.getState());
197
- logger.info('\n' + 'initializing module: finished');
198
-
199
- endTimeModule = Date.now();
200
- logger.info('\n' + 'module initializing time: ' + (endTimeModule-startTimeModule) + 'ms');
201
-
202
- }, masterSliderOptions.slider_manager_load_timeout);
203
-
204
- clearInterval(dependencies_met_module_finished);
205
- } // END if slidersInitialized
206
- }, 10); // END dependencies_met_j1_core_finished
207
- }, // END init
208
-
209
- // -------------------------------------------------------------------------
210
- // loadSliderHTML()
211
- // load all master sliders (HTML portion) dynanically configured
212
- // and enabled (AJAX) from data file
213
- // NOTE: Make sure the placeholder is available in the content page
214
- // eg. using the asciidoc extension masterslider::
215
- // -------------------------------------------------------------------------
216
- loadSliderHTML: (options, slider) => {
217
- var numSliders = Object.keys(slider).length;
218
- var active_sliders = numSliders;
219
- var xhr_data_path = options.xhr_data_path + '/index.html';
220
- var xhr_container_id;
221
-
222
- _this.setState('load_data');
223
- Object.keys(slider).forEach((key) => {
224
- if (slider[key].enabled) {
225
- xhr_container_id = 'p_' + slider[key].id;
226
- j1.loadHTML({
227
- xhr_container_id: xhr_container_id,
228
- xhr_data_path: xhr_data_path,
229
- xhr_data_element: slider[key].id
230
- });
231
- } else {
232
- active_sliders--;
233
- }
234
- }); //END forEach
235
-
236
- _this.setState('data_loaded');
237
- }, // END loadSliderHTML
238
-
239
- // -------------------------------------------------------------------------
240
- // createSliderInstances()
241
- // create an 'MasterSlider' instance for all sliders configured
242
- // -------------------------------------------------------------------------
243
- createSliderInstances: (sliders, sliderManager) => {
244
- var msSliderManager = sliderManager;
245
- var numSliders = Object.keys(sliders).length;
246
- var msSliderManagerItem;
247
-
248
- var i=0;
249
- Object.keys(sliders).forEach((key) => {
250
- i++;
251
- if (sliderManager) {
252
- msSliderManagerItem = ' var masterslider_' + i + ' = new MasterSlider();' + '\n';
253
- msSliderManager.innerHTML += msSliderManagerItem;
254
- } else {
255
- _this["masterslider_" + i] = new MasterSlider();
256
- }
257
- }); //END forEach
258
- }, // END createSliderInstances
259
-
260
- // -------------------------------------------------------------------------
261
- // initSliders()
262
- // initialze all master sliders found in page. Dynamically apply properties
263
- // for methods 'setup' and 'control'.
264
- // -------------------------------------------------------------------------
265
- initSliders: (options, slider, sliderManager, save_config) => {
266
- var msSliderManager = sliderManager;
267
- var newline = '\n';
268
-
269
- // run the method 'control' on all sliders 'enabled'
270
- //
271
- function setupControls(options, slider, sliderManager) {
272
- const controlOptions = options.controls;
273
- var msSliderManager = sliderManager;
274
- var index;
275
- var i=0;
276
-
277
- logger.info('\n' + 'generate slider controls');
278
-
279
- if (sliderManager) msSliderManager.innerHTML += newline;
280
- Object.keys(slider).forEach((key) => {
281
- i++; // instance index
282
- index = parseInt(key); // object index
283
-
284
- if (slider[index].enabled) {
285
- if (slider[index].controls) {
286
- Object.keys(slider[index].controls).forEach((key) => {
287
- var msSliderManagerItem = '\n';
288
- logger.debug('\n' + 'slider control found id|key: ' + slider[index].id + '|' + key);
289
-
290
- // merge settings, defaults into control
291
- control = $.extend({}, controlOptions[key], slider[index].controls[key]);
292
- // remove J1 config setting
293
- delete control['enabled'];
294
-
295
- if (sliderManager) {
296
- msSliderManagerItem = ' ' + 'masterslider_' + i + '.control(' + '\'' + key + '\'' + ', ' + JSON.stringify(control) + ');'
297
- msSliderManager.innerHTML += msSliderManagerItem + '\n';
298
- } else {
299
- _this["masterslider_" + i].control(key, control);
300
- }
301
-
302
- });
303
- } else {
304
- logger.debug('\n' + 'no slider controls found on id: ' + slider[key].id);
305
- }
306
- } else {
307
- logger.debug('\n' + 'slider found disabled on id: ' + slider[key].id);
308
- }
309
- });
310
- } // END setupControls
311
-
312
- // initialize plugins on all sliders if 'enabled'
313
- //
314
- function setupPlugIns(options, slider, sliderManager) {
315
- const pluginOptions = options.plugins;
316
- var msSliderManager = sliderManager;
317
- var plugins = {};
318
-
319
- var pluginSettings;
320
- var index;
321
- var i=0;
322
-
323
- logger.debug('\n' + 'generate slider plugins');
324
-
325
- if (sliderManager) msSliderManager.innerHTML += newline;
326
- Object.keys(slider).forEach((key) => {
327
- index = parseInt(key); // object index
328
- i++; // instance index
329
-
330
- if (slider[index].enabled) {
331
- if (slider[index].plugins) {
332
- Object.keys(slider[index].plugins).forEach((key) => {
333
- var msSliderManagerItem = '\n';
334
- logger.info('\n' + 'slider plugin found id|key: ' + slider[index].id + '|' + key);
335
-
336
- // merge settings, defaults into 'plugins'
337
- plugins = $.extend({}, pluginOptions, slider[index].plugins);
338
-
339
- // generate setup for plugin 'MSScrollParallax'
340
- // NOTE: for the MS config, the plugin 'MSScrollParallax' is named ' J1ScrollParallax'
341
- if (plugins.J1ScrollParallax.enabled) {
342
- // remove J1 config settings
343
- delete plugins.J1ScrollParallax.enabled;
344
-
345
- // create a 'properties' string
346
- pluginSettings = JSON.stringify(plugins.J1ScrollParallax).replace(/"/g, '').replace(/{/g, '').replace(/}/g, '');
347
- logger.debug('\n' + 'plugin J1ScrollParallax found: ' + pluginSettings);
348
-
349
- // remove property names to get a pure 'parameter' string
350
- pluginSettings = pluginSettings.replace(/layers_parallax_depth:/g, '');
351
- pluginSettings = pluginSettings.replace(/background_parallax_depth:/g, '');
352
- pluginSettings = pluginSettings.replace(/fade_layers:/g, '');
353
-
354
- if (sliderManager) {
355
- msSliderManagerItem = ' ' + 'MSScrollParallax.setup(masterslider_' + i + ', ' + pluginSettings + ');';
356
- msSliderManager.innerHTML += msSliderManagerItem + '\n';
357
- } else {
358
- MSScrollParallax.setup(j1.masterslider.instances[index], pluginSettings);
359
- }
360
- } // END plugin 'MSScrollParallax'
361
- });
362
- } else {
363
- logger.debug('\n' + 'no slider plugins found on id: ' + slider[key].id);
364
- } // END if slider[index].plugins
365
- } else {
366
- logger.debug('\n' + 'slider found disabled on id: ' + slider[key].id);
367
- } // END if slider[index].enabled
368
- }); // END forEach
369
- } // END setupPlugIns
370
-
371
- // run the method 'setup' on all sliders 'enabled'
372
- //
373
- function setupSliders(options, slider, sliderManager, save_config) {
374
- const controlOptions = options.controls;
375
- var msSliderManager = sliderManager;
376
- var control = {};
377
- var index;
378
-
379
- logger.info('\n' + 'generate slider setup');
380
-
381
- if (sliderManager) msSliderManager.innerHTML += newline;
382
- var i=0;
383
- Object.keys(slider).forEach((key) => {
384
- var msSliderManagerItem = '\n';
385
- i++; // instance index
386
- index = parseInt(key); // object index
387
- if (slider[index].enabled) {
388
- logger.debug('\n' + 'slider is being initialized on id: ' + slider[key].id);
389
-
390
- // merge settings, defaults into 'setup'
391
- setup = $.extend({}, settings.options, slider[index].options);
392
-
393
- // log the filter object if enabled
394
- if (setup.filters !== null) {
395
- var filterSettings = JSON.stringify(setup.filters).replace(/"/g, '');
396
- logger.debug('\n' + 'filters found: ' + filterSettings.replace(/{/g, '').replace(/}/g, ''));
397
- }
398
-
399
- if (sliderManager) {
400
- msSliderManagerItem = ' ' + 'masterslider_' + i + '.setup(' + '\'' + slider[key].id + '\'' + ', ' + JSON.stringify(setup) + ');'
401
- msSliderManager.innerHTML += msSliderManagerItem + '\n';
402
- } else {
403
- _this["masterslider_" + i].setup(slider[key].id, setup);
404
- }
405
-
406
- // save slider config for later access
407
- if (save_config) {
408
- if (sliderManager) {
409
- msSliderManagerItem = ' ' + 'j1.masterslider.instances.push(masterslider_' + i + ');';
410
- msSliderManager.innerHTML += msSliderManagerItem + '\n';
411
- } else {
412
- j1.masterslider.instances.push(_this["masterslider_" + i]);
413
- }
414
- }
415
- } else {
416
- logger.info('\n' + 'slider found disabled on id: ' + slider[key].id);
417
- }
418
- }); // END forEach
419
-
420
- _this.setState('sliders_initialized');
421
- logger.debug('\n' + 'state: ' + _this.getState());
422
- logger.info('\n' + 'initializing sliders finished');
423
-
424
- } // END setupSliders
425
-
426
- var settings = $.extend({}, options, slider);
427
- var control = {};
428
- var setup = {};
429
-
430
- var log_text;
431
-
432
- _this.setState('initialize_sliders');
433
- logger.debug('\n' + 'state: ' + _this.getState());
434
- log_text = '\n' + 'sliders are being initialized';
435
- logger.info(log_text);
436
-
437
- setupControls(options, slider, msSliderManager);
438
- setupSliders(options, slider, msSliderManager, save_config);
439
- setupPlugIns(options, slider, msSliderManager);
440
-
441
- }, // END initSliders
442
-
443
- // -------------------------------------------------------------------------
444
- // registerEvents()
445
- // Currently NOT used (experimental)
446
- // -------------------------------------------------------------------------
447
- registerEvents: (options, slider) => {
448
- var index;
449
-
450
- var i=0;
451
- Object.keys(slider).forEach((key) => {
452
- index = parseInt(key); // object index
453
- i++; // instance index
454
-
455
- logger.debug('\n' + 'slider events are being initialized on id: ' + index);
456
-
457
- slider[index].api.addEventListener(MSSliderEvent.WAITING, (e) => {
458
- var controller = e.target.view.controller;
459
- var controllerValue = e.target.view.controller.value;
460
- var isLoading = e.target.currentSlide.$loading.length;
461
-
462
- // dispatches when the slider's current slide change starts.
463
- if (!isLoading) {
464
- logger.info('\n' + 'slider is loaded' );
465
- } else {
466
- logger.info('\n' + 'slider is being loaded: ' + e.target.currentSlide.bg_src);
467
- }
468
- }); // END addEventListener
469
- }); // END forEach
470
- }, // END registerEvents
471
-
472
- // -------------------------------------------------------------------------
473
- // messageHandler()
474
- // manage messages send from other J1 modules
475
- // -------------------------------------------------------------------------
476
- messageHandler: (sender, message) => {
477
- var json_message = JSON.stringify(message, undefined, 2);
478
-
479
- logText = '\n' + 'received message from ' + sender + ': ' + json_message;
480
- logger.debug(logText);
481
-
482
- // -----------------------------------------------------------------------
483
- // process commands|actions
484
- // -----------------------------------------------------------------------
485
- if (message.type === 'command' && message.action === 'module_initialized') {
486
-
487
- //
488
- // place handling of command|action here
489
- //
490
-
491
- logger.info('\n' + message.text);
492
- }
493
-
494
- //
495
- // place handling of other command|action here
496
- //
497
-
498
- return true;
499
- }, // END messageHandler
500
-
501
- // -------------------------------------------------------------------------
502
- // setState()
503
- // sets the current (processing) state of the module
504
- // -------------------------------------------------------------------------
505
- setState: (stat) => {
506
- _this.state = stat;
507
- }, // END setState
508
-
509
- // -------------------------------------------------------------------------
510
- // getState()
511
- // Returns the current (processing) state of the module
512
- // -------------------------------------------------------------------------
513
- getState: () => {
514
- return _this.state;
515
- } // END getState
516
-
517
- }; // END main (return)
518
- })(j1, window);
519
-
520
- {% endcapture %}
521
- {% if production %}
522
- {{ cache | minifyJS }}
523
- {% else %}
524
- {{ cache | strip_empty_lines }}
525
- {% endif %}
526
- {% assign cache = nil %}
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/masterslider.js
10
+ # Liquid template to adapt Averta MasterSlider Lite
11
+ #
12
+ # Product/Info:
13
+ # https://jekyll.one
14
+ # Copyright (C) 2023, 2024 Juergen Adams
15
+ #
16
+ # J1 Template is licensed under the MIT License.
17
+ # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
18
+ # -----------------------------------------------------------------------------
19
+ # Test data:
20
+ # {{ liquid_var | debug }}
21
+ # -----------------------------------------------------------------------------
22
+ {% endcomment %}
23
+
24
+ {% comment %} Liquid var initialization
25
+ -------------------------------------------------------------------------------- {% endcomment %}
26
+
27
+ {% comment %} Set config files
28
+ -------------------------------------------------------------------------------- {% endcomment %}
29
+ {% assign environment = site.environment %}
30
+ {% assign template_config = site.data.j1_config %}
31
+ {% assign modules = site.data.modules %}
32
+
33
+ {% comment %} Set config data
34
+ -------------------------------------------------------------------------------- {% endcomment %}
35
+ {% assign master_slider_defaults = modules.defaults.masterslider.defaults %}
36
+ {% assign master_slider_settings = modules.masterslider.settings %}
37
+
38
+ {% comment %} Set config options
39
+ -------------------------------------------------------------------------------- {% endcomment %}
40
+ {% assign master_slider_options = master_slider_defaults | merge: master_slider_settings %}
41
+ {% assign lightbox_enabled = master_slider_options.enable_lightbox %}
42
+ {% assign slider_manager = master_slider_options.slider_manager %}
43
+ {% assign save_slider_config = master_slider_options.save_slider_config %}
44
+ {% assign module_version = master_slider_options.module_version %}
45
+
46
+ {% comment %} Detect prod mode
47
+ -------------------------------------------------------------------------------- {% endcomment %}
48
+ {% assign production = false %}
49
+ {% if environment == 'prod' or environment == 'production' %}
50
+ {% assign production = true %}
51
+ {% endif %}
52
+
53
+ /*
54
+ # -----------------------------------------------------------------------------
55
+ # ~/assets/themes/j1/adapter/js/masterslider.js
56
+ # J1 Adapter for Averta MasterSlider Lite v2.85.13 (Feb 2022)
57
+ #
58
+ # Product/Info:
59
+ # https://jekyll.one
60
+ #
61
+ # Copyright (C) 2023, 2024 Juergen Adams
62
+ #
63
+ # J1 Template is licensed under the MIT License.
64
+ # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
65
+ # -----------------------------------------------------------------------------
66
+ # Adapter generated: {{site.time}}
67
+ # -----------------------------------------------------------------------------
68
+ */
69
+
70
+ // -----------------------------------------------------------------------------
71
+ // ESLint shimming
72
+ // -----------------------------------------------------------------------------
73
+ /* eslint indent: "off" */
74
+ // -----------------------------------------------------------------------------
75
+ 'use strict';
76
+ j1.adapter.masterslider = ((j1, window) => {
77
+
78
+ {% comment %} Set global variables
79
+ ------------------------------------------------------------------------------ {% endcomment %}
80
+ var environment = '{{environment}}';
81
+ var moduleVersion = '{{module_version}}';
82
+ var sliderManager = j1.stringToBoolean('{{slider_manager}}');
83
+ var lightboxEnabled = j1.stringToBoolean('{{lightbox_enabled}}');
84
+ var saveSliderConfig = j1.stringToBoolean('{{save_slider_config}}');
85
+ var newline = '\n';
86
+ var state = 'not_started';
87
+
88
+ var masterSliderDefaults;
89
+ var masterSliderSettings;
90
+ var masterSliderOptions;
91
+
92
+ var _this;
93
+ var logger;
94
+ var logText;
95
+
96
+ // date|time
97
+ var startTime;
98
+ var endTime;
99
+ var startTimeModule;
100
+ var endTimeModule;
101
+ var timeSeconds;
102
+
103
+ // ---------------------------------------------------------------------------
104
+ // helper functions
105
+ // ---------------------------------------------------------------------------
106
+
107
+ // ---------------------------------------------------------------------------
108
+ // main
109
+ // ---------------------------------------------------------------------------
110
+ return {
111
+
112
+ // -------------------------------------------------------------------------
113
+ // adapter initializer
114
+ // -------------------------------------------------------------------------
115
+ init: (options) => {
116
+ var msSliderManager;
117
+
118
+ if (sliderManager) {
119
+ msSliderManager = document.createElement('script');
120
+ msSliderManager.id = 'ms-slider-manager';
121
+ msSliderManager.innerHTML = '';
122
+ }
123
+
124
+ // used for later access
125
+ j1.masterslider = {};
126
+ j1.masterslider.instances = j1.masterslider.instances || [];
127
+
128
+ // -----------------------------------------------------------------------
129
+ // default module settings
130
+ // -----------------------------------------------------------------------
131
+ var settings = $.extend({
132
+ module_name: 'j1.adapter.masterslider',
133
+ generated: '{{site.time}}'
134
+ }, options);
135
+
136
+ // Load module DEFAULTS|CONFIG
137
+ masterSliderDefaults = $.extend({}, {{master_slider_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
138
+ masterSliderSettings = $.extend({}, {{master_slider_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
139
+ masterSliderOptions = $.extend({}, masterSliderDefaults, masterSliderSettings);
140
+
141
+ // -----------------------------------------------------------------------
142
+ // global variable settings
143
+ // -----------------------------------------------------------------------
144
+ _this = j1.adapter.masterslider;
145
+ logger = log4javascript.getLogger('j1.adapter.masterslider');
146
+
147
+ // initialize state flag
148
+ //
149
+ _this.setState('started');
150
+ // console.debug('module state: ' + _this.getState());
151
+
152
+ // load HTML portion for sliders configured
153
+ // console.debug('loading HTML portion for all sliders configured');
154
+ _this.loadSliderHTML(masterSliderOptions, masterSliderOptions.sliders);
155
+ // create an 'MasterSlider' instance for all sliders configured
156
+ // console.debug('create an \'MasterSlider\' instance for all MS sliders configured');
157
+ _this.createSliderInstances(masterSliderOptions.sliders, msSliderManager);
158
+
159
+ // -----------------------------------------------------------------------
160
+ // module initializer
161
+ // -----------------------------------------------------------------------
162
+ var dependency_met_page_ready = setInterval(() => {
163
+ var pageState = $('#content').css("display");
164
+ var pageVisible = (pageState === 'block') ? true : false;
165
+ var j1CoreFinished = (j1.getState() === 'finished') ? true : false;
166
+ var dataLoaded = (_this.getState() === 'data_loaded') ? true : false;
167
+ var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true : false;
168
+
169
+ if (pageVisible && j1CoreFinished && dataLoaded && atticFinished) {
170
+ startTimeModule = Date.now();
171
+
172
+ _this.setState('started');
173
+ logger.debug('\n' + 'set module state to: ' + _this.getState());
174
+ logger.info('\n' + 'initializing module: started');
175
+
176
+ logger.debug('\n' + 'ms module version detected: ' + moduleVersion);
177
+ logger.debug('\n' + 'module is being initialized');
178
+
179
+ _this.initSliders(masterSliderOptions, masterSliderOptions.sliders, msSliderManager, saveSliderConfig);
180
+
181
+ clearInterval(dependency_met_page_ready);
182
+ } // END pageVisible|dataLoaded
183
+ }, 10); // END dependency_met_page_ready
184
+
185
+ // make sure the 'content' section is visible BEFORE setting-up sliders
186
+ var dependencies_met_module_finished = setInterval (() => {
187
+ var slidersInitialized = (_this.getState() === 'sliders_initialized') ? true: false;
188
+
189
+ if (slidersInitialized) {
190
+
191
+ // TODO: Check why a timeout is required to load the Slider Manager
192
+ setTimeout(() => {
193
+ if (sliderManager) document.body.appendChild(msSliderManager);
194
+
195
+ _this.setState('finished');
196
+ logger.debug('\n' + 'state: ' + _this.getState());
197
+ logger.info('\n' + 'initializing module: finished');
198
+
199
+ endTimeModule = Date.now();
200
+ logger.info('\n' + 'module initializing time: ' + (endTimeModule-startTimeModule) + 'ms');
201
+
202
+ }, masterSliderOptions.slider_manager_load_timeout);
203
+
204
+ clearInterval(dependencies_met_module_finished);
205
+ } // END if slidersInitialized
206
+ }, 10); // END dependencies_met_j1_core_finished
207
+ }, // END init
208
+
209
+ // -------------------------------------------------------------------------
210
+ // loadSliderHTML()
211
+ // load all master sliders (HTML portion) dynanically configured
212
+ // and enabled (AJAX) from data file
213
+ // NOTE: Make sure the placeholder is available in the content page
214
+ // eg. using the asciidoc extension masterslider::
215
+ // -------------------------------------------------------------------------
216
+ loadSliderHTML: (options, slider) => {
217
+ var numSliders = Object.keys(slider).length;
218
+ var active_sliders = numSliders;
219
+ var xhr_data_path = options.xhr_data_path + '/index.html';
220
+ var xhr_container_id;
221
+
222
+ _this.setState('load_data');
223
+ Object.keys(slider).forEach((key) => {
224
+ if (slider[key].enabled) {
225
+ xhr_container_id = 'p_' + slider[key].id;
226
+ j1.loadHTML({
227
+ xhr_container_id: xhr_container_id,
228
+ xhr_data_path: xhr_data_path,
229
+ xhr_data_element: slider[key].id
230
+ });
231
+ } else {
232
+ active_sliders--;
233
+ }
234
+ }); //END forEach
235
+
236
+ _this.setState('data_loaded');
237
+ }, // END loadSliderHTML
238
+
239
+ // -------------------------------------------------------------------------
240
+ // createSliderInstances()
241
+ // create an 'MasterSlider' instance for all sliders configured
242
+ // -------------------------------------------------------------------------
243
+ createSliderInstances: (sliders, sliderManager) => {
244
+ var msSliderManager = sliderManager;
245
+ var numSliders = Object.keys(sliders).length;
246
+ var msSliderManagerItem;
247
+
248
+ var i=0;
249
+ Object.keys(sliders).forEach((key) => {
250
+ i++;
251
+ if (sliderManager) {
252
+ msSliderManagerItem = ' var masterslider_' + i + ' = new MasterSlider();' + '\n';
253
+ msSliderManager.innerHTML += msSliderManagerItem;
254
+ } else {
255
+ _this["masterslider_" + i] = new MasterSlider();
256
+ }
257
+ }); //END forEach
258
+ }, // END createSliderInstances
259
+
260
+ // -------------------------------------------------------------------------
261
+ // initSliders()
262
+ // initialze all master sliders found in page. Dynamically apply properties
263
+ // for methods 'setup' and 'control'.
264
+ // -------------------------------------------------------------------------
265
+ initSliders: (options, slider, sliderManager, save_config) => {
266
+ var msSliderManager = sliderManager;
267
+ var newline = '\n';
268
+
269
+ // run the method 'control' on all sliders 'enabled'
270
+ //
271
+ function setupControls(options, slider, sliderManager) {
272
+ const controlOptions = options.controls;
273
+ var msSliderManager = sliderManager;
274
+ var index;
275
+ var i=0;
276
+
277
+ logger.info('\n' + 'generate slider controls');
278
+
279
+ if (sliderManager) msSliderManager.innerHTML += newline;
280
+ Object.keys(slider).forEach((key) => {
281
+ i++; // instance index
282
+ index = parseInt(key); // object index
283
+
284
+ if (slider[index].enabled) {
285
+ if (slider[index].controls) {
286
+ Object.keys(slider[index].controls).forEach((key) => {
287
+ var msSliderManagerItem = '\n';
288
+ logger.debug('\n' + 'slider control found id|key: ' + slider[index].id + '|' + key);
289
+
290
+ // merge settings, defaults into control
291
+ control = $.extend({}, controlOptions[key], slider[index].controls[key]);
292
+ // remove J1 config setting
293
+ delete control['enabled'];
294
+
295
+ if (sliderManager) {
296
+ msSliderManagerItem = ' ' + 'masterslider_' + i + '.control(' + '\'' + key + '\'' + ', ' + JSON.stringify(control) + ');'
297
+ msSliderManager.innerHTML += msSliderManagerItem + '\n';
298
+ } else {
299
+ _this["masterslider_" + i].control(key, control);
300
+ }
301
+
302
+ });
303
+ } else {
304
+ logger.debug('\n' + 'no slider controls found on id: ' + slider[key].id);
305
+ }
306
+ } else {
307
+ logger.debug('\n' + 'slider found disabled on id: ' + slider[key].id);
308
+ }
309
+ });
310
+ } // END setupControls
311
+
312
+ // initialize plugins on all sliders if 'enabled'
313
+ //
314
+ function setupPlugIns(options, slider, sliderManager) {
315
+ const pluginOptions = options.plugins;
316
+ var msSliderManager = sliderManager;
317
+ var plugins = {};
318
+
319
+ var pluginSettings;
320
+ var index;
321
+ var i=0;
322
+
323
+ logger.debug('\n' + 'generate slider plugins');
324
+
325
+ if (sliderManager) msSliderManager.innerHTML += newline;
326
+ Object.keys(slider).forEach((key) => {
327
+ index = parseInt(key); // object index
328
+ i++; // instance index
329
+
330
+ if (slider[index].enabled) {
331
+ if (slider[index].plugins) {
332
+ Object.keys(slider[index].plugins).forEach((key) => {
333
+ var msSliderManagerItem = '\n';
334
+ logger.info('\n' + 'slider plugin found id|key: ' + slider[index].id + '|' + key);
335
+
336
+ // merge settings, defaults into 'plugins'
337
+ plugins = $.extend({}, pluginOptions, slider[index].plugins);
338
+
339
+ // generate setup for plugin 'MSScrollParallax'
340
+ // NOTE: for the MS config, the plugin 'MSScrollParallax' is named ' J1ScrollParallax'
341
+ if (plugins.J1ScrollParallax.enabled) {
342
+ // remove J1 config settings
343
+ delete plugins.J1ScrollParallax.enabled;
344
+
345
+ // create a 'properties' string
346
+ pluginSettings = JSON.stringify(plugins.J1ScrollParallax).replace(/"/g, '').replace(/{/g, '').replace(/}/g, '');
347
+ logger.debug('\n' + 'plugin J1ScrollParallax found: ' + pluginSettings);
348
+
349
+ // remove property names to get a pure 'parameter' string
350
+ pluginSettings = pluginSettings.replace(/layers_parallax_depth:/g, '');
351
+ pluginSettings = pluginSettings.replace(/background_parallax_depth:/g, '');
352
+ pluginSettings = pluginSettings.replace(/fade_layers:/g, '');
353
+
354
+ if (sliderManager) {
355
+ msSliderManagerItem = ' ' + 'MSScrollParallax.setup(masterslider_' + i + ', ' + pluginSettings + ');';
356
+ msSliderManager.innerHTML += msSliderManagerItem + '\n';
357
+ } else {
358
+ MSScrollParallax.setup(j1.masterslider.instances[index], pluginSettings);
359
+ }
360
+ } // END plugin 'MSScrollParallax'
361
+ });
362
+ } else {
363
+ logger.debug('\n' + 'no slider plugins found on id: ' + slider[key].id);
364
+ } // END if slider[index].plugins
365
+ } else {
366
+ logger.debug('\n' + 'slider found disabled on id: ' + slider[key].id);
367
+ } // END if slider[index].enabled
368
+ }); // END forEach
369
+ } // END setupPlugIns
370
+
371
+ // run the method 'setup' on all sliders 'enabled'
372
+ //
373
+ function setupSliders(options, slider, sliderManager, save_config) {
374
+ const controlOptions = options.controls;
375
+ var msSliderManager = sliderManager;
376
+ var control = {};
377
+ var index;
378
+
379
+ logger.info('\n' + 'generate slider setup');
380
+
381
+ if (sliderManager) msSliderManager.innerHTML += newline;
382
+ var i=0;
383
+ Object.keys(slider).forEach((key) => {
384
+ var msSliderManagerItem = '\n';
385
+ i++; // instance index
386
+ index = parseInt(key); // object index
387
+ if (slider[index].enabled) {
388
+ logger.debug('\n' + 'slider is being initialized on id: ' + slider[key].id);
389
+
390
+ // merge settings, defaults into 'setup'
391
+ setup = $.extend({}, settings.options, slider[index].options);
392
+
393
+ // log the filter object if enabled
394
+ if (setup.filters !== null) {
395
+ var filterSettings = JSON.stringify(setup.filters).replace(/"/g, '');
396
+ logger.debug('\n' + 'filters found: ' + filterSettings.replace(/{/g, '').replace(/}/g, ''));
397
+ }
398
+
399
+ if (sliderManager) {
400
+ msSliderManagerItem = ' ' + 'masterslider_' + i + '.setup(' + '\'' + slider[key].id + '\'' + ', ' + JSON.stringify(setup) + ');'
401
+ msSliderManager.innerHTML += msSliderManagerItem + '\n';
402
+ } else {
403
+ _this["masterslider_" + i].setup(slider[key].id, setup);
404
+ }
405
+
406
+ // save slider config for later access
407
+ if (save_config) {
408
+ if (sliderManager) {
409
+ msSliderManagerItem = ' ' + 'j1.masterslider.instances.push(masterslider_' + i + ');';
410
+ msSliderManager.innerHTML += msSliderManagerItem + '\n';
411
+ } else {
412
+ j1.masterslider.instances.push(_this["masterslider_" + i]);
413
+ }
414
+ }
415
+ } else {
416
+ logger.info('\n' + 'slider found disabled on id: ' + slider[key].id);
417
+ }
418
+ }); // END forEach
419
+
420
+ _this.setState('sliders_initialized');
421
+ logger.debug('\n' + 'state: ' + _this.getState());
422
+ logger.info('\n' + 'initializing sliders finished');
423
+
424
+ } // END setupSliders
425
+
426
+ var settings = $.extend({}, options, slider);
427
+ var control = {};
428
+ var setup = {};
429
+
430
+ var log_text;
431
+
432
+ _this.setState('initialize_sliders');
433
+ logger.debug('\n' + 'state: ' + _this.getState());
434
+ log_text = '\n' + 'sliders are being initialized';
435
+ logger.info(log_text);
436
+
437
+ setupControls(options, slider, msSliderManager);
438
+ setupSliders(options, slider, msSliderManager, save_config);
439
+ setupPlugIns(options, slider, msSliderManager);
440
+
441
+ }, // END initSliders
442
+
443
+ // -------------------------------------------------------------------------
444
+ // registerEvents()
445
+ // Currently NOT used (experimental)
446
+ // -------------------------------------------------------------------------
447
+ registerEvents: (options, slider) => {
448
+ var index;
449
+
450
+ var i=0;
451
+ Object.keys(slider).forEach((key) => {
452
+ index = parseInt(key); // object index
453
+ i++; // instance index
454
+
455
+ logger.debug('\n' + 'slider events are being initialized on id: ' + index);
456
+
457
+ slider[index].api.addEventListener(MSSliderEvent.WAITING, (e) => {
458
+ var controller = e.target.view.controller;
459
+ var controllerValue = e.target.view.controller.value;
460
+ var isLoading = e.target.currentSlide.$loading.length;
461
+
462
+ // dispatches when the slider's current slide change starts.
463
+ if (!isLoading) {
464
+ logger.info('\n' + 'slider is loaded' );
465
+ } else {
466
+ logger.info('\n' + 'slider is being loaded: ' + e.target.currentSlide.bg_src);
467
+ }
468
+ }); // END addEventListener
469
+ }); // END forEach
470
+ }, // END registerEvents
471
+
472
+ // -------------------------------------------------------------------------
473
+ // messageHandler()
474
+ // manage messages send from other J1 modules
475
+ // -------------------------------------------------------------------------
476
+ messageHandler: (sender, message) => {
477
+ var json_message = JSON.stringify(message, undefined, 2);
478
+
479
+ logText = '\n' + 'received message from ' + sender + ': ' + json_message;
480
+ logger.debug(logText);
481
+
482
+ // -----------------------------------------------------------------------
483
+ // process commands|actions
484
+ // -----------------------------------------------------------------------
485
+ if (message.type === 'command' && message.action === 'module_initialized') {
486
+
487
+ //
488
+ // place handling of command|action here
489
+ //
490
+
491
+ logger.info('\n' + message.text);
492
+ }
493
+
494
+ //
495
+ // place handling of other command|action here
496
+ //
497
+
498
+ return true;
499
+ }, // END messageHandler
500
+
501
+ // -------------------------------------------------------------------------
502
+ // setState()
503
+ // sets the current (processing) state of the module
504
+ // -------------------------------------------------------------------------
505
+ setState: (stat) => {
506
+ _this.state = stat;
507
+ }, // END setState
508
+
509
+ // -------------------------------------------------------------------------
510
+ // getState()
511
+ // Returns the current (processing) state of the module
512
+ // -------------------------------------------------------------------------
513
+ getState: () => {
514
+ return _this.state;
515
+ } // END getState
516
+
517
+ }; // END main (return)
518
+ })(j1, window);
519
+
520
+ {% endcapture %}
521
+ {% if production %}
522
+ {{ cache | minifyJS }}
523
+ {% else %}
524
+ {{ cache | strip_empty_lines }}
525
+ {% endif %}
526
+ {% assign cache = nil %}