j1-template 2024.3.19 → 2024.3.20

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 (87) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/amplitude_app.html +174 -150
  3. data/assets/data/swiper_app.2.html +757 -0
  4. data/assets/data/swiper_app.4.html +769 -0
  5. data/assets/data/swiper_app.html +171 -27
  6. data/assets/theme/j1/adapter/js/amplitude.js +817 -165
  7. data/assets/theme/j1/adapter/js/swiper.js +63 -15
  8. data/assets/theme/j1/core/css/themes/bootstrap/bootstrap.css +111 -101
  9. data/assets/theme/j1/core/css/themes/bootstrap/bootstrap.min.css +1 -1
  10. data/assets/theme/j1/core/css/themes/unodark/bootstrap.css +111 -101
  11. data/assets/theme/j1/core/css/themes/unodark/bootstrap.min.css +1 -1
  12. data/assets/theme/j1/core/css/themes/unolight/bootstrap.css +111 -101
  13. data/assets/theme/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  14. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.css +140 -219
  15. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.min.css +1 -1
  16. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.css +117 -23
  17. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/compact.min.css +1 -1
  18. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.css +323 -493
  19. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.min.css +1 -2
  20. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/mini.css +20 -73
  21. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/mini.min.css +1 -1
  22. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.js +2062 -843
  23. data/assets/theme/j1/modules/amplitudejs/scss/theme/uno/dark/player/large.scss +439 -264
  24. data/assets/theme/j1/modules/swiperjs/css/modules/layoutBase.css +16 -0
  25. data/assets/theme/j1/modules/swiperjs/css/modules/layoutBase.min.css +16 -0
  26. data/assets/theme/j1/modules/swiperjs/css/modules/layoutExpanding.css +24 -24
  27. data/assets/theme/j1/modules/swiperjs/css/modules/layoutExpanding.min.css +1 -235
  28. data/assets/theme/j1/modules/swiperjs/css/modules/layoutNeighbor.min.css +2 -2
  29. data/assets/theme/j1/modules/swiperjs/css/modules/layoutParallax.css +16 -0
  30. data/assets/theme/j1/modules/swiperjs/css/modules/layoutParallax.min.css +16 -0
  31. data/assets/theme/j1/modules/swiperjs/css/modules/layoutStacked.css +6 -7
  32. data/assets/theme/j1/modules/swiperjs/css/modules/layoutStacked.min.css +1 -82
  33. data/assets/theme/j1/modules/swiperjs/css/modules/layoutThumbs.min.css +2 -29
  34. data/assets/theme/j1/modules/swiperjs/css/theme/uno.css +29 -12
  35. data/assets/theme/j1/modules/swiperjs/css/theme/uno.min.css +1 -1
  36. data/assets/theme/j1/modules/swiperjs/js/modules/layoutBase.js +25 -0
  37. data/assets/theme/j1/modules/swiperjs/js/modules/layoutBase.min.js +25 -0
  38. data/assets/theme/j1/modules/swiperjs/js/modules/layoutExpanding.js +1 -5
  39. data/assets/theme/j1/modules/swiperjs/js/modules/layoutExpanding.min.js +1 -5
  40. data/assets/theme/j1/modules/swiperjs/js/modules/layoutNeighbor.js +12 -14
  41. data/assets/theme/j1/modules/swiperjs/js/modules/layoutNeighbor.min.js +1 -17
  42. data/assets/theme/j1/modules/swiperjs/js/modules/layoutPanorama.js +0 -1
  43. data/assets/theme/j1/modules/swiperjs/js/modules/layoutParallax.js +25 -0
  44. data/assets/theme/j1/modules/swiperjs/js/modules/layoutParallax.min.js +25 -0
  45. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.0.js +114 -0
  46. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.1.js +93 -0
  47. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.js +42 -13
  48. data/assets/theme/j1/modules/swiperjs/js/modules/layoutStacked.min.js +17 -0
  49. data/assets/theme/j1/modules/swiperjs/js/modules/layoutThumbs.js +76 -25
  50. data/assets/theme/j1/modules/swiperjs/js/modules/layoutThumbs.min.js +1 -17
  51. data/assets/theme/j1/modules/swiperjs/js/swiper-bundle.js +9152 -9131
  52. data/assets/theme/j1/modules/swiperjs/js/swiper-bundle.min.js +1 -1
  53. data/lib/j1/version.rb +1 -1
  54. data/lib/starter_web/README.md +5 -5
  55. data/lib/starter_web/_config.yml +1 -1
  56. data/lib/starter_web/_data/modules/amplitude_app.yml +206 -23
  57. data/lib/starter_web/_data/modules/amplitude_playlists.yml +1122 -19
  58. data/lib/starter_web/_data/modules/defaults/{amplitude_app.yml → amplitude.yml} +70 -26
  59. data/lib/starter_web/_data/modules/swiper_app.yml +289 -155
  60. data/lib/starter_web/_data/modules/swiper_playlists.yml +51 -1
  61. data/lib/starter_web/_data/resources.yml +6 -2
  62. data/lib/starter_web/_data/templates/feed.xml +1 -1
  63. data/lib/starter_web/_plugins/filter/filters.rb +1 -11
  64. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  65. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-1.png +0 -0
  66. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-2.png +0 -0
  67. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-3.png +0 -0
  68. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-4.png +0 -0
  69. data/lib/starter_web/assets/image/module/swiper/avatar/avatar-5.png +0 -0
  70. data/lib/starter_web/package.json +1 -1
  71. data/lib/starter_web/pages/public/tools/previewer/preview_amplitudejs.adoc +82 -34
  72. data/lib/starter_web/pages/public/tools/tester/app_tester_amplitudejs_yt.adoc +62 -15
  73. data/lib/starter_web/pages/public/tools/tester/app_tester_swiperjs.adoc +121 -36
  74. data/lib/starter_web/pages/public/tour/play_audio.adoc +60 -70
  75. data/lib/starter_web/pages/public/tour/play_video.adoc +1 -1
  76. metadata +29 -14
  77. data/assets/theme/j1/modules/swiperjs/js/highlightJS.js +0 -13376
  78. data/assets/theme/j1/modules/swiperjs/js/highlightJS.min.js +0 -1246
  79. data/assets/theme/j1/modules/swiperjs/js/modules/!readme +0 -3
  80. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/!info/!readme +0 -0
  81. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/!readme +0 -0
  82. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/1.jpg +0 -0
  83. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/2.jpg +0 -0
  84. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/3.jpg +0 -0
  85. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/4.jpg +0 -0
  86. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/5.jpg +0 -0
  87. /data/lib/starter_web/assets/image/module/swiper/extended/{poster → stacked}/image/6.jpg +0 -0
@@ -25,6 +25,15 @@
25
25
  --swiper-wrapper-transition-timing-function: initial;
26
26
  }
27
27
 
28
+ /* Navigation styles
29
+ -------------------------------------------------------------------- */
30
+ :root {
31
+ --swiper-navigation-color: var(--bs-gray-100);
32
+ --swiper-navigation-size: 44px;
33
+ --swiper-navigation-top-offset: 50%;
34
+ --swiper-navigation-sides-offset: 20px;
35
+ }
36
+
28
37
  /* Pagination styles
29
38
  -------------------------------------------------------------------- */
30
39
  :root {
@@ -34,7 +43,7 @@
34
43
  --swiper-pagination-bottom: 8px;
35
44
  --swiper-pagination-top: auto;
36
45
  --swiper-pagination-fraction-color: inherit;
37
- --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);
46
+ --swiper-pagination-progressbar-bg-color: rgba(0, 0, 0, 0.25);
38
47
  --swiper-pagination-progressbar-size: 4px;
39
48
  --swiper-pagination-bullet-size: 8px;
40
49
  --swiper-pagination-bullet-width: 8px;
@@ -61,15 +70,6 @@
61
70
  --swiper-scrollbar-size: 4px;
62
71
  }
63
72
 
64
- /* Navigation styles
65
- -------------------------------------------------------------------- */
66
- :root {
67
- --swiper-navigation-color: var(--bs-gray-100);
68
- --swiper-navigation-size: 44px;
69
- --swiper-navigation-top-offset: 50%;
70
- --swiper-navigation-sides-offset: 10px;
71
- }
72
-
73
73
  /* Titles and Captions
74
74
  -------------------------------------------------------------------- */
75
75
  .swiper-title {
@@ -82,6 +82,7 @@
82
82
  font-weight: 500;
83
83
  margin-bottom: .5rem;
84
84
  }
85
+
85
86
  .swp-caption-content {
86
87
  display: none;
87
88
  position: absolute;
@@ -149,8 +150,24 @@ ul.swiper-wrapper {
149
150
  left: auto;
150
151
  }
151
152
 
152
- /* Navigation
153
+ /* Pagination, absolute (relative to the swiper container/parent)
153
154
  -------------------------------------------------------------------------------- */
155
+ .swiper-pagination,
156
+ .swiper-pagination-inner {
157
+ position: absolute;
158
+ text-align: center;
159
+ transition: 300ms opacity;
160
+ transform: translate3d(0, 0, 0);
161
+ z-index: 10;
162
+ }
163
+
164
+ .swiper-pagination-outer {
165
+ padding-top: 12px;
166
+ bottom: unset !important;
167
+ text-align: center;
168
+ transition: 300ms opacity;
169
+ transform: translate3d(0, 0, 0);
170
+ }
154
171
 
155
172
  .swiper-pagination-bullet {
156
173
  width: 25px !important;
@@ -161,7 +178,7 @@ ul.swiper-wrapper {
161
178
  font-weight: 400;
162
179
  color: var(--bs-black) !important;
163
180
  opacity: .6 !important;
164
- background: rgba(0, 0, 0, 0.3) !important
181
+ background: rgba(0, 0, 0, 0.5) !important
165
182
  }
166
183
 
167
184
  .swiper-pagination-bullet-active {
@@ -14,4 +14,4 @@
14
14
  # -----------------------------------------------------------------------------
15
15
  */
16
16
 
17
- :root{--swiper-theme-color:var(--bs-primary);--swiper-preloader-color:var(--swiper-theme-color);--swiper-wrapper-transition-timing-function:initial}:root{--swiper-pagination-color:var(--swiper-theme-color);--swiper-pagination-left:auto;--swiper-pagination-right:8px;--swiper-pagination-bottom:8px;--swiper-pagination-top:auto;--swiper-pagination-fraction-color:inherit;--swiper-pagination-progressbar-bg-color:rgba(0,0,0,0.25);--swiper-pagination-progressbar-size:4px;--swiper-pagination-bullet-size:8px;--swiper-pagination-bullet-width:8px;--swiper-pagination-bullet-height:8px;--swiper-pagination-bullet-border-radius:50%;--swiper-pagination-bullet-inactive-color:#000;--swiper-pagination-bullet-inactive-opacity:.5;--swiper-pagination-bullet-opacity:1;--swiper-pagination-bullet-horizontal-gap:4px;--swiper-pagination-bullet-vertical-gap:6px}:root{--swiper-scrollbar-border-radius:10px;--swiper-scrollbar-top:auto;--swiper-scrollbar-bottom:4px;--swiper-scrollbar-left:auto;--swiper-scrollbar-right:4px;--swiper-scrollbar-sides-offset:1%;--swiper-scrollbar-bg-color:rgba(0,0,0,0.1);--swiper-scrollbar-drag-bg-color:rgba(0,0,0,0.5);--swiper-scrollbar-size:4px}.swiper-title{display:flex;align-items:center;text-rendering:optimizeLegibility;text-align:left;line-height:1.25;font-size:1.125rem;font-weight:500;margin-bottom:.5rem}.swp-caption-content{display:none;position:absolute;bottom:0;left:0;width:100%;padding:10px;background:rgba(0,0,0,0.5);color:#fff;font-size:14px;font-weight:400;text-align:left}.swiper-slide:hover .swp-caption-content{display:block}ul.swiper-wrapper{list-style-type:none;margin:0;padding:0;position:relative}.pswp__img{cursor:pointer !important}.swiper-slide{text-align:center;font-size:18px;background:#fff;display:flex;justify-content:center;align-items:center;background-size:cover;background-position:center}.swiper-slide img{display:block;width:100%;height:100%;object-fit:cover}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,20px) !important;right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,20px) !important;left:auto}:root{--swiper-navigation-size:44px;--swiper-navigation-top-offset:50%;--swiper-navigation-sides-offset:10px;--swiper-navigation-color:var(--swiper-theme-color)}.swiper-pagination-bullet{width:25px !important;height:25px !important;text-align:center;line-height:25px;font-size:14px;font-weight:400;color:var(--bs-black) !important;opacity:.6 !important;background:rgba(0,0,0,0.3) !important}.swiper-pagination-bullet-active{color:var(--bs-white) !important;background:var(--swiper-theme-color) !important;opacity:1 !important}.autoplay-progress{position:absolute;right:16px;bottom:16px;z-index:10;width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-weight:bold;color:var(--swiper-theme-color)}.autoplay-progress svg{--progress:0;position:absolute;left:0;top:0;z-index:10;width:100%;height:100%;stroke-width:4px;stroke:var(--swiper-theme-color);fill:none;stroke-dashoffset:calc(125.6px *(1 - var(--progress)));stroke-dasharray:125.6;transform:rotate(-90deg)}.swiper-text-base{padding:5px 0 5px 15px !important;border-left:5px solid var(--bs-primary)}.swiper-text-base .swiper-wrapper .swiper-slide p{margin-bottom:0 !important;font-size:1.5rem;font-weight:400;text-align:left;color:var(--md-gray-700);background:var(--md-gray-50);overflow-x:hidden}.swiper-text-parallax .swiper-wrapper .swiper-slide p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.5rem;font-weight:500;text-align:left;color:rgba(255,255,255,.75);overflow-x:hidden}.swiper--multi{height:400px}
17
+ ::root{--swiper-theme-color:var(--bs-primary);--swiper-preloader-color:var(--swiper-theme-color);--swiper-wrapper-transition-timing-function:initial}:root{--swiper-navigation-color:var(--bs-gray-100);--swiper-navigation-size:44px;--swiper-navigation-top-offset:50%;--swiper-navigation-sides-offset:20px}:root{--swiper-pagination-color:var(--swiper-theme-color);--swiper-pagination-left:auto;--swiper-pagination-right:8px;--swiper-pagination-bottom:8px;--swiper-pagination-top:auto;--swiper-pagination-fraction-color:inherit;--swiper-pagination-progressbar-bg-color:rgba(0,0,0,0.25);--swiper-pagination-progressbar-size:4px;--swiper-pagination-bullet-size:8px;--swiper-pagination-bullet-width:8px;--swiper-pagination-bullet-height:8px;--swiper-pagination-bullet-border-radius:50%;--swiper-pagination-bullet-inactive-color:#000;--swiper-pagination-bullet-inactive-opacity:.5;--swiper-pagination-bullet-opacity:1;--swiper-pagination-bullet-horizontal-gap:4px;--swiper-pagination-bullet-vertical-gap:6px}:root{--swiper-scrollbar-border-radius:10px;--swiper-scrollbar-top:auto;--swiper-scrollbar-bottom:4px;--swiper-scrollbar-left:auto;--swiper-scrollbar-right:4px;--swiper-scrollbar-sides-offset:1%;--swiper-scrollbar-bg-color:rgba(0,0,0,0.1);--swiper-scrollbar-drag-bg-color:rgba(0,0,0,0.5);--swiper-scrollbar-size:4px}.swiper-title{display:flex;align-items:center;text-rendering:optimizeLegibility;text-align:left;line-height:1.25;font-size:1.125rem;font-weight:500;margin-bottom:.5rem}.swp-caption-content{display:none;position:absolute;bottom:0;left:0;width:100%;padding:10px;background:rgba(0,0,0,0.5);color:#fff;font-size:14px;font-weight:400;text-align:left}.swiper-slide:hover .swp-caption-content{display:block}ul.swiper-wrapper{list-style-type:none;margin:0;padding:0;position:relative}.pswp__img{cursor:pointer !important}.swiper-slide{text-align:center;font-size:18px;background:#fff;display:flex;justify-content:center;align-items:center;background-size:cover;background-position:center}.swiper-slide img{display:block;width:100%;height:100%;object-fit:cover}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,20px) !important;right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,20px) !important;left:auto}.swiper-pagination,.swiper-pagination-inner{position:absolute;text-align:center;transition:300ms opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination-outer{padding-top:12px;bottom:unset !important;text-align:center;transition:300ms opacity;transform:translate3d(0,0,0)}.swiper-pagination-bullet{width:25px !important;height:25px !important;text-align:center;line-height:25px;font-size:14px;font-weight:400;color:var(--bs-black) !important;opacity:.6 !important;background:rgba(0,0,0,0.5) !important}.swiper-pagination-bullet-active{color:var(--bs-white) !important;background:var(--swiper-theme-color) !important;opacity:1 !important}.autoplay-progress{position:absolute;right:16px;bottom:16px;z-index:10;width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-weight:bold;color:var(--swiper-theme-color)}.autoplay-progress svg{--progress:0;position:absolute;left:0;top:0;z-index:10;width:100%;height:100%;stroke-width:4px;stroke:var(--swiper-theme-color);fill:none;stroke-dashoffset:calc(125.6px *(1 - var(--progress)));stroke-dasharray:125.6;transform:rotate(-90deg)}.swiper-text-base{padding:5px 0 5px 15px !important;border-left:5px solid var(--bs-primary)}.swiper-text-base .swiper-wrapper .swiper-slide p{margin-bottom:0 !important;font-size:1.5rem;font-weight:400;text-align:left;color:var(--md-gray-700);background:var(--md-gray-50);overflow-x:hidden}.swiper-text-parallax .swiper-wrapper .swiper-slide p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.5rem;font-weight:500;text-align:left;color:rgba(255,255,255,.75);overflow-x:hidden}.swiper--multi{height:400px}
@@ -0,0 +1,25 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/swiper/js/modules/layoutBase.js
4
+ # J1 Module for SwiperJS v11 (layout)
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # http://jekyll.one
9
+ #
10
+ # Copyright (C) 2025 Juergen Adams
11
+ #
12
+ # J1 Theme is licensed under MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
+ # -----------------------------------------------------------------------------
15
+ */
16
+ "use strict";
17
+ function LayoutBase(_ref) {
18
+ var {
19
+ swiper,
20
+ extendParams,
21
+ params,
22
+ on
23
+ } = _ref;
24
+
25
+ } // END LayoutBase
@@ -0,0 +1,25 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/swiper/js/modules/layoutBase.min.js
4
+ # J1 Module for SwiperJS v11 (layout)
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # http://jekyll.one
9
+ #
10
+ # Copyright (C) 2025 Juergen Adams
11
+ #
12
+ # J1 Theme is licensed under MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
+ # -----------------------------------------------------------------------------
15
+ */
16
+ "use strict";
17
+ function LayoutBase(_ref) {
18
+ var {
19
+ swiper,
20
+ extendParams,
21
+ params,
22
+ on
23
+ } = _ref;
24
+
25
+ } // END LayoutBase
@@ -14,9 +14,7 @@
14
14
  # -----------------------------------------------------------------------------
15
15
  */
16
16
  "use strict";
17
-
18
17
  function LayoutExpanding(_ref) {
19
-
20
18
  var {
21
19
  swiper,
22
20
  extendParams,
@@ -24,6 +22,4 @@ function LayoutExpanding(_ref) {
24
22
  on
25
23
  } = _ref;
26
24
 
27
-
28
-
29
- } // END ayoutExpanding
25
+ } // END LayoutExpanding
@@ -14,9 +14,7 @@
14
14
  # -----------------------------------------------------------------------------
15
15
  */
16
16
  "use strict";
17
-
18
17
  function LayoutExpanding(_ref) {
19
-
20
18
  var {
21
19
  swiper,
22
20
  extendParams,
@@ -24,6 +22,4 @@ function LayoutExpanding(_ref) {
24
22
  on
25
23
  } = _ref;
26
24
 
27
-
28
-
29
- } // END ayoutExpanding
25
+ } // END LayoutExpanding
@@ -14,30 +14,28 @@
14
14
  # -----------------------------------------------------------------------------
15
15
  */
16
16
  "use strict";
17
-
18
17
  function LayoutNeighbor(_ref) {
19
- var mainSwiper, tripleSwiper;
20
18
  var {
21
- swiper,
22
- extendParams,
23
- params,
24
- on
19
+ swiper,
20
+ params,
21
+ moduleFound = false
25
22
  } = _ref;
26
23
 
27
- // module options
28
- const commonParameters = params.neighbor;
29
- const swiperID = `#${params.neighbor.swiper_id}`;
30
-
31
- mainSwiper = document.querySelector(swiperID);
24
+ // collect module settings
25
+ // ---------------------------------------------------------------------------
26
+ const commonParameters = params.neighbor;
32
27
 
28
+ moduleFound = j1.adapter.swiper.findModuleByName(swiper.modules, LayoutNeighbor.name);
29
+ if (!moduleFound) { return; }
33
30
 
34
31
  // ---------------------------------------------------------------------------
35
32
  // effect initializer
36
33
  // ---------------------------------------------------------------------------
37
-
34
+
38
35
  // main swiper
39
36
  //
40
- const swiperEl = mainSwiper.querySelector('.swiper');
37
+ const mainSwiper = document.querySelector(`#${params.neighbor.swiper_id}`);
38
+ const swiperEl = mainSwiper.querySelector('.swiper');
41
39
 
42
40
  // create neighbor swiper PREV
43
41
  //
@@ -91,7 +89,7 @@ function LayoutNeighbor(_ref) {
91
89
 
92
90
  // init neighbor swiper MAIN
93
91
  //
94
- tripleSwiper = new Swiper(swiperEl, {
92
+ const tripleSwiper = new Swiper(swiperEl, {
95
93
  ...commonParameters,
96
94
  grabCursor: true,
97
95
  controller: {
@@ -13,21 +13,5 @@
13
13
  # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
14
  # -----------------------------------------------------------------------------
15
15
  */
16
- "use strict";
17
16
 
18
- function LayouttNeighbor(_ref) {
19
-
20
- var {
21
- swiper,
22
- extendParams,
23
- on
24
- } = _ref;
25
-
26
- extendParams({
27
- panoramaEffect: {
28
- depth: 200,
29
- rotate: 30,
30
- },
31
- });
32
-
33
- } // END LayoutNeighbor
17
+ "use strict";function LayoutNeighbor(e){var r,o,{swiper:s,extendParams:i,params:l,on:n}=e;const t=l.neighbor,c=`#${l.neighbor.swiper_id}`,d=(r=document.querySelector(c)).querySelector(".swiper"),a=d.cloneNode(!0);a.classList.add("neighbor-slider-prev"),r.insertBefore(a,d);const p=a.querySelectorAll(".swiper-slide"),w=p[p.length-1];a.querySelector(".swiper-wrapper").insertBefore(w,p[0]);const u=d.cloneNode(!0);u.classList.add("neighbor-slider-next"),r.appendChild(u);const h=u.querySelectorAll(".swiper-slide")[0];u.querySelector(".swiper-wrapper").appendChild(h),d.classList.add("neighbor-slider-main");const y=new Swiper(a,{...t,allowTouchMove:!1,on:{click(){o.slidePrev()}}}),S=new Swiper(u,{...t,allowTouchMove:!1,on:{click(){o.slideNext()}}});o=new Swiper(d,{...t,grabCursor:!0,controller:{control:[y,S]},on:{destroy(){y.destroy(),S.destroy()}}})}
@@ -14,7 +14,6 @@
14
14
  # -----------------------------------------------------------------------------
15
15
  */
16
16
  "use strict";
17
-
18
17
  function LayoutPanorama(_ref) {
19
18
  var {
20
19
  swiper,
@@ -0,0 +1,25 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/swiper/js/modules/layoutParallax.js
4
+ # J1 Module for SwiperJS v11 (layout)
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # http://jekyll.one
9
+ #
10
+ # Copyright (C) 2025 Juergen Adams
11
+ #
12
+ # J1 Theme is licensed under MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
+ # -----------------------------------------------------------------------------
15
+ */
16
+ "use strict";
17
+ function LayoutParallax(_ref) {
18
+ var {
19
+ swiper,
20
+ extendParams,
21
+ params,
22
+ on
23
+ } = _ref;
24
+
25
+ } // END LayoutParallax
@@ -0,0 +1,25 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/swiper/js/modules/layoutParallax.min.js
4
+ # J1 Module for SwiperJS v11 (layout)
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # http://jekyll.one
9
+ #
10
+ # Copyright (C) 2025 Juergen Adams
11
+ #
12
+ # J1 Theme is licensed under MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
+ # -----------------------------------------------------------------------------
15
+ */
16
+ "use strict";
17
+ function LayoutParallax(_ref) {
18
+ var {
19
+ swiper,
20
+ extendParams,
21
+ params,
22
+ on
23
+ } = _ref;
24
+
25
+ } // END LayoutParallax
@@ -0,0 +1,114 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/swiper/js/modules/layoutStacked.js
4
+ # J1 Module for SwiperJS v11 (layout)
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # http://jekyll.one
9
+ #
10
+ # Copyright (C) 2025 Juergen Adams
11
+ #
12
+ # J1 Theme is licensed under MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
+ # -----------------------------------------------------------------------------
15
+ */
16
+ "use strict";
17
+
18
+ function LayoutStacked(_ref) {
19
+
20
+ var {
21
+ swiper,
22
+ params,
23
+ moduleFound = false
24
+ } = _ref;
25
+
26
+ // collect module settings
27
+ // ---------------------------------------------------------------------------
28
+ const commonParameters = params.stacked;
29
+
30
+ moduleFound = j1.adapter.swiper.findModuleByName(swiper.modules, LayoutStacked.name);
31
+ if (!moduleFound) { return; }
32
+
33
+ // ---------------------------------------------------------------------------
34
+ // effect initializer
35
+ // ---------------------------------------------------------------------------
36
+
37
+ // main swiper
38
+ //
39
+ const mainSwiper = document.querySelector(`#${params.stacked.swiper_id}`);
40
+ const swiperEl = mainSwiper.querySelector('.swiper');
41
+
42
+ const calcNextOffset = () => {
43
+ const parentWidth = swiperEl.parentElement.offsetWidth;
44
+ const swiperWidth = swiperEl.offsetWidth;
45
+ var nextOffset = (parentWidth - (parentWidth - swiperWidth) / 2) / swiperWidth;
46
+ var nextOffsetVh = Math.max(nextOffset, 1) * 100;
47
+
48
+ return `${nextOffsetVh}%`;
49
+ };
50
+
51
+ const stackedSwiper = new Swiper(swiperEl, {
52
+ effect: 'creative',
53
+ speed: 600,
54
+ resistanceRatio: 0,
55
+ grabCursor: true,
56
+ parallax: true,
57
+ pagination: {
58
+ //el: '.swiper-pagination-outer',
59
+ el: '.swiper-pagination-inner',
60
+ type: 'bullets',
61
+ clickable: true
62
+ },
63
+ creativeEffect: {
64
+ limitProgress: 3,
65
+ perspective: true,
66
+ shadowPerProgress: true,
67
+ prev: {
68
+ shadow: true,
69
+ translate: ['-15%', 0, -200],
70
+ },
71
+ next: {
72
+ translate: [calcNextOffset(), 0, 0],
73
+ },
74
+ },
75
+ on: {
76
+ init: (swiper) => { var slideHeight = 600; swiper.slides.forEach(slide => { slide.style.height = `${slideHeight}px`; }); }
77
+ }
78
+ });
79
+
80
+ const onResize = () => {
81
+ if (!stackedSwiper || stackedSwiper.destroyed) return;
82
+ // prettier-ignore
83
+ stackedSwiper.params.creativeEffect.next.translate = [calcNextOffset(), 0, 0];
84
+ if (
85
+ stackedSwiper.params.resizeObserver &&
86
+ typeof window.ResizeObserver !== 'undefined'
87
+ ) {
88
+ stackedSwiper.update();
89
+ }
90
+ };
91
+ window.addEventListener('resize', onResize);
92
+
93
+
94
+ // workaround for swiper pagination placed 'outer'
95
+ // -------------------------------------------------------------------------
96
+ var init_swiper_delay = 500;
97
+
98
+ // {% assign pagination_el = swiper.module_settings.pagination.el | split: '-' %}
99
+ // {% assign pagination_position = pagination_el[2] %}
100
+
101
+ setTimeout(() => {
102
+ // const sourceEl = document.getElementById('{{swiper.id}}_pagination');
103
+ // const targetEl = document.getElementById('{{swiper.id}}');
104
+ const sourceEl = document.getElementById('stacked_slider_pagination');
105
+ const targetEl = document.getElementById('stacked_slider_swiper_container');
106
+ // targetEl.appendChild(sourceEl);
107
+
108
+ // logger.debug('\n' + 'pagination elements (outer) moved');
109
+ }, init_swiper_delay);
110
+ // -------------------------------------------------------------------------
111
+
112
+ // return stackedSwiper;
113
+
114
+ } // END LayoutStacked
@@ -0,0 +1,93 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/swiper/js/modules/layoutStacked.js
4
+ # J1 Module for SwiperJS v11 (layout)
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # http://jekyll.one
9
+ #
10
+ # Copyright (C) 2025 Juergen Adams
11
+ #
12
+ # J1 Theme is licensed under MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
+ # -----------------------------------------------------------------------------
15
+ */
16
+ "use strict";
17
+ function LayoutStacked(_ref) {
18
+ var {
19
+ swiper,
20
+ params,
21
+ moduleFound = false
22
+ } = _ref;
23
+
24
+ // collect module settings
25
+ // ---------------------------------------------------------------------------
26
+ const commonParameters = params.stacked;
27
+
28
+ moduleFound = j1.adapter.swiper.findModuleByName(swiper.modules, LayoutStacked.name);
29
+ if (!moduleFound) { return; }
30
+
31
+ // ---------------------------------------------------------------------------
32
+ // effect initializer
33
+ // ---------------------------------------------------------------------------
34
+
35
+ // main swiper
36
+ //
37
+ // const mainSwiper = document.querySelector(`#${params.stacked.swiper_id}`);
38
+ const mainSwiper = document.querySelector('#swiper_image_stacked');
39
+ const swiperEl = mainSwiper.querySelector('.swiper');
40
+
41
+ const calcNextOffset = () => {
42
+ const parentWidth = swiperEl.parentElement.offsetWidth;
43
+ const swiperWidth = swiperEl.offsetWidth;
44
+ var nextOffset = (parentWidth - (parentWidth - swiperWidth) / 2) / swiperWidth;
45
+ var nextOffsetVh = Math.max(nextOffset, 1) * 100;
46
+
47
+ return `${nextOffsetVh}%`;
48
+ };
49
+
50
+ const stackedSwiper = new Swiper(swiperEl, {
51
+ effect: 'creative',
52
+ speed: 600,
53
+ resistanceRatio: 0,
54
+ grabCursor: true,
55
+ parallax: true,
56
+ pagination: {
57
+ el: '.swiper-pagination-inner',
58
+ type: 'bullets',
59
+ clickable: true
60
+ },
61
+ creativeEffect: {
62
+ limitProgress: 3,
63
+ perspective: true,
64
+ shadowPerProgress: true,
65
+ prev: {
66
+ shadow: true,
67
+ translate: ['-15%', 0, -200],
68
+ },
69
+ next: {
70
+ translate: [calcNextOffset(), 0, 0],
71
+ },
72
+ },
73
+ on: {
74
+ init: (swiper) => { var slideHeight = 600; swiper.slides.forEach(slide => { slide.style.height = `${slideHeight}px`; }); }
75
+ }
76
+ });
77
+
78
+ const onResize = () => {
79
+ if (!stackedSwiper || stackedSwiper.destroyed) return;
80
+ // prettier-ignore
81
+ stackedSwiper.params.creativeEffect.next.translate = [calcNextOffset(), 0, 0];
82
+ if (
83
+ stackedSwiper.params.resizeObserver &&
84
+ typeof window.ResizeObserver !== 'undefined'
85
+ ) {
86
+ stackedSwiper.update();
87
+ }
88
+ };
89
+ window.addEventListener('resize', onResize);
90
+
91
+ return stackedSwiper;
92
+
93
+ } // END LayoutStacked
@@ -14,17 +14,29 @@
14
14
  # -----------------------------------------------------------------------------
15
15
  */
16
16
  "use strict";
17
-
18
17
  function LayoutStacked(_ref) {
19
-
20
18
  var {
21
19
  swiper,
22
- extendParams,
23
20
  params,
24
- on
21
+ moduleFound = false
25
22
  } = _ref;
26
23
 
27
- const swiperEl = el.querySelector('.swiper');
24
+ // collect module settings
25
+ // ---------------------------------------------------------------------------
26
+ const commonParameters = params.stacked;
27
+
28
+ moduleFound = j1.adapter.swiper.findModuleByName(swiper.modules, LayoutStacked.name);
29
+ if (!moduleFound) { return; }
30
+
31
+ // ---------------------------------------------------------------------------
32
+ // effect initializer
33
+ // ---------------------------------------------------------------------------
34
+
35
+ // main swiper
36
+ //
37
+ // const mainSwiper = document.querySelector(`#${params.stacked.swiper_id}`);
38
+ const mainSwiper = document.querySelector('#swiper_image_stacked');
39
+ const swiperEl = mainSwiper.querySelector('.swiper');
28
40
 
29
41
  const calcNextOffset = () => {
30
42
  const parentWidth = swiperEl.parentElement.offsetWidth;
@@ -35,12 +47,26 @@ function LayoutStacked(_ref) {
35
47
  return `${nextOffsetVh}%`;
36
48
  };
37
49
 
38
- const postersSwiper = new Swiper(swiperEl, {
50
+ const onLastSlide = (swiper) => {
51
+ console.log ('\n' + 'LayoutStacked, Entered event: reachEnd');
52
+ // swiper.allowTouchMove = false;
53
+ // swiper.allowSlidePrev = false;
54
+ // swiper.allowSlideNext = false;
55
+ };
56
+
57
+ const stackedSwiper = new Swiper(swiperEl, {
58
+ loop: true,
39
59
  effect: 'creative',
40
60
  speed: 600,
41
61
  resistanceRatio: 0,
42
62
  grabCursor: true,
43
63
  parallax: true,
64
+ pagination: {
65
+ //el: '.swiper-pagination-outer',
66
+ el: '.swiper-pagination-inner',
67
+ type: 'bullets',
68
+ clickable: true
69
+ },
44
70
  creativeEffect: {
45
71
  limitProgress: 3,
46
72
  perspective: true,
@@ -54,22 +80,25 @@ function LayoutStacked(_ref) {
54
80
  },
55
81
  },
56
82
  on: {
57
- init: (swiper) => { var slideHeight = 600; swiper.slides.forEach(slide => { slide.style.height = `${slideHeight}px`; }); }
83
+ init: function (swiper) { var slideHeight = 600; swiper.slides.forEach(slide => { slide.style.height = `${slideHeight}px`; }); },
84
+ reachEnd: function (swiper) { onLastSlide(swiper) }
58
85
  }
59
86
  });
60
87
 
61
88
  const onResize = () => {
62
- if (!postersSwiper || postersSwiper.destroyed) return;
89
+ if (!stackedSwiper || stackedSwiper.destroyed) return;
63
90
  // prettier-ignore
64
- postersSwiper.params.creativeEffect.next.translate = [calcNextOffset(), 0, 0];
91
+ stackedSwiper.params.creativeEffect.next.translate = [calcNextOffset(), 0, 0];
65
92
  if (
66
- postersSwiper.params.resizeObserver &&
93
+ stackedSwiper.params.resizeObserver &&
67
94
  typeof window.ResizeObserver !== 'undefined'
68
95
  ) {
69
- postersSwiper.update();
96
+ stackedSwiper.update();
70
97
  }
71
98
  };
72
99
  window.addEventListener('resize', onResize);
73
-
74
100
 
75
- } // END LayoutStacked
101
+ } // END LayoutStacked
102
+
103
+ // Disable touch move (swiping)
104
+ // swiper.allowTouchMove = false;
@@ -0,0 +1,17 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/swiper/js/modules/layoutStacked.min.js
4
+ # J1 Module for SwiperJS v11 (layout)
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # http://jekyll.one
9
+ #
10
+ # Copyright (C) 2025 Juergen Adams
11
+ #
12
+ # J1 Theme is licensed under MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE
14
+ # -----------------------------------------------------------------------------
15
+ */
16
+
17
+ "use strict";function LayoutStacked(e){var{swiper:r,extendParams:t,params:s,on:a}=e;const i=el.querySelector(".swiper"),n=()=>{const e=i.parentElement.offsetWidth,r=i.offsetWidth;var t=(e-(e-r)/2)/r;return`${100*Math.max(t,1)}%`},o=new Swiper(i,{effect:"creative",speed:600,resistanceRatio:0,grabCursor:!0,parallax:!0,creativeEffect:{limitProgress:3,perspective:!0,shadowPerProgress:!0,prev:{shadow:!0,translate:["-15%",0,-200]},next:{translate:[n(),0,0]}},on:{init:e=>{e.slides.forEach((e=>{e.style.height="600px"}))}}});window.addEventListener("resize",(()=>{o&&!o.destroyed&&(o.params.creativeEffect.next.translate=[n(),0,0],o.params.resizeObserver&&void 0!==window.ResizeObserver&&o.update())}))}