j1-template 2024.3.21 → 2024.3.22

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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/amplitude_app.html +60 -51
  3. data/assets/theme/j1/adapter/js/advertising.js +40 -38
  4. data/assets/theme/j1/adapter/js/algolia.js +13 -11
  5. data/assets/theme/j1/adapter/js/amplitude.js +504 -348
  6. data/assets/theme/j1/adapter/js/analytics.js +19 -17
  7. data/assets/theme/j1/adapter/js/asciidoctor.js +10 -8
  8. data/assets/theme/j1/adapter/js/attic.js +24 -22
  9. data/assets/theme/j1/adapter/js/bmd.js +10 -8
  10. data/assets/theme/j1/adapter/js/carousel.js +12 -9
  11. data/assets/theme/j1/adapter/js/chatbot.js +106 -104
  12. data/assets/theme/j1/adapter/js/clipboard.js +16 -14
  13. data/assets/theme/j1/adapter/js/comments.js +24 -22
  14. data/assets/theme/j1/adapter/js/cookieConsent.js +5 -1
  15. data/assets/theme/j1/adapter/js/customFunctions.js +12 -10
  16. data/assets/theme/j1/adapter/js/customModule.js +10 -8
  17. data/assets/theme/j1/adapter/js/docsearch.js +33 -31
  18. data/assets/theme/j1/adapter/js/dropdowns.js +16 -14
  19. data/assets/theme/j1/adapter/js/fab.js +34 -32
  20. data/assets/theme/j1/adapter/js/gallery.js +21 -19
  21. data/assets/theme/j1/adapter/js/gemini.js +66 -64
  22. data/assets/theme/j1/adapter/js/iconPicker.js +31 -29
  23. data/assets/theme/j1/adapter/js/iconPickerPage.js +11 -9
  24. data/assets/theme/j1/adapter/js/iframer.js +17 -15
  25. data/assets/theme/j1/adapter/js/j1.js +146 -143
  26. data/assets/theme/j1/adapter/js/lazyLoader.js +33 -31
  27. data/assets/theme/j1/adapter/js/lightbox.js +9 -7
  28. data/assets/theme/j1/adapter/js/logger.js +11 -9
  29. data/assets/theme/j1/adapter/js/lunr.js +37 -35
  30. data/assets/theme/j1/adapter/js/masonry.js +23 -21
  31. data/assets/theme/j1/adapter/js/masterslider.js +31 -29
  32. data/assets/theme/j1/adapter/js/mmenu.js +25 -23
  33. data/assets/theme/j1/adapter/js/navigator.js +43 -41
  34. data/assets/theme/j1/adapter/js/particles.js +12 -10
  35. data/assets/theme/j1/adapter/js/rangeSlider.js +21 -19
  36. data/assets/theme/j1/adapter/js/rouge.js +10 -8
  37. data/assets/theme/j1/adapter/js/rtable.js +14 -12
  38. data/assets/theme/j1/adapter/js/rtextResizer.js +10 -8
  39. data/assets/theme/j1/adapter/js/scroller.js +15 -13
  40. data/assets/theme/j1/adapter/js/slick.js +18 -16
  41. data/assets/theme/j1/adapter/js/slimSelect.js +30 -28
  42. data/assets/theme/j1/adapter/js/speak2me.js +25 -23
  43. data/assets/theme/j1/adapter/js/swiper.js +13 -11
  44. data/assets/theme/j1/adapter/js/themeToggler.js +11 -9
  45. data/assets/theme/j1/adapter/js/themes.js +25 -23
  46. data/assets/theme/j1/adapter/js/toccer.js +13 -11
  47. data/assets/theme/j1/adapter/js/translator.js +19 -16
  48. data/assets/theme/j1/adapter/js/videojs.js +9 -7
  49. data/assets/theme/j1/adapter/js/waves.js +18 -16
  50. data/assets/theme/j1/core/js/template.js +11180 -10968
  51. data/assets/theme/j1/core/js/template.min.js +13 -18
  52. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.css +10 -4
  53. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.min.css +1 -1
  54. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.css +15 -8
  55. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.min.css +2 -1
  56. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.css +35 -14
  57. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.min.css +1 -1
  58. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.js +475 -423
  59. data/assets/theme/j1/modules/backstretch/js/backstretch.js +2 -2
  60. data/assets/theme/j1/modules/backstretch/js/backstretch.min.js +1 -1
  61. data/assets/theme/j1/modules/cookieConsent/js/cookieConsent.js +11 -11
  62. data/assets/theme/j1/modules/cookieConsent/js/cookieConsent.min.js +2 -1
  63. data/assets/theme/j1/modules/dropdowns/js/dropdowns.js +2 -2
  64. data/assets/theme/j1/modules/dropdowns/js/dropdowns.min.js +1 -1
  65. data/assets/theme/j1/modules/fab/js/fab.js +2 -2
  66. data/assets/theme/j1/modules/fab/js/fab.min.js +1 -1
  67. data/assets/theme/j1/modules/lunr/js/j1.js +1 -1
  68. data/assets/theme/j1/modules/lunr/js/j1.min.js +2 -1
  69. data/assets/theme/j1/modules/rtable/js/rtable.js +2 -2
  70. data/assets/theme/j1/modules/rtable/js/rtable.min.js +2 -1
  71. data/assets/theme/j1/modules/scroller/js/scroller.js +31 -29
  72. data/assets/theme/j1/modules/scroller/js/scroller.min.js +2 -1
  73. data/assets/theme/j1/modules/themeSwitcher/js/switcher.js +26 -26
  74. data/assets/theme/j1/modules/themeSwitcher/js/switcher.min.js +2 -1
  75. data/assets/theme/j1/modules/translator/js/translator.js +17 -17
  76. data/assets/theme/j1/modules/translator/js/translator.min.js +1 -1
  77. data/assets/theme/j1/modules/videojs/js/plugins/players/dm/dailymotion.js +10 -8
  78. data/assets/theme/j1/modules/videojs/js/plugins/players/dm/dailymotion.min.js +1 -1
  79. data/assets/theme/j1/modules/videojs/js/plugins/players/vm/vimeo.js +9 -7
  80. data/assets/theme/j1/modules/videojs/js/plugins/players/vm/vimeo.min.js +1 -1
  81. data/assets/theme/j1/modules/videojs/js/plugins/players/wt/wistia.js +13 -11
  82. data/assets/theme/j1/modules/videojs/js/plugins/players/wt/wistia.min.js +1 -1
  83. data/assets/theme/j1/modules/videojs/js/plugins/players/yt/youtube.js +10 -8
  84. data/assets/theme/j1/modules/videojs/js/plugins/players/yt/youtube.min.js +1 -1
  85. data/lib/j1/version.rb +1 -1
  86. data/lib/starter_web/README.md +5 -5
  87. data/lib/starter_web/_config.yml +1 -1
  88. data/lib/starter_web/_data/modules/amplitude_playlists.yml +124 -79
  89. data/lib/starter_web/_data/modules/defaults/amplitude.yml +5 -3
  90. data/lib/starter_web/_data/templates/feed.xml +1 -1
  91. data/lib/starter_web/_plugins/asciidoctor/videojs-block.rb +8 -0
  92. data/lib/starter_web/_plugins/asciidoctor/youtube-block.rb +7 -0
  93. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  94. data/lib/starter_web/assets/audio/album/emancipator/Alligator.mp3 +0 -0
  95. data/lib/starter_web/assets/audio/album/emancipator/DabCity.mp3 +0 -0
  96. data/lib/starter_web/assets/audio/album/emancipator/SeaToSky.mp3 +0 -0
  97. data/lib/starter_web/assets/audio/album/emancipator/TimeForSpace.mp3 +0 -0
  98. data/lib/starter_web/assets/audio/cover/emancipator/alligator.jpg +0 -0
  99. data/lib/starter_web/assets/audio/cover/emancipator/anthem.jpg +0 -0
  100. data/lib/starter_web/assets/audio/cover/emancipator/dab-city.jpg +0 -0
  101. data/lib/starter_web/assets/audio/cover/emancipator/from-dusk-to-dawn.jpg +0 -0
  102. data/lib/starter_web/assets/audio/cover/emancipator/safe-in-the-steep-cliffs.jpg +0 -0
  103. data/lib/starter_web/assets/audio/cover/emancipator/sea-to-sky.jpg +0 -0
  104. data/lib/starter_web/assets/audio/cover/emancipator/soon-it-will-be-cold-enough.jpg +0 -0
  105. data/lib/starter_web/assets/audio/cover/emancipator/tine-for-space.jpg +0 -0
  106. data/lib/starter_web/package.json +1 -1
  107. data/lib/starter_web/pages/public/tour/audio_data.adoc +11 -6
  108. metadata +19 -11
  109. data/lib/starter_web/assets/audio/cover/emancipator/from-dusk-to-dawn/anthem.jpg +0 -0
  110. data/lib/starter_web/assets/audio/cover/emancipator/from-dusk-to-dawn/from-dusk-to-dawn.jpg +0 -0
  111. data/lib/starter_web/assets/audio/cover/emancipator/from-dusk-to-dawn/safe-in-the-steep-cliffs.jpg +0 -0
  112. data/lib/starter_web/assets/audio/cover/emancipator/from-dusk-to-dawn/soon-it-will-be-cold-enough.jpg +0 -0
  113. /data/lib/starter_web/assets/audio/album/emancipator/{from-dusk-to-dawn → !info}/!sound.links.txt +0 -0
  114. /data/lib/starter_web/assets/audio/album/emancipator/{from-dusk-to-dawn/Anthem.mp3 → Anthem.mp3} +0 -0
  115. /data/lib/starter_web/assets/audio/album/emancipator/{from-dusk-to-dawn/DuskToDawn.mp3 → DuskToDawn.mp3} +0 -0
  116. /data/lib/starter_web/assets/audio/album/emancipator/{from-dusk-to-dawn/FirstSnow.mp3 → FirstSnow.mp3} +0 -0
  117. /data/lib/starter_web/assets/audio/album/emancipator/{from-dusk-to-dawn/SafeInTheSteepCliffs.mp3 → SafeInTheSteepCliffs.mp3} +0 -0
@@ -84,6 +84,8 @@ regenerate: true
84
84
  "use strict";
85
85
  j1.adapter.gallery = ((j1, window) => {
86
86
 
87
+ const isDev = (j1.env === "development" || j1.env === "dev") ? true : false;
88
+
87
89
  {% comment %} Global variables
88
90
  ------------------------------------------------------------------------------ {% endcomment %}
89
91
  var environment = '{{environment}}';
@@ -152,7 +154,7 @@ j1.adapter.gallery = ((j1, window) => {
152
154
  galleryOptions = $.extend(true, {}, galleryDefaults, gallerySettings, frontmatterOptions);
153
155
 
154
156
  // load HTML portion for all grids
155
- console.debug('loading HTML portion for all galleries configured');
157
+ isDev && console.debug('loading HTML portion for all galleries configured');
156
158
  _this.loadGalleryHTML(galleryOptions, galleryOptions.galleries);
157
159
 
158
160
  // -----------------------------------------------------------------------
@@ -168,17 +170,17 @@ j1.adapter.gallery = ((j1, window) => {
168
170
 
169
171
  // initialize state flag
170
172
  _this.setState('started');
171
- logger.debug('\n' + 'state: ' + _this.getState());
172
- logger.info('\n' + 'module is being initialized');
173
+ logger.debug('state: ' + _this.getState());
174
+ logger.info('module is being initialized');
173
175
 
174
176
  _this.initialize(galleryOptions);
175
177
  _this.setState('finished');
176
178
 
177
- logger.debug('\n' + 'state: ' + _this.getState());
178
- logger.info('\n' + 'module initialized successfully');
179
+ logger.debug('state: ' + _this.getState());
180
+ logger.info('module initialized successfully');
179
181
 
180
182
  endTimeModule = Date.now();
181
- logger.info('\n' + 'module initializing time: ' + (endTimeModule-startTimeModule) + 'ms');
183
+ logger.info('module initializing time: ' + (endTimeModule-startTimeModule) + 'ms');
182
184
 
183
185
  clearInterval(dependency_met_page_ready);
184
186
  } // END 'finished' && 'pageVisible'
@@ -196,13 +198,13 @@ j1.adapter.gallery = ((j1, window) => {
196
198
  logger = log4javascript.getLogger('j1.adapter.gallery');
197
199
 
198
200
  _this.setState('running');
199
- logger.debug('\n' + 'state: ' + _this.getState());
201
+ logger.debug('state: ' + _this.getState());
200
202
 
201
203
  {% for gallery in gallery_options.galleries %}
202
204
 
203
205
  {% if gallery.enabled %}
204
206
  {% assign gallery_id = gallery.id %}
205
- logger.info('\n' + 'found gallery on id: ' + '{{gallery_id}}');
207
+ logger.info('found gallery on id: ' + '{{gallery_id}}');
206
208
 
207
209
  // create dynamic loader variable to setup the grid on id {{gallery_id}}
208
210
  dependency = 'dependencies_met_html_loaded_{{gallery_id}}';
@@ -216,7 +218,7 @@ j1.adapter.gallery = ((j1, window) => {
216
218
  if (xhrLoadState === 'success') {
217
219
  var $grid_{{gallery_id}} = $('#{{gallery_id}}'); // used for later access
218
220
 
219
- logger.debug('\n' + 'dyn_loader, initialize gallery on id: ' + '{{gallery_id}}');
221
+ logger.debug('dyn_loader, initialize gallery on id: ' + '{{gallery_id}}');
220
222
 
221
223
  j1.jg.callback.{{gallery_id}} = 'waiting';
222
224
 
@@ -237,8 +239,8 @@ j1.adapter.gallery = ((j1, window) => {
237
239
 
238
240
  // setup the lightbox
239
241
  //
240
- logger.debug('\n' + 'dyn_loader, callback "jg.complete" entered on id: ' + '{{gallery_id}}');
241
- logger.debug('\n' + 'dyn_loader, initialize lightGallery on id: ' + '{{gallery_id}}');
242
+ logger.debug('dyn_loader, callback "jg.complete" entered on id: ' + '{{gallery_id}}');
243
+ logger.debug('dyn_loader, initialize lightGallery on id: ' + '{{gallery_id}}');
242
244
 
243
245
  var lg = document.getElementById("{{gallery_id}}");
244
246
  lightGallery(lg, {
@@ -325,8 +327,8 @@ j1.adapter.gallery = ((j1, window) => {
325
327
  //
326
328
  setTimeout(() => {
327
329
  if (j1.jg.callback.{{gallery_id}} == 'waiting') {
328
- logger.debug('\n' + 'dyn_loader, callback "jg.callback": ' + j1.jg.callback.{{gallery_id}})
329
- logger.debug('\n' + 'dyn_loader, initialize lightGallery on id: ' + '{{gallery_id}}');
330
+ logger.debug('dyn_loader, callback "jg.callback": ' + j1.jg.callback.{{gallery_id}})
331
+ logger.debug('dyn_loader, initialize lightGallery on id: ' + '{{gallery_id}}');
330
332
 
331
333
  var lg = document.getElementById("{{gallery_id}}");
332
334
  lightGallery(lg, {
@@ -416,25 +418,25 @@ j1.adapter.gallery = ((j1, window) => {
416
418
  var xhr_data_path = options.xhr_data_path + '/index.html';
417
419
  var xhr_container_id;
418
420
 
419
- console.debug('number of galleries found: ' + active_grids);
421
+ isDev && console.debug('number of galleries found: ' + active_grids);
420
422
 
421
423
  _this.setState('load_data');
422
424
  Object.keys(gallery).forEach((key) => {
423
425
  if (gallery[key].enabled) {
424
426
  xhr_container_id = gallery[key].id + '_parent';
425
427
 
426
- console.debug('load HTML portion on gallery id: ' + gallery[key].id);
428
+ isDev && console.debug('load HTML portion on gallery id: ' + gallery[key].id);
427
429
  j1.loadHTML({
428
430
  xhr_container_id: xhr_container_id,
429
431
  xhr_data_path: xhr_data_path,
430
432
  xhr_data_element: gallery[key].id
431
433
  });
432
434
  } else {
433
- console.debug('gallery found disabled on id: ' + gallery[key].id);
435
+ isDev && console.debug('gallery found disabled on id: ' + gallery[key].id);
434
436
  active_grids--;
435
437
  }
436
438
  });
437
- console.debug('galleries loaded in page enabled|all: ' + active_grids + '|' + numGalleries);
439
+ isDev && console.debug('galleries loaded in page enabled|all: ' + active_grids + '|' + numGalleries);
438
440
  _this.setState('data_loaded');
439
441
  }, // END loadGalleryHTML
440
442
 
@@ -445,7 +447,7 @@ j1.adapter.gallery = ((j1, window) => {
445
447
  messageHandler: (sender, message) => {
446
448
  var json_message = JSON.stringify(message, undefined, 2);
447
449
 
448
- logText = '\n' + 'received message from ' + sender + ': ' + json_message;
450
+ logText = 'received message from ' + sender + ': ' + json_message;
449
451
  logger.debug(logText);
450
452
 
451
453
  // -----------------------------------------------------------------------
@@ -457,7 +459,7 @@ j1.adapter.gallery = ((j1, window) => {
457
459
  // place handling of command|action here
458
460
  //
459
461
 
460
- logger.info('\n' + message.text);
462
+ logger.info(message.text);
461
463
  }
462
464
 
463
465
  //
@@ -89,6 +89,8 @@ regenerate: true
89
89
  "use strict";
90
90
  j1.adapter.gemini = ((j1, window) => {
91
91
 
92
+ const isDev = (j1.env === "development" || j1.env === "dev") ? true : false;
93
+
92
94
  {% comment %} Set global variables
93
95
  ------------------------------------------------------------------------------ {% endcomment %}
94
96
  var environment = '{{environment}}';
@@ -186,7 +188,7 @@ j1.adapter.gemini = ((j1, window) => {
186
188
  var dependencies_met_span_ready = setInterval (() => {
187
189
  var spanElementReady = (($(spanElement).length) !== 0) ? true : false;
188
190
  if (spanElementReady) {
189
- logger.debug('\n' + 'add eventListener to: ' + span);
191
+ logger.debug('add eventListener to: ' + span);
190
192
  spanElement.addEventListener('click', spanElementEventListener);
191
193
 
192
194
  clearInterval(dependencies_met_span_ready);
@@ -230,7 +232,7 @@ j1.adapter.gemini = ((j1, window) => {
230
232
  if ($slimSelect !== undefined || $slimSelect !== null) {
231
233
  $slimSelect.setData(newData);
232
234
  } else {
233
- logger.error('\n' + 'FATAL: slimSelect NOT available');
235
+ logger.error('FATAL: slimSelect NOT available');
234
236
  } // END create|set slimSelect data elements
235
237
  }
236
238
 
@@ -260,7 +262,7 @@ j1.adapter.gemini = ((j1, window) => {
260
262
 
261
263
  // update the prompt history
262
264
  if (promptHistoryFromCookie) {
263
- logger.debug('\n' + 'save prompt history to cookie');
265
+ logger.debug('save prompt history to cookie');
264
266
 
265
267
  if (newHistory.length > 0) {
266
268
 
@@ -276,18 +278,18 @@ j1.adapter.gemini = ((j1, window) => {
276
278
  } else {
277
279
  j1.removeCookie({ name: cookie_names.chat_prompt });
278
280
 
279
- logger.info('\n' + 'spanElementEventListener, hide prompt history on last element');
281
+ logger.info('spanElementEventListener, hide prompt history on last element');
280
282
  $("#prompt_history_container").hide();
281
283
  $("#clear").hide()
282
284
  } // END if length
283
285
  } // END if promptHistoryFromCookie
284
286
  }
285
287
 
286
- logger.info('\n' + 'spanElementEventListener, option deleted:\n' + optionText);
288
+ logger.info('spanElementEventListener, option deleted:\n' + optionText);
287
289
 
288
290
  // failsafe
289
291
  if ($slimSelect === undefined || $slimSelect === null) {
290
- logger.error('\n' + 'FATAL: slimSelect NOT available');
292
+ logger.error('FATAL: slimSelect NOT available');
291
293
  } else {
292
294
  // close currently required to re-add history prompt events on next beforeOpen
293
295
  $slimSelect.close();
@@ -300,7 +302,7 @@ j1.adapter.gemini = ((j1, window) => {
300
302
  latitude = position.coords.latitude;
301
303
  longitude = position.coords.longitude;
302
304
 
303
- logger.debug('\n' + 'detected geocode (lat:long): ' + latitude + ':' + longitude);
305
+ logger.debug('detected geocode (lat:long): ' + latitude + ':' + longitude);
304
306
  } // END function showPosition
305
307
 
306
308
  function locateCountry(position) {
@@ -314,10 +316,10 @@ j1.adapter.gemini = ((j1, window) => {
314
316
  country = data.address.country;
315
317
  city = data.address.city;
316
318
  $("#modal_error").html(modal_error_text + '<br>' + '<b>' + country + '</b>');
317
- logger.warn('\n' + 'location is not supported: ' + country + ':' + city);
319
+ logger.warn('location is not supported: ' + country + ':' + city);
318
320
  })
319
321
  .catch((error) => {
320
- logger.error('\n' + 'error detect location: ' + error);
322
+ logger.error('error detect location: ' + error);
321
323
  });
322
324
  } // END function locateCountry
323
325
 
@@ -331,11 +333,11 @@ j1.adapter.gemini = ((j1, window) => {
331
333
  } // END function success
332
334
 
333
335
  function error() {
334
- logger.warn('\n' + 'Unable to retrieve the location');
336
+ logger.warn('Unable to retrieve the location');
335
337
  } // END function error
336
338
 
337
339
  if (!navigator.geolocation) {
338
- logger.warn('\n' + 'Geolocation API is not supported by the browser');
340
+ logger.warn('Geolocation API is not supported by the browser');
339
341
  } else {
340
342
  navigator.geolocation.getCurrentPosition(success, error);
341
343
  }
@@ -355,17 +357,17 @@ j1.adapter.gemini = ((j1, window) => {
355
357
  if (prompt.length === 0) {
356
358
  // use default prompt
357
359
  prompt = defaultPrompt.replace(/\s+$/g, '');
358
- logger.debug('\n' + 'use default prompt: ' + prompt);
360
+ logger.debug('use default prompt: ' + prompt);
359
361
  document.getElementById('prompt').value = prompt;
360
362
  }
361
363
 
362
364
  // run a request
363
365
  startTime = Date.now();
364
366
  retryCount = 1;
365
- logger.info('\n' + 'processing request: started');
367
+ logger.info('processing request: started');
366
368
  while (retryCount <= maxRetries) {
367
369
  try {
368
- logger.debug('\n' + 'processing request: #' + retryCount + '|' + maxRetries);
370
+ logger.debug('processing request: #' + retryCount + '|' + maxRetries);
369
371
  result = await model.generateContent(prompt);
370
372
 
371
373
  // exit the loop on success
@@ -380,22 +382,22 @@ j1.adapter.gemini = ((j1, window) => {
380
382
  $("#modal_error").html(modal_error_text);
381
383
  } else {
382
384
  $("#modal_error").html(modal_error_text);
383
- logger.warn('\n' + 'location not supported');
385
+ logger.warn('location not supported');
384
386
  }
385
387
  } else if (error.includes('50')) {
386
388
  genAIErrorType = 500;
387
389
  modal_error_text = httpError500;
388
390
  $("#modal_error").html(modal_error_text);
389
- logger.warn('\n' + 'service not available');
391
+ logger.warn('service not available');
390
392
  }
391
393
  genAIError = true;
392
394
  } finally {
393
395
  if (!genAIError) {
394
396
  try {
395
- logger.debug('\n' + 'collecting results ...');
397
+ logger.debug('collecting results ...');
396
398
  response = await result.response;
397
399
  } catch (e) {
398
- logger.warn('\n' + e);
400
+ logger.warn(e);
399
401
  } finally {
400
402
  $("#spinner").hide();
401
403
 
@@ -422,7 +424,7 @@ j1.adapter.gemini = ((j1, window) => {
422
424
  }
423
425
  });
424
426
  if (ratingCategory !== undefined && ratingCategory !== '' && ratingProbability !== undefined && ratingProbability !== '') {
425
- logger.warn('\n' + 'Security issue detected, reason: ' + ratingCategory + ' = ' + ratingProbability);
427
+ logger.warn('Security issue detected, reason: ' + ratingCategory + ' = ' + ratingProbability);
426
428
  }
427
429
  var ratingCategoryText = ratingCategory.replace("HARM_CATEGORY_", '').toLowerCase();
428
430
  var ratingProbabilityText = ratingProbability.toLowerCase();
@@ -470,7 +472,7 @@ j1.adapter.gemini = ((j1, window) => {
470
472
  } // END for
471
473
 
472
474
  if (safetyCategory !== undefined) {
473
- logger.debug('\n' + safetyCategory + ': ' + safetyRating);
475
+ logger.debug(safetyCategory + ': ' + safetyRating);
474
476
  }
475
477
  } // END responseFinishReason STOP
476
478
 
@@ -498,7 +500,7 @@ j1.adapter.gemini = ((j1, window) => {
498
500
  if (responseText.length > 0) {
499
501
  // Set|Show UI elements
500
502
  if (responseText.length < geminiOptions.api_options.responseLengthMin) {
501
- logger.warn('\n' + 'Response generated too short: <' + geminiOptions.api_options.responseLengthMin + ' characters');
503
+ logger.warn('Response generated too short: <' + geminiOptions.api_options.responseLengthMin + ' characters');
502
504
  document.getElementById('md_result').innerHTML = 'Response generated too short (less than ' + geminiOptions.api_options.responseLengthMin + ' characters). Please re-run the generation for better results';
503
505
  } else {
504
506
  document.getElementById('md_result').innerHTML = marked.parse(responseText);
@@ -509,7 +511,7 @@ j1.adapter.gemini = ((j1, window) => {
509
511
  } // END finally
510
512
  } else {
511
513
  if (retryCount === 3) {
512
- logger.debug('\n' + 'requests failed after max retries: ' + maxRetries);
514
+ logger.debug('requests failed after max retries: ' + maxRetries);
513
515
 
514
516
  $("#spinner").hide();
515
517
  if (geminiOptions.detectGeoLocation) {
@@ -526,8 +528,8 @@ j1.adapter.gemini = ((j1, window) => {
526
528
  } // END while (retry)
527
529
 
528
530
  endTime = Date.now();
529
- logger.debug('\n' + 'request execution time: ' + (endTime-startTime) + 'ms');
530
- logger.info('\n' + 'processing request: finished');
531
+ logger.debug('request execution time: ' + (endTime-startTime) + 'ms');
532
+ logger.info('processing request: finished');
531
533
 
532
534
  } // END async function runner()
533
535
 
@@ -586,12 +588,12 @@ j1.adapter.gemini = ((j1, window) => {
586
588
  startTimeModule = Date.now();
587
589
 
588
590
  _this.setState('started');
589
- logger.debug('\n' + 'set module state to: ' + _this.getState());
590
- logger.info('\n' + 'initializing module: started');
591
+ logger.debug('set module state to: ' + _this.getState());
592
+ logger.info('initializing module: started');
591
593
 
592
594
  if (!validApiKey) {
593
- logger.warn('\n' + 'Invalid API key detected: ' + apiKey);
594
- logger.debug('\n' + 'disable|hide all UI buttons');
595
+ logger.warn('Invalid API key detected: ' + apiKey);
596
+ logger.debug('disable|hide all UI buttons');
595
597
  // disable all UI buttons
596
598
  $("#send").hide();
597
599
  $("#reset").hide();
@@ -607,7 +609,7 @@ j1.adapter.gemini = ((j1, window) => {
607
609
  textarea = document.getElementById(geminiOptions.prompt_id);
608
610
  textarea.value = '';
609
611
 
610
- logger.debug('\n' + 'initializing select data');
612
+ logger.debug('initializing select data');
611
613
 
612
614
  // initialize history array from cookie
613
615
  if (promptHistoryEnabled && promptHistoryFromCookie) {
@@ -618,7 +620,7 @@ j1.adapter.gemini = ((j1, window) => {
618
620
 
619
621
  // failsafe
620
622
  if ($slimSelect === undefined || $slimSelect === null) {
621
- logger.error('\n' + 'FATAL: slimSelect NOT available');
623
+ logger.error('FATAL: slimSelect NOT available');
622
624
  }
623
625
  // END get slimSelect object
624
626
 
@@ -628,7 +630,7 @@ j1.adapter.gemini = ((j1, window) => {
628
630
  // allow|reject history updates if promptHistoryMax reached
629
631
  allowPromptHistoryUpdatesOnMax = geminiOptions.allow_prompt_history_updates_on_max;
630
632
 
631
- logger.debug('\n' + 'read prompt history from cookie');
633
+ logger.debug('read prompt history from cookie');
632
634
  var data = [];
633
635
  var option = {};
634
636
  chat_prompt = j1.existsCookie(cookie_names.chat_prompt)
@@ -645,7 +647,7 @@ j1.adapter.gemini = ((j1, window) => {
645
647
 
646
648
  textHistory = uniqueArray;
647
649
  if (textHistoryLenght > textHistory.length) {
648
- logger.debug('\n' + 'removed duplicates from history array: ' + (textHistoryLenght - textHistory.length) + ' element|s');
650
+ logger.debug('removed duplicates from history array: ' + (textHistoryLenght - textHistory.length) + ' element|s');
649
651
  }
650
652
  } // END if !allowHistoryDupicates
651
653
 
@@ -671,7 +673,7 @@ j1.adapter.gemini = ((j1, window) => {
671
673
  if ($slimSelect !== undefined || $slimSelect !== null) {
672
674
  $slimSelect.setData(data);
673
675
  } else {
674
- logger.error('\n' + 'FATAL: slimSelect NOT available');
676
+ logger.error('FATAL: slimSelect NOT available');
675
677
  } // END create|set slimSelect data elements
676
678
 
677
679
  // display history container
@@ -698,11 +700,11 @@ j1.adapter.gemini = ((j1, window) => {
698
700
  _this.setupUIButtonEventHandlers()
699
701
 
700
702
  _this.setState('finished');
701
- logger.debug('\n' + 'state: ' + _this.getState());
702
- logger.info('\n' + 'initializing module: finished');
703
+ logger.debug('state: ' + _this.getState());
704
+ logger.info('initializing module: finished');
703
705
 
704
706
  endTimeModule = Date.now();
705
- logger.info('\n' + 'module initializing time: ' + (endTimeModule-startTimeModule) + 'ms');
707
+ logger.info('module initializing time: ' + (endTimeModule-startTimeModule) + 'ms');
706
708
 
707
709
  clearInterval(dependencies_met_page_ready);
708
710
  } // END slimSelectFinished && uiLoaded && modulesLoaded
@@ -768,13 +770,13 @@ j1.adapter.gemini = ((j1, window) => {
768
770
  }
769
771
  ];
770
772
 
771
- logger.debug('\n' + 'Importing Gemini module: successful');
773
+ logger.debug('Importing Gemini module: successful');
772
774
  modulesLoaded = true;
773
775
  })
774
776
  .catch((error) => {
775
777
  logger = log4javascript.getLogger('j1.adapter.gemini');
776
778
  // An error occurred during module import
777
- logger.warn('\n' + 'Importing Gemini module failed: ' + error);
779
+ logger.warn('Importing Gemini module failed: ' + error);
778
780
  });
779
781
  }, // END loadModules
780
782
 
@@ -796,7 +798,7 @@ j1.adapter.gemini = ((j1, window) => {
796
798
  var uiLoaded = (j1.xhrDOMState['#gemini_ui'] === 'success') ? true : false;
797
799
 
798
800
  if (uiLoaded) {
799
- logger.debug('\n' + 'Loading UI: successful');
801
+ logger.debug('Loading UI: successful');
800
802
 
801
803
  clearInterval(dependencies_met_data_loaded);
802
804
  } // END if uiLoaded
@@ -821,7 +823,7 @@ j1.adapter.gemini = ((j1, window) => {
821
823
  const slimValues = $select.getData();
822
824
  eventListenersReady = false;
823
825
 
824
- logger.debug('\n' + 'slimSelect.beforeOpen, processing: started');
826
+ logger.debug('slimSelect.beforeOpen, processing: started');
825
827
 
826
828
  // re-read current history from cookie for initial values
827
829
  if (promptHistoryFromCookie) {
@@ -854,14 +856,14 @@ j1.adapter.gemini = ((j1, window) => {
854
856
  if ($slimSelect !== undefined || $slimSelect !== null) {
855
857
  $slimSelect.setData(data);
856
858
  } else {
857
- logger.error('\n' + 'FATAL: slimSelect NOT available');
859
+ logger.error('FATAL: slimSelect NOT available');
858
860
  } // END create|set slimSelect data elements
859
861
 
860
862
  } // END re-read current history from cookie
861
863
 
862
864
  // set prompt history EventListeners (for option deletion)
863
865
  if (slimValues.length) {
864
- logger.debug('\n' + 'slimSelect.beforeOpen, number of eventListeners to process: #' + slimValues.length);
866
+ logger.debug('slimSelect.beforeOpen, number of eventListeners to process: #' + slimValues.length);
865
867
  addPromptHistoryEventListeners(slimValues);
866
868
  }
867
869
 
@@ -877,7 +879,7 @@ j1.adapter.gemini = ((j1, window) => {
877
879
  if (spanElementReady) {
878
880
  if (listenerIndex === slimValues.length) {
879
881
  eventListenersReady = true;
880
- logger.debug('\n' + 'slimSelect.beforeOpen, all eventListeners ready');
882
+ logger.debug('slimSelect.beforeOpen, all eventListeners ready');
881
883
  } // END if listenerIndex
882
884
  } // END if spanElementReady
883
885
  if (!eventListenersReady) {
@@ -890,7 +892,7 @@ j1.adapter.gemini = ((j1, window) => {
890
892
 
891
893
  var dependencies_beforeOpen_met_ready = setInterval (() => {
892
894
  if (eventListenersReady) {
893
- logger.debug('\n' + 'slimSelect.beforeOpen, processing: finished');
895
+ logger.debug('slimSelect.beforeOpen, processing: finished');
894
896
 
895
897
  clearInterval(dependencies_beforeOpen_met_ready);
896
898
  }
@@ -905,19 +907,19 @@ j1.adapter.gemini = ((j1, window) => {
905
907
  if (slimValue.length) {
906
908
  prompt = slimValue[0];
907
909
  document.getElementById('prompt').value = prompt;
908
- logger.debug('\n' + 'slimSelect.afterClose, selection from history: ' + prompt);
910
+ logger.debug('slimSelect.afterClose, selection from history: ' + prompt);
909
911
  } else {
910
- logger.debug('\n' + 'slimSelect.afterClose, selection from history: empty');
912
+ logger.debug('slimSelect.afterClose, selection from history: empty');
911
913
  document.getElementById('prompt').value = '';
912
914
  }
913
915
 
914
916
  // failsafe
915
917
  if ($slimSelect === undefined || $slimSelect === null) {
916
- logger.error('\n' + 'FATAL: slimSelect NOT available');
918
+ logger.error('FATAL: slimSelect NOT available');
917
919
  } else {
918
920
  // failsafe
919
921
  if ($slimSelect === undefined || $slimSelect === null) {
920
- logger.error('\n' + 'FATAL: slimSelect NOT available');
922
+ logger.error('FATAL: slimSelect NOT available');
921
923
  } else {
922
924
  // remove selection from select
923
925
  $slimSelect.setSelected('', false);
@@ -958,7 +960,7 @@ j1.adapter.gemini = ((j1, window) => {
958
960
  if (textarea.value.length === 0) {
959
961
  // use default prompt
960
962
  prompt = defaultPrompt.replace(/\s+$/g, '');
961
- logger.debug('\n' + 'sendButton, use default prompt: ' + prompt);
963
+ logger.debug('sendButton, use default prompt: ' + prompt);
962
964
  } else {
963
965
  prompt = textarea.value.replace(/\s+$/g, '');
964
966
  }
@@ -967,7 +969,7 @@ j1.adapter.gemini = ((j1, window) => {
967
969
  index = textHistory.indexOf(prompt);
968
970
  itemExists = (index !== -1) ? true : false;
969
971
  if (itemExists) {
970
- logText = '\n' + `sendButton, prompt: "${prompt}"\n` + `already exists in history at index: ${index}`;
972
+ logText = `sendButton, prompt: "${prompt}"\n` + `already exists in history at index: ${index}`;
971
973
  logger.debug(logText);
972
974
  }
973
975
 
@@ -981,13 +983,13 @@ j1.adapter.gemini = ((j1, window) => {
981
983
  } else if (textarea.value.length === 0) {
982
984
  // use default prompt
983
985
  newItem = defaultPrompt.replace(/\s+$/g, '');
984
- logger.debug('\n' + 'sendButton, use default prompt:\n' + newItem);
986
+ logger.debug('sendButton, use default prompt:\n' + newItem);
985
987
  }
986
988
 
987
- logger.debug('\n' + 'sendButton, update item in history:\n' + textHistory[0]);
989
+ logger.debug('sendButton, update item in history:\n' + textHistory[0]);
988
990
  // replace FIRST history element by NEW item
989
991
  textHistory[0] = newItem;
990
- logger.debug('\n' + 'sendButton, add new item to history:\n' + textHistory[0]);
992
+ logger.debug('sendButton, add new item to history:\n' + textHistory[0]);
991
993
 
992
994
  historySet = true;
993
995
  } // END update history on promptHistoryMax
@@ -1000,9 +1002,9 @@ j1.adapter.gemini = ((j1, window) => {
1000
1002
  } else if (textarea.value.length === 0) {
1001
1003
  // use default prompt
1002
1004
  newItem = defaultPrompt.replace(/\s+$/g, '');
1003
- logger.debug('\n' + 'sendButton, use default prompt:\n' + newItem);
1005
+ logger.debug('sendButton, use default prompt:\n' + newItem);
1004
1006
  }
1005
- logger.debug('\n' + 'sendButton, add new item to history:\n' + newItem);
1007
+ logger.debug('sendButton, add new item to history:\n' + newItem);
1006
1008
  textHistory.push(newItem);
1007
1009
 
1008
1010
  historySet = true;
@@ -1017,7 +1019,7 @@ j1.adapter.gemini = ((j1, window) => {
1017
1019
  textHistory[p] = prompt;
1018
1020
  p++;
1019
1021
  }); // END forEach
1020
- logger.debug('\n' + 'sendButton, cleaned history for trailing whitespaces');
1022
+ logger.debug('sendButton, cleaned history for trailing whitespaces');
1021
1023
  } // END failsafe, cleanup history
1022
1024
 
1023
1025
  // remove duplicates from history
@@ -1027,7 +1029,7 @@ j1.adapter.gemini = ((j1, window) => {
1027
1029
 
1028
1030
  textHistory = uniqueArray;
1029
1031
  if (textHistoryLenght > textHistory.length) {
1030
- logger.debug('\n' + 'sendButton, removed duplicates from history array: ' + (textHistoryLenght - textHistory.length) + ' element|s');
1032
+ logger.debug('sendButton, removed duplicates from history array: ' + (textHistoryLenght - textHistory.length) + ' element|s');
1031
1033
  }
1032
1034
  } // END remove duplicates from history
1033
1035
 
@@ -1054,7 +1056,7 @@ j1.adapter.gemini = ((j1, window) => {
1054
1056
  if ($slimSelect !== undefined || $slimSelect !== null) {
1055
1057
  $slimSelect.setData(data);
1056
1058
  } else {
1057
- logger.error('\n' + 'FATAL: slimSelect NOT available');
1059
+ logger.error('FATAL: slimSelect NOT available');
1058
1060
  } // END create|set slimSelect data elements
1059
1061
 
1060
1062
  // display history container
@@ -1065,7 +1067,7 @@ j1.adapter.gemini = ((j1, window) => {
1065
1067
 
1066
1068
  // write current history to cookie
1067
1069
  if (promptHistoryFromCookie) {
1068
- logger.debug('\n' + 'sendButton, save prompt history to cookie');
1070
+ logger.debug('sendButton, save prompt history to cookie');
1069
1071
 
1070
1072
  // remove BEFORE write
1071
1073
  j1.removeCookie({ name: cookie_names.chat_prompt });
@@ -1093,7 +1095,7 @@ j1.adapter.gemini = ((j1, window) => {
1093
1095
  event.preventDefault();
1094
1096
  event.stopPropagation();
1095
1097
 
1096
- logger.debug('\n' + 'resetButton, clear input prompt|response');
1098
+ logger.debug('resetButton, clear input prompt|response');
1097
1099
  document.getElementById("prompt").value = '';
1098
1100
  document.getElementById("response").value = '';
1099
1101
  $("#spinner").hide();
@@ -1123,7 +1125,7 @@ j1.adapter.gemini = ((j1, window) => {
1123
1125
 
1124
1126
  // clear history
1125
1127
  if (!logStartOnce) {
1126
- logger.warn('\n' + 'resetButton, perform clearHistory');
1128
+ logger.warn('resetButton, perform clearHistory');
1127
1129
  logStartOnce = true;
1128
1130
  }
1129
1131
 
@@ -1141,7 +1143,7 @@ j1.adapter.gemini = ((j1, window) => {
1141
1143
  event.preventDefault();
1142
1144
  event.stopPropagation();
1143
1145
 
1144
- logger.debug('\n' + 'resetButton, skipped clearHistory');
1146
+ logger.debug('resetButton, skipped clearHistory');
1145
1147
  }); // END click dismissClearHistoryButton
1146
1148
 
1147
1149
  }); // END click clearButton
@@ -1154,7 +1156,7 @@ j1.adapter.gemini = ((j1, window) => {
1154
1156
  messageHandler: (sender, message) => {
1155
1157
  var json_message = JSON.stringify(message, undefined, 2);
1156
1158
 
1157
- logText = '\n' + 'received message from ' + sender + ': ' + json_message;
1159
+ logText = 'received message from ' + sender + ': ' + json_message;
1158
1160
  logger.debug(logText);
1159
1161
 
1160
1162
  // -----------------------------------------------------------------------
@@ -1166,7 +1168,7 @@ j1.adapter.gemini = ((j1, window) => {
1166
1168
  // place handling of command|action here
1167
1169
  //
1168
1170
 
1169
- logger.info('\n' + message.text);
1171
+ logger.info(message.text);
1170
1172
  }
1171
1173
 
1172
1174
  //